Arch-Linux
無線連接到具有不同靜態 IP(Pi、Arch Linux)的優先 SSID
我目前正在使用 Raspberry Pi Zero W 進行攜帶式無頭項目,我在其上安裝了 Arch Linux,並且目前正在使用 systemd-networkd 將其無線連接到我的家庭路由器。對於以下案例,我希望能夠讓它使用每個 SSID 的不同靜態 IP 自動連接到具有優先級的 SSID 對:
當我在外地使用它時,我需要它使用靜態 IP 自動連接到我的 Android 設備的無線熱點(這樣我就可以輕鬆地通過手機通過 SSH 或 VNC 連接到它)。
當我在家時,我還需要能夠從我的家庭 LAN SSH 進入它以執行管理,再次使用靜態 IP 以方便 SSH 訪問。
但是,當我在家時,我還需要能夠將它連接到我的手機以進行測試,並讓它根據我的 Android 熱點的存在與否自動在 SSID 之間切換。
更複雜的是,我的家用路由器使用的 IP 範圍與我的 Android 手機不同,因此兩個連接上的靜態 IP 需要不同。
理想情況下,我需要 Pi 按以下方式工作:
- 如果它檢測到我的 Android 熱點的 SSID,它將使用特定於該 SSID 的靜態 IP 地址專門連接到該 SSID
- 如果它沒有檢測到我的 Android 熱點的 SSID,它將嘗試使用不同的靜態 IP 連接到我的家庭 Wifi SSID
這意味著我可以在家中使用手機測試 Pi,只需打開手機的熱點,我可以通過關閉熱點使用家用 PC 來管理它。
有誰知道我怎麼能做到這一點?
最後使用 nmcli 解決瞭如何使用 Network Manager 進行操作。設置兩個配置文件如下:
nmcli con add con-name "[Connection Name]" ifname wlan0 type wifi ssid "[SSID]" ip4 [Static IP Address]/24 gw4 [Default Gateway] nmcli con mod "[Connection Name]" ipv4.dns "8.8.8.8 8.8.4.4" nmcli con mod "[Connection Name]" wifi-sec.key-mgmt wpa-psk nmcli con mod "[Connection Name]" wifi-sec.psk [Passkey] nmcli con mod "[Connection Name]" connection.autoconnect-priority 0
確保我的手機 wifi 的連接具有比我的家庭 wifi 更高的自動連接優先級。然後只需將兩個連接都與
nmcli con up "[Connection Name]"
然後網路管理器自動根據優先級然後可用性決定使用哪個。從家裡wifi切換到手機wifi,我打開手機熱點,重啟NetworkManager服務;要再次切換回來,我關閉了手機的熱點。