UNIFI LEARNING

如何將Unifi Controller安裝到OpenWRT環境下

如何匯入SSL憑證到Unifi Controller

客製化UBNT USG設定

如何透過Unifi Controller從USG設定PPPoE Server

ISSUE: always show yellow status from network monitor

如何將Unifi Controller安裝到OpenWRT環境下
本篇單純作為一個筆記. 快速的將Unifi Controller塞到OpenWRT裡面..
這邊會使用LEDE的OpenWRT, 然後透過Hyper-V建置VM安裝LEDE...
[UBNT, UAC v5.7.20] UniFi Cook & Research

既然要塞Unifi Controller, 那只能透過掛載其他的OS環境來執行...
這種情況下, RAM的要求不能太低. 意思是如果是非VM的產品...
那RAM最好不要太小. 來看以下掛載其他OS環境執行Unifi Controller的Memory Usage情況..
[UBNT, UAC v5.7.20] UniFi Cook & Research
從上圖可以看出這個要求是系統記憶體最好在1GB以上. 在這樣的要求下, 大多AP產品都會被打槍...=_="
除了建置VM以外的方案, 就只有軟體路由器符合這個條件.

當安裝LEDE後, 當然得確定internet能不能上的去了.
[UBNT, UAC v5.7.20] UniFi Cook & Research

確認沒問題後, 這邊Hyper-V再掛載一個16GB的drive用來作為Unifi Controller使用.
[UBNT, UAC v5.7.20] UniFi Cook & Research

往下執行opkg update來更新套件列表:
[UBNT, UAC v5.7.20] UniFi Cook & Research
在執行df -h來看看分區表:
[UBNT, UAC v5.7.20] UniFi Cook & Research
不過完全是新的drive當然是甚麼資訊都看不到, 執行ls /dev/[sh]d* 來查看:
[UBNT, UAC v5.7.20] UniFi Cook & Research
可以看出有一個新得sdb儲存裝置, 為了確認. 使用fdisk檢查, 不過LEDE沒有安裝這個套件. 因此需要下載安裝:
[UBNT, UAC v5.7.20] UniFi Cook & Research

安裝完成後, 使用fdisk -l /dev/sdb 確認這個新的sdb儲存裝置:
[UBNT, UAC v5.7.20] UniFi Cook & Research
確認沒問題後, 格式化該裝置, 使用fdisk:
[UBNT, UAC v5.7.20] UniFi Cook & Research
最後使用w參數進行寫入操作:
[UBNT, UAC v5.7.20] UniFi Cook & Research
在使用fdisk -l /dev/sdb 確認是否建立一個partition:
[UBNT, UAC v5.7.20] UniFi Cook & Research
得知這個partition為 /dev/sdb1.
LEDE應該是預設有安裝e2fsprogs的工具. 使用該工具建立ext4檔案系統.
應用 mkfs.ext4 /dev/sdb1
[UBNT, UAC v5.7.20] UniFi Cook & Research

接下來安裝block-mount來掛載檔案系統:
[UBNT, UAC v5.7.20] UniFi Cook & Research
然後再用block-mount去mount新的ext4檔案系統.
[UBNT, UAC v5.7.20] UniFi Cook & Research
不過我在測試中發現有點問題. 按下Apply&Save後, LEDE整個就死掉了. 必須強制reboot.
reboot完成後, 使用 df -h來查看, 發現已mount成功:
[UBNT, UAC v5.7.20] UniFi Cook & Research

安裝debootstrap套件用來載入其他的OS環境:
[UBNT, UAC v5.7.20] UniFi Cook & Research
安裝完成後, 這邊將安裝debian的Linux環境, 使用如下命令:
debootstrap --arch=amd64 jessie /mnt/sdb1/debian http://mirrors.163.com/debian/
[UBNT, UAC v5.7.20] UniFi Cook & Research
這邊可能會遇到一個問題, 就是他下載的失敗率頗高的. 這個命令可能要多執行2~3次才會成功.
安裝debian完成後, 透過GUI的Startup, 寫入以下命令啟動時自動掛載(更新/etc/rc.local):
mount -o bind /proc /mnt/sdb1/debian/proc
mount -o bind /dev /mnt/sdb1/debian/dev
mount -o bind /dev/pts /mnt/sdb1/debian/dev/pts
[UBNT, UAC v5.7.20] UniFi Cook & Research
Submit過後, 將LEDE進行reboot. 之後chroot進入debian環境:
chroot /mnt/sdb1/debian /bin/bash
[UBNT, UAC v5.7.20] UniFi Cook & Research
為了下載Unifi Controller軟體, 首先要更新sources.list來源內容.
[UBNT, UAC v5.7.20] UniFi Cook & Research
用vi編輯加入以下的來源:
deb http://www.ubnt.com/downloads/unifi/debian unifi5 ubiquiti
儲存後, 使用apt-get update進行套件資源更新:
[UBNT, UAC v5.7.20] UniFi Cook & Research

增加GPG key, 使用如下命令:
apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50
[UBNT, UAC v5.7.20] UniFi Cook & Research
import完成後, 重點就是開始安裝Unifi Controller了. 使用如下命令:
apt install unifi
確認安裝完成後, 直接用browser測試是否能正常進入Unifi Controller的Web控制介面:
[UBNT, UAC v5.7.20] UniFi Cook & Research

確認沒問題後, 進行最後的收工. 因為reboot過後, 相關的服務不會被啟用. 因此需要在GUI的Startup更新/etc/rc.local的內容, 添加如下命令. 注意跟mount執行的順序:
chroot /mnt/sdb1/debian service mongodb start
chroot /mnt/sdb1/debian service unifi start
[UBNT, UAC v5.7.20] UniFi Cook & Research
上述命令加入後, 在下一次的reboot, Unifi等相關服務都會被自動啟用.
使得Unifi Controller能正常操作.
如何匯入SSL憑證到Unifi Controller
如果覺得每次進入Web介面, 看到那個Not Secure訊息都有一點奇檬子不爽的感覺:

使用者有強迫症又覺得 "老子就是要看到那個greenbar才會爽" 的症狀下:

那麼可以自行匯入SSL憑證, 有幾種方案:
1. 花錢買頗貴的EV SSL憑證.
2. 使用let's encrypt免費憑證.
3. 家裡自建CA, 作為內網使用. 不需要對外, 使用自建CA申請憑證.

本篇將使用方案3作為匯入SSL憑證到Unifi Controller的操作. 首先我有了一個自建的CA:

所有的內部User都綁定在這個CA的domain下. 為了申請憑證, 這裡使用的Windows系統的做法, 我必須要產生CSR請求檔. 在Windows下可以使用幾種情況:
1. 使用certmgr申請
2. 使用其他工具申請, 例如DigiCertUtil, OpenSSL
3. 使用IIS的憑證工具申請
需要注意的是IIS申請的憑證不會帶SAN(Subject Alternative Name)資訊. 在有些瀏覽器會強制檢查這個欄位, 例如google chrome.
沒有帶入這個欄位依然會提示Not Secure.
這裡使用的DigiCertUtil產出CSR請求檔:

他可以額外填入SAN欄位, 這裡填入了兩種資訊:
storaid.local
unifi.storaid.local

在產出CSR申請檔後, 便要透過CA完成這個CSR請求生成SSL憑證. 這邊直接使用IIS的憑證工具完成CSR請求:

完成後, IIS的憑證工具便會多出一個unifi.storaid.local的SSL憑證. 並且自建的CA也會看到請求完成後的SSL憑證資訊.

確認SSL憑證相關欄位資訊, 並且檢查有沒有帶入SAN欄位:

接下來再利用IIS的憑證工具輸出成pfx檔並且帶密碼. pfx檔會附加private key訊息.

再來把這個pfx上傳到Unifi Controller裡, 由於我是OpenWRT掛載debian環境. 因此這邊使用了OpenWRT的atftp上傳pfx憑證檔. 為了方便, 我將它上傳到unifi存放憑證的路徑下:

上船完成後, 便要進行對Unifi Controller的SSL憑證處理. 載入debian環境並且切換路徑到unifi存放憑證的位置下:

這裡看到我在該路徑下已經上傳了pfx憑證檔. 注意到一個名為keystore的檔案, 這是用來存放Unifi Controller的憑證相關資訊.

最初的開始, 鍵入以下的命令列出目前有的憑證資訊:
keytool -list -v -keystore keystore
這時它會要求輸入keystore的密碼. 在這邊必須輸入 aircontrolenterprise
完成後會看到列出Unifi Controller的built-in SSL憑證:

請注意它的別名(alias)是unifi. 再來要將pfx憑證檔匯入到keystore, 使用以下命令:
keytool -importkeystore -destkeystore keystore -srckeystore unifi.storaid.local.pfx -srcstoretype PKCS12 -srcstorepass unifi
-srcstorepass參數後面接的是pfx檔設定的密碼. 這邊設定為unifi.

再匯入憑證的過程中, 他會要求輸入keystore的密碼(aircontrolenterprise).
完成操作後, 在使用keytool -list -v -keystore keystore列出相關憑證資訊來查看是否存在pfx憑證檔資訊:

可以發現確實出現所期望的憑證資訊. 只是有一個問題就是別名(alias)的長相很難看, 對人來說是一串無意義的英文數字雜湊代碼.
因此需要進行別名(alias)的修改, 使用以下命令:
keytool -changealias -keystore keystore -alias [alias of privateKey goes here] -destalias [new_alias_name]

可以看到我將別名(alias)修改為unifi_storaid_local, 不過在這個過程中它會要求輸入兩次密碼.
第一次為keystore的密碼(aircontrolenterprise).
第二次為pfx憑證檔設定的密碼, 當初設定為unifi.

完成別名(alias)修改的操作後, 必須重新設定該匯入的pfx憑證的私鑰密碼. 使用如下命令:
keytool -keypasswd -alias [alias_name] -keystore keystore

在這個過程中, 它會要求輸入幾次密碼.
第一次為keystore密碼(aircontrolenterprise)
第二次為pfx原本設定的密碼(unifi)
第三次設定新密碼, 必須設定為 aircontrolenterprise
第四次輸入確認密碼, aircontrolenterprise
在這個步驟完成後, 在原本可以使用 shutdown -r now 來重啟始設定生效. 不過我這邊是OpenWRT去掛載, 省得麻煩直接對OpenWRT做reboot. reboot完成後, 直接使用瀏覽器測試匯入SSL憑證所申請的domain name. 在這個案例使用unifi.storaid.local.

有Greenbar, 有SAN欄位, 瀏覽器顯示Secure. 確認SSL憑證匯入已經成功了.
客製化UBNT USG設定
這是一個比較麻煩的問題. 如果你想要使用額外的設定, 例如GUI介面並沒有提供的設定項目, 可以透過SSH連到USG的CLI操作指令. 但是這會遭遇到一個問題, 當Unifi Controller操作provision的行為, 將會把您透過CLI變更的設定覆蓋掉, 不管您用了commit和save, 結果都會一樣.

為了避免這樣的問題, 建立一個客製化的設定檔, 檔名為config.gateway.json. 將USG的設定寫到這個JSON檔案, 再上傳到Unifi Controller, 當重新操作provision的行為後, config.gateway.json的設定內容會寫入到USG. 這邊會用一個範例, 在USG如何將upnp的設定寫入到USG. 再次提醒! config.gateway.json的檔案內容是JSON格式. 先連入USG的CLI看看upnp的指令行為:

這邊以UniFi Security Gatewaya產品做為學習:
https://www.ubnt.com/unifi-routing/usg/
來看看upnp設定是對應那些ports:

確認這些對應的ports之後, 將upnp設定做為JSON內容格式, 因此它應該是如下形式:

存成config.gateway.json檔案後, 要上傳到Unifi Controller, 這會與建立的site有關:

可以看到這邊建立了一個名為default的site. 首先要決定上傳到哪個路徑. 這需要參考所謂的<unifi_base>:
https://help.ubnt.com/hc/en-us/articles/115004872967-UniFi-Where-is-unifi-base-
本篇的操作是以OpenWRT建置Unifi Controller, 因此掛載的路徑如下:

在名為default的site下將config.gateway.json檔案上傳, 這邊是使用atftp上傳:

上傳完成後, 再將選定的USG透過GUI操作provision行為:

這時USG的狀態會是provisioning:

只有在Connected的狀態下, Unifi Controller完成USG的設定同步:

最後, 可以透過USG的CLI檢查設定是否與config.gateway.json內容一致, 使用show命令查看:


上述是整個USG客製化設定的操作方式. USG底層的kernel與EdgeOS一致, 只是它需要controller去維護, 這跟EdgeMAX產品有不同上的特質.
如何透過Unifi Controller從USG設定PPPoE Server
在本篇的案例中, 將學習如何使用USG的PPPoE Server. 在USG的設定中, Controller並沒有提供相關的GUI設定, 必須要從CLI下手, 但是有一個問題就是Controller操作provision行為會把從CLI修改USG的設定全部複寫掉(override). 因此, 必須要使用config.gateway.json的JSON組態檔來自訂USG設定. 來看看本次案例建構的topology:

USG作為PPPoE server, 而FortiGate則是PPPoE client. PPPoE的驗證是從遠端的RADIUS server操作, 這個RADIUS是利用Windows的NPS服務建置. 帳戶的設定則是另一台DC的Windows server建立.

首先從DC的Windows server建立名為fortinet的帳戶, DC的所屬domain為STORAID.LOCAL:

對於PPPoE來說, 撥接的帳戶則為fortinet或著[email protected]

設定NPS server, 允許USG使用RADIUS服務. USG設定的IP為10.1.1.15, 在NPS新增RADIUS client對USG允許RADIUS服務的存取:

針對USG Device建立Connection Request Policy, 名為Use Windows authentication to USG unit, 設定的條件(conditions)如下:

其他照預設值, 完成建立後. 接下來新增Network Policy, 允許連線帳戶驗證RADIUS. 其名為 Connections to USG using PPPoE, 主要的設定條件(conditions)如下:

允許的帳戶群組為Remote Users, 並且設定NAS IP綁死在USG設備上. 其他照預設值建立完成這個policy.

透過Unifi Controller針對USG建立一個VLAN介面針對PPPoE連線:

SAVE之後, 等在provision的操作完成. 接下來要從USG建立PPPoE Server, GUI並沒有提供這個項目, 因此要先從CLI下手. 可用putty使用SSH連線到USG, 然後進入到pppoe-server的設定:

透過set命令得知有這些參數可以使用:

主要會使用到的參數如下:
authentication
client-ip-pool
dns-servers
interface
設定authentication的mode為radius, 使用如下命令:
set authentication mode radius
設定authentication的radius-server,也就是要存取的遠端RADIUS server連線位址以及要輸入的Key.
在本篇的案例, RADIUS Server的IP為10.2.140.65, 允許存取的key為Cn2252F009. 指令如下:
set authentication radius-server 10.2.140.65 key Cn2252F009
設定PPPoE clients能夠取得的ip, 建立ip-pool. 使用如下命令
set client-ip-pool start 10.1.254.128
set client-ip-pool stop 10.1.254.247
在這邊設定的ip-pool範圍為10.1.254.128~10.1.254.247

設定PPPoE Server的DNS資訊, 這裡使用8.8.8.8和168.95.192.1這兩個public DNS. 指令如下:
set dns-servers server-1 8.8.8.8
set dns-servers server-2 168.95.192.1
選擇要使用PPPoE的網路介面, 從剛剛controller建立的VLAN介面. 得到的interface如下圖顯示:

使用命令: set interface eth1.254 去綁定PPPoE的介面. 完成這些參數的設定後, 進行commit和save的操作
commit
save
之後再用exit命令跳出. 由於Controller的provision操作會影響USG設定, 使用如下命令將config抽出顯示JSON內容格式:
mca-ctrl -t dump-cfg
透過putty操作將JSON內容copy出來貼到notepad之類的工具, 然後進行篩選. 如果使用的工具能進行一些format的操作更佳:

上圖是篩選出來的PPPoE設定, 要把這些PPPoE設定寫到存放在Uifi Controller的config.gateway.json組態檔. 使用vi工具操作:

之後再透過GUI操作provision行為, 重新載入組態檔到USG的boot的config裡.


完成整個PPPoE Server的設定後, 進行對PPPoE Client端的設定. 這邊使用FortiGate建立VLAN介面針對PPPoE連線:

等待一段時間後, 檢查該介面是否透過PPPoE連線成功:

從上圖發現已經撥接成功了. 可以從RADIUS(NPS) Server查看相關的Event Log:

從上圖發現確實是以[email protected]這個帳號進行RADIUS服務驗證成功了.
不得不說..
Unifi Switch的GUI功能也只有堪用的程度..
大致上就是VLAN, tagged function, jumb frame, storm control..
然後就沒什麼GUI功能可以用了...

其他只能進入CLI慢慢敲指令..
敲得有點不爽...=_="

然後Unifi USG整體來說, 勉強及格...

但是multicast處理這塊只有"堪用" 兩個字形容...
講難聽一點就是很low...:(..
GUI沒功能, CLI也沒甚麼multicast相關的功能可用..
頂多就只有igmp-proxy...
good day to new release v5.6.20..
many new GUI features...
UniFi 5.6.22 Stable has been released
New Features:
Add support for new Elite Device service.

Controller bugfixes/changes from 5.6.20:
Enable Custom Antenna Gain if user is Professional Installer.
Show 'Version' column in AP/Switch filtered view by default.
Add links to UniFi mobile apps on login page.
Fix applying custom antenna gain for US region.
Upgrade button no longer disappears upon naming.
Fix map device RF button not working correctly.
Fix client name not showing correctly in DPI Application Usage widget.
Fix the guest portal and preview.
Security improvements.
Update WebRTC JNI to v1.0.27.
Various backend improvements and bugfixes.

vxr wrote:
UniFi 5.6...(恕刪)


感謝 已更新^^
ISSUE: always show yellow status from network monitor
如果在5.6.x發現Network Monitor總是顯示黃色(yellow)狀態...

那麼就是USG的設定有異常的情況, 並且RUN SPEED TEST按鈕無法使用..
直接連到USG查看會發現網路連線異常, 設定不匹配. 但是clients端依然可以正常上網...

在這種狀況下, 確認Echo Server是否被選取..
這是一個新項目用來測試網路延遲率(latency)...

使用預設值的ping.ubnt.com或著自定義可接收ICMP的目的端...
Apply change之後, Network Monitor將會轉變成綠色狀態..
回到正常狀況, 並且允許點擊RUN SPEED TEST按鈕..

關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!