Wifi動態切換的使用場景:
本文使用的硬體為樹莓派 5/8g 和 Ubuntu Server 24.04 LTS 作業系統,同時期望樹莓派在下列兩種使用情境時,wifi網路能自動切換連接,不再需要外接螢幕和鍵盤來設置網路設定,降低惱人的人為配置工作量。
b.當樹莓派回到常駐環境時,只要關掉手機熱點,樹莓派在失去高優先權連線後,會自動降級切換連接至原常駐環境的 wifi ssid,並自動套用預設配置的靜態IP,使樹莓派回歸為常駐環境的server角色。
Netplan和NetworkManger的搭配關係:
在 Ubuntu 24.04 Server 中,其預設的頂層網路後端管理工具是Netplan,其核心思想是透過一個簡潔的 YAML 格式配置文件,來定義整個系統的網路意圖,然後再將這個意圖「渲染」給底層的實際網路驅動引擎來執行。而Ubuntu Server 通常預設採用 networkd(systemd-networkd)作為底層渲染器,因為其輕量高效,適合配置單純的伺服器環境,但networkd在處理複雜的wifi網路掃描、ssid切換以及強大的優先權管理時,設定繁瑣且不夠靈活。
而NetworkManager恰好是為桌面版本(Desktop)或需要頻繁變動網路的設備設計的,其具備wifi管理能力,可處理多個ssid之間的動態切換。因此,因應上述wifi網路能自動切換連接的核心需求,在Netplan中將渲染器指定為NetworkManager。
配置步驟:
整個配置步驟可分為三個部分,包含Netplan的YAML文件配置、設置網路連線的優先權和以硬體層級重啟無線網卡晶片,說明如下:
1.樹莓派 5的Netplan YAML文件路徑為 /etc/netplan/50-cloud-init.yaml。同時如上所述,採用NetworkManger作為渲染器來配置Netplan的YAML文件,透過在YAML中宣告 renderer: NetworkManager,並分別定義手機熱點(dhcp)與常駐環境wifi ssid (static IP)的配置。
version: 2
renderer: NetworkManager
ethernets:
eth0:
optional: true
dhcp4: true
dhcp6: true
wifis:
# --- mobile hotspot ---
wlan0-hotspot:
match:
name: wlan0
optional: true
dhcp4: true
dhcp6: false
access-points:
"HY CHOU":
auth:
key-management: "psk"
password: "your psk password"
# --- wifi ssid ---
wlan0:
optional: true
dhcp4: false
dhcp6: false
regulatory-domain: "TW"
addresses:
- 192.168.0.xxx/24
routes:
- to: default
via: 192.168.0.x
nameservers:
addresses:
- 192.168.0.x
- 8.8.8.8
- 1.1.1.1
access-points:
"home8855-5":
auth:
key-management: "psk"
password: "your psk password"
"home8855-2.4":
auth:
key-management: "psk"
password: "your psk password"
2.利用nmcli指令查詢網路連線名稱,並進一步定義這些網路連線的優先權,例如連線名稱為netplan-wlan0-hotspot-HY CHOU的手機熱點的優先權數值定義為15,高於常駐環境兩個wifi ssid的優先權數值10,數值越大,優先權越高。
nmcli connection show
sudo nmcli connection modify "netplan-wlan0-hotspot-HY CHOU " connection.autoconnect-priority 15
sudo nmcli connection modify "netplan-wlan0-home8855-2.4" connection.autoconnect-priority 10
sudo nmcli connection modify "netplan-wlan0-home8855-5" connection.autoconnect-priority 10
3.若不想讓樹莓派5重新開機,可以下列指令執行硬體層級重啟無線網卡晶片。
sudo ip link set wlan0 down && sudo ip link set wlan0 up
最後,可簡單藉由手機熱點和wifi ssid來測試其自動切換的效果,若一開始讓樹莓派連上手機熱點,當手機熱點關閉後,以Ubuntu server 24.04 LTS的樹莓派5實測結果,大約10秒內可完成切換到wifi ssid,供參考。

沒有留言:
張貼留言