Aruba Controller SSID 走特定外線上網

有時候會有臨時的網路需求,會配給Controller一條外線,起一個SSID,讓貴賓連上SSID就能透過外線上網,並且新外線與內網彼此獨立出來。

以下為 ArubaOS 8.8 版的操作

為了要達到這點,就需要達到以下幾點。

  1. Controller Public IP
  2. 外線Gateway IP
  3. Controller 外線VLAN
  4. Controller Guest VLAN
  5. Controller Guest VLAN DHCP Server
  6. Controller Guest VLAN NAT Enable(NAT Inside)
  7. Controller Guest Next-hop list
  8. Controller Policy-Based Routing
  9. Controller Guest VLAN ACL 套 Policy-based Route
  10. 新增SSID套上Guest VLAN

步驟1、步驟2都是詢問客戶得知。

步驟3:取得外線VLAN,在 [MD] > Configuration > Interfaces > Ports 把接外線的Port其Access VLAN改成外線VLAN。

步驟4: 詢問客戶得知,或是自行規劃 VLAN 要設定的ID。

步驟5:DHCP Server的設定也是詢問客戶得知,或是自行規劃。DNS Server要留意得從外部查詢DNS,像是 168.95.1.1 或是 8.8.8.8,因為新線不通內網,所以要小心不要用到內部的DNS Server。

最簡便的做法

步驟6:Configuration > Interfaces > VLANs > VLAN IDs > [Guest VLAN] > IPv4 > Other Options > NAT inside,勾選。

步驟7:Configuration > Services > WAN > NextHop Configuration ※因版本不同可能位置有異,若找不到請上對應的WebHelp,去找該版本所在的位置。

Priority要從1開始

步驟8: Configuration > Services > WAN > NextHop Configuration

步驟9:Configuration > Interfaces > VLANs > VLAN IDs > [Guest VLAN] > IPv4 > Other Options > ACL,選取剛剛新增的 Policy-based Routing。

步驟10:這時可以新增SSID,VLAN選取Guest VLAN,至於其他的詳細設定像是認證有無及方式等,請詢問客戶規劃。

記得Pending Changes要送出

追蹤設備是否在家(以nmap追蹤IP)

追蹤設備是否在家,如果人總是攜帶此設備,像是手機,就可以想像成人是否在家。

一旦狀態改變,從偵測不到變成偵測到,就是一個回家的情境。

有一些偵測法,如藍牙掃描、人體感應器、IP掃描或是門窗感應器等等,都是可以當成回家的指標,而藍牙與IP掃描是可以區分是誰的設備,能做到對應不同人回家的指令。

在 Homeassistant ,有一個專門用來追蹤設備內建整合:Device Tracker。而這次要用的nmap也在其中,而這個內建整合也可使用藍牙掃描。

回到正題,IP掃描是一個區域網路內的掃描,而於WiFI訊號比藍牙更強更穩定,所以一旦在家,就不容易失聯而造成誤判情形。

設備的IP需要是固定的

要固定設備IP有兩種方式,一種是DHCP Server去用MAC綁定IP,第二種是設備設定靜態IP。如果使用DHCP Server,建議把MAC隨機化關掉,以免5GHz跟2.4GHz有不同的Name,到時產生兩組隨機MAC,然後就被當成兩種裝置。

以下要簡單的指令,使用nmap去做到追蹤個人設備是否在家。

/config/configuration.yaml

device_tracker: !include device_tracker.yaml #新增此行

/config/device_tracker.yaml #第一次需要手動新增該檔案

- platform: nmap_tracker
  hosts: [DeviceIPaddress]    
  interval_seconds: 15 # seconds
  consider_home: 210 # seconds
  home_interval: 1 # minutes

/config/known_devices.yaml #第一次需要手動新增該檔案

[DeviceName]:
  name: [DeviceName]
  mac: [DeviceMACaddress]
  track: true

nmap是一個網路檢測工具,預設指令是會去檢測該IP位置最常用的100個Port是否開放,如果有一個Port開放,就會判定在家。可以想像成一旦設備離家,這是nmap去測試設備IP那100個Port就會全數不通。

以上設定完後,重新啟動HA伺服器,就能看到一個實體名稱為 device_tracker.[DeviceName] 的設備,狀態只有兩種:「home」跟「not_home」。如果是回家,狀態就會從 not_home 變成 home 。

以下是「回家」自動化的觸發條件寫法:

platform: state
entity_id: device_tracker.[DeviceName]
to: home
from: not_home

不過這樣的寫法會有一點狀況,因為無線訊號可以傳出家門,所以,你在家門外時,還沒打開門,就已經連入家中Wi-Fi,然後nmap就已經偵測到了。

對於進門才能觸發的事件,像是用語音表達進門歡迎,就會特別吃重時機。總得要打開門,人進來才能播放語音吧。

這情境可以使用 timer ,打門時啟動一個,人回家時啟動一個,一旦兩個同時開啟,舊式人回家又打門的情境。

讓HA連接台灣米家雲端

需要HACS!

這是最簡單的方式讓HA可以快速取得家中所有的小米智慧家庭設備的資訊。

在HACS安裝「Xiaomi Miot Auto」,安裝完成後要求重啟HA,重啟它。

安裝完後使用 Add-ons 的 File editor 進入到下方檔案中。

/config/custom_components/xiaomi_miot/config_flow.py

會找到一段

CLOUD_SERVERS = {
    'cn': 'China',
    'de': 'Europe',
    'i2': 'India',
    'ru': 'Russia',
    'sg': 'Singapore',
    'us': 'United States',
}

新增一行「’tw’: ‘Taiwan’,」,變成如下。

CLOUD_SERVERS = {
    'cn': 'China',
    'de': 'Europe',
    'i2': 'India',
    'ru': 'Russia',
    'sg': 'Singapore',
    'tw': 'Taiwan',
    'us': 'United States',
}

記得 Ctrl+S 儲存!

重啟HA伺服器!

回到 設定 > 整合 > 新增整合 > Xiaomi Miot Auto,點擊 Xiaomi Miot Auto 。

選擇cloud,然後可以看到 Server location 下拉選單有 Taiwan,選取它。

資料填好後按設 傳送 ,等一會,就能看到台灣米家的設備被加HA進來。

Homeassistant(樹莓派)指南

本指南皆在環境 Raspberry Pi 4b + Home Assistant Operating System(HAOS) 下進行。

以下是我覺得需要優先完成的

  1. 定時備份到Google雲端硬碟:三不五時壞,唯有經常備份,才不用重來!很重要!
  2. 設定Home Assistant Community Store(HACS)

以下為選配:

如何查詢設備在臺灣所支援的wifi頻道

考資料

由於部分apple產品對於5GHz的頻道並非全部支援,因此可能發生連不上的議題。

不同地區有不同的能使用的wifi頻道,射頻產品也需經過認證准許使用,通過使用准許並不代表能支援該地區全部的wifi頻道,因此同一張網卡,即便能支援36~48頻道,在台灣也准許36~48頻道,但該網卡在美國是可以使用36~48,而在台灣卻無法使用!

到底該設備在臺灣能支援甚麼頻道?請上NCC查詢。

以下以apple產品為例,這個頁面是apple通過NCC的相關資訊。

MacBook Pro (13 吋,M1 晶片,2020 年) 為例, NCC 型式認證號碼:CCAI20LP2710T6

接著來到NCC, 左側選單 > 資料查詢 > 型式認證資訊查詢。輸入相關資料後按查詢。

然後會搜尋到一筆紀錄,點選檢視。

往下滑,在備註或是審驗合格證明圖檔裡面會有通過的工作頻率。

從維基百科:WLAN信道列表,把頻率轉換成頻道。就能查出「MacBook Pro (13 吋,M1 晶片,2020 年) 在臺灣可以用的wifi頻道。

頻道(Channel)工作頻率是否能使用
1-112412~2472
36~485180~5240
52~645260~5320
100~1445500~5720
149~1655745~5825
Aruba Radio 5GHz Channels

經過對照之後,MacBook Pro (13 吋,M1 晶片,2020 年)全部頻道都支援,無須調整。

支援部分的頻道的產品

以MacBook (Retina, 12 英吋, 2015年初), 型式認證號碼: CCAI15LP0760T3

可以發現MacBook( 2015 )從工作頻率從5280開始,在此頻率前的頻道36~52就無法使用。

無法使用,有兩種情況:一種是無法看到,一種是可看到但無法順利連上。

Thunderbird 圖文簽名檔

20230315發表更新的做法

Thunderbird的簽名檔有三種方式:第一種是html、第二種是檔案附加、第三種是電子名片。

如果簽名檔要圖文,像是公司的信件簽名檔。

第一種html只有標籤語法,無法自帶圖片檔案,也不會自動附加。

第二種也只能附加一個,不是html就是圖片,如果兩個無法同時附上,就無法正常顯示圖文。又或者是把簽名檔製成圖片,但這樣就會失去複製文字貼上的便捷,像是email就要手動輸入。

第三種電子名片並沒有附加圖片的功能。

如果是使用Win10中內建的郵件,簽名檔就會有編輯器,可以把圖文一並附上。但Thunderbird沒有,也是最可惜的地方。

解決辦法:

使用第一種html,並引入網路上的圖片」。

html的寫法就不多敘述了,圖片可以指一個來源,只要這圖片不會被莫名下架,而且位置固定,就可以當作一個好的來源。

通常雲端硬碟的圖片會啟動它的編輯器,位置也會更動,並不適合拿來當固定來源。

而雲端相簿則可以固定位置,會是比較好的圖片引入來源。

個人是用wordpress去放上圖片,然後圖片的網址也是固定的,而且好懂得,載入速度也是很快的。

用Wireshark還原TFTP的檔案

首先要製作TFTP的封包出來,這裡把一張圖片用TFTP的協定傳過去。

mylogo.png
TFTP成功傳遞

選擇第一個 Date Packet,右鍵 > Follow > UDP Streams

方向選擇 Server > Client,Show Data as 「Raw」。

向選擇 Server > Client,Show Data as 「Raw」。

這裡可以看到每一個段落前面會有 0003000X ,0003表示從Server發出,而000X是該Data的其中第X部分,X是十六進位。

因此只需要把每段的 0003000X 去掉,就可以得到一個還原的檔案。

按下 Save as,儲存為 Raw.png。

接下使用 Python,幫忙把裡面的 0003000X去掉,由於0003000X的出現位置是固定的,只需要拿掉特定區間就可以了。

"""JN的網路日常"""
with open('raw.png', 'rb') as f:
    content = f.read().hex()
    f.close()    

# tftp per part data size = unit
unit = content.find("00030002") - content.find("00030001")
content = content[content.find("00030001"):]
content = "".join([content[i+8: i+unit] for i in range(0, len(content), unit)])

with open("mylogo.png", "wb") as f2:
    f2.write(bytes.fromhex(content))
    f2.close()

執行之後,打開圖,發現可以正常顯示。

場加映,利用Mirror去截取TFTP檔案。

有了前述的概念之後,接下來可以Mirror去攔截別的Port的TFTP檔案,然後還原出來。

用一台具有Mirror功能的Switch,個人使用NETGEAR。

現在要複製一份從TFTP SERVER傳到第四埠的檔案,目前筆電接在第五埠。

啟用Mirror功能,把第四埠的流量複製到第五埠。

接下來要讓筆電的網路介面卡單純地聽,把IPv4的功能取消掉,以免干擾。

接收mirror的介面卡取消IPv4的功能

然後啟動TFTP傳輸,用Wireshark可以看到接收Mirror的介面卡有鏡像過來的TFTP封包。

按照一樣的方法去還原檔案。

Aruba Controller Internel Captive Portal客製化

有些 SSID 會配合 網頁認證 ,而Aruba Controller可以使用內建網頁,甚至是客製網頁,讓登入頁面可以呈現各個案場的風格。

最基本是從新增SSID時去選擇走 Internal Captive Portal with authentication,新增完後,Captive Portal的相關設定,會在SSID對應的Configuration > Roles & Policies >Roles中,至於 Show Advanced View,若看不到 Show Advanced View,請看這篇

點選Custom HTML可以,看到檔案上傳的地方。

HTML要怎麼製作,可以參考官方文件,這裡有一個筆者以此做出的: JN_Custom_CaptivePortal.html(HTML)、 mylgoo.png(LOGO)

檔案上傳會到哪裡?會到一個名稱與SSID Profile對應的資料夾,這位置是固定的,如「/upload/custom/xxx_prof/xxx」。

  1. 先上傳 mylogo.png ,按下Sumbit,再按下Preview,跳出網頁的網址「https://ControllerIP/upload/custom/DemoCP2_cppm_prof/mylogo.png」,所以在此上傳的檔案都會放到 /upload/custom/DemoCP2_cppm_prof/ 路徑上。
  2. 編輯 JN_Custom_CaptivePortal.html ,找到「class=”banner-image”」把其src改成「/upload/custom/DemoCP2_cppm_prof/mylogo.png」 ,儲存。
  3. 上傳 JN_Custom_CaptivePortal.html ,按下Sumbit,再按下Preview,看網頁是否正常。
網頁能順利顯示上傳的圖片。

網頁除了圖片之外,越精美的網頁會用上css與更多的圖片,檔案上傳方式也是參照logo上傳的方法即可。

用手機連入SSID,網頁可正常顯示。

網路工程師的小技巧(一) 手機變AP

在很多時候,需要能存取內部網路,可是機房空間卻不方便做事。為了突破有線距離的限制,就可以使用無線做橋接,讓自己可以在一個舒適的地方使用筆電遠端控制。

因為有線會受到距離限制,還有線材也可能會干擾到其他人做事。

無線可有兩種:藍牙Console、無線熱點串接。

藍牙Console的缺點就是速度慢,但是需要的環境條件較簡單,只要Console Port能用即可。

而無線熱點串接,下指令速度很快,可接收範圍也大些,相對地,需要的環境條件較複雜,需要有DHCP IP派發,還要其能順利路由。

設備來說,藍牙Console上千起跳,而無線熱點串接,只要手機能支援外接乙太網路,設備就不用特別去買。

手機無線熱點串接的運作方式是用外接網卡去以DHCP的方式取得IP,接著手機以無線基地台分享網路,然後讓筆電去連手機的熱點,筆電就能連到內部網路。

在做完網路架構設定時,也會去測試是否能拿到DHCP IP,用手機接比較輕鬆。

通常來說,環境的無線有部署起來,直接連已存在的無線會比較快速。但是如果環境沒有無線,或是Controller需要重啟,或是整理線材。把手機當作AP會比較穩定,而且也自帶電源,就不會一直斷斷續續。這樣操作,流量也是跑環境對外線路,就不會使用到自己的數據流量。

準備:

  1. 能支援乙太網路的手機 (個人是Pixel5)
  2. 外接乙太網路網卡 (個人是用MSI附送的TypeC 乙太網路網卡)
  3. 接上的Port需要發DHCP IP,而且其IP能通到其他設備。
  4. 若無DHCP Server,可在該台串接的網路交換器起臨時的DHCP Server,要有 Default router 。建議使用 MAC Binding IP, Static Binding 以影響到其他設備拿到臨時DHCP IP。

步驟:

  1. 用Console或其他方式連入設備,了解架構,並讓一個Port會發DHCP,是可以路由到所有地方。
  2. 如果沒有既有DHCP Server,就要自起一個。為了避免影響到其他地方,可以在連接的網路交換器起臨時的DHCP Server,然後用MAC去Binding一個可以順暢路由的IP,以避免發給其他設備。
  3. 手機接上外接網卡,然後接線到對應的Port,關掉行動數據上網,開啟無線熱點分享。
  4. 手機放置一個較不影響的地方,在附近找一個好做事的地方,用筆電連接。
  5. 收工前,記得把臨時起的設定還原。

隱憂,手機無線熱點的IP網段可能會與內部網路相同,但機率不高。

最後,為什麼要強調無線?因為現場環境可能會壅擠,接著,透過無線能讓自己到一個舒適的地方做事,筆電也可以充電。近距離的有線連接有時候在梯子上,有時候得蹲坐在地上,又或是環境很熱。

透過無線,讓自己在一個好做事的地方,提升做事效率,讓自己下班時間再提早一些。

網路工程師的基礎教育(三) Network Time Protocol(NTP)

NTP是用於同步時間,同步時間為什麼重要?這關於三者:

  • Log的時間紀錄
  • DNS解析
  • 認證相關

如果時間不正確,這三者可能會發生不正確的狀況,因此讓設備能自動同步到正確時間是很重要的。不建議用手動修正時間,因為斷電會讓設備時間永久跑掉。

至於NTP詳細的介紹,請看 JanHo網路世界

NTP Server有很多選擇,可以參考 台灣慣用公開時間伺服器(NTP.SERVER) ,選哪一個比較好?這會是很重要的議題。

第一點,先設定內部NTP Server的位置,如果客戶有給,先用這個。第二,則從公共NTP伺服器中,選一個最佳的。最佳的會是Stratum最小,或是反應延遲最小,個人是喜歡用「watch.stdtime.gov.tw」,不僅其Stratum是1,而且同步反應也很快。

通常NTP Server是給Domain name,而在下指令的時候,在NTP部分可以指Domian Name,但SNTP只能指 Server IP,所以建議是給 Domain name 轉換成 IP,也就是給DNS解析,直接指NTP Server IP會比較省事。

要把 「watch.stdtime.gov.tw」 轉換成 IP 的方法有二種,第一種是從CMD去執行NSLOOKUP,然後把網址貼上去。第二種是在有指定DNS Server之下,直接ping到這個網址。兩者都可以把網址換成IP,但得到的IP可能會有些不同。

Nslookup
Ping

有了 NTP Server IP, watch.stdtime.gov.tw => 118.163.81.63,接著就可以進CLI去做相關設定。有以下四點要注意:

  • 啟用NTP或SNTP
  • 指定同步用的NTP Server IP
  • 改成Unicast
  • 調整設備時區跟時間同步設定

這四者設定完,等待同步週期,再用 Show 去看時間是否有同步,有同步了,才算真正的完成。

顯示目前設備login使用者

有一些Session會因為意外中斷而卡住vty的名額,需要刪掉卡住Session,其他人才能連到。

廠牌型號功能指令
Aruba2930F顯示show session-list
Aruba2930F刪除kill <session id>
Aruba2930F踢出閒置超時idle-timeout <minute>
Aruba3810顯示show session-list
Aruba3810刪除kill <session id>
Aruba3810踢出閒置超時idle-timeout <minute>
Aruba70xx顯示show loginsessions
Aruba70xx刪除session delete <IP>
HPE5130顯示display users
HPE5130刪除free user-interface <Idx>
HPE5130踢出閒置超時user-interface vty <start> <end>
idle-timeout <minute>