本篇內(nèi)容接上篇內(nèi)容【開發(fā)筆記 | Systemd 實現(xiàn) STM32MP1 的多種網(wǎng)絡(luò)通信管理(上)】。
5.3 開啟 wifi 并檢查網(wǎng)絡(luò)現(xiàn)象
1) 使用 wpa_supplicant 命令連接 wifi
2) 查看 ip address 情況
eth0 ip 192.168.30.102
wlan0 ip 192.168.43.185
3) 再次查看 ip route 情況
4) 查看 networkctl 情況
wlan 已經(jīng)開啟,但是沒有被管理
5) 再次查看路由情況
192.168.43.1 為 wlan0 新增
6) 根據(jù)以上情況,可以得出,訪問外網(wǎng)時,只有 eth0 可以工作,wlan0 無法工作
wlan0 無法連接外網(wǎng)
測試拔掉網(wǎng)線后情況
7) 根據(jù)以上的現(xiàn)象 unmanaged 與沒有路由表,還是無法使用 wlan0 接口連通外網(wǎng)
但當使用手動給 wlan0 增加一條路由表后如下
此時 IP,路由,DNS 都有,那么就可以 ping 通外網(wǎng)
所以到這里可以得到即使 wifi 聯(lián)通還無法連通外網(wǎng)的原因,是需要對應(yīng)的路由表。分析了網(wǎng)絡(luò)聯(lián)通的過程,那就可以使用 systemd-networkd 來進行多網(wǎng)絡(luò)管理。
5.4 systemd-networkd 增加 wlan0 管理
1) 在 /lib/systemd/network/ 中增加 79-wlan0.network 文件,并添加以下內(nèi)容
RouteMetric 20 躍點數(shù) 20(小于 eth0 的 15)
重啟 systemd-networkd 服務(wù)
查看 networkctl 狀態(tài)
wlan0 現(xiàn)在變成 configured 接下來,重啟下系統(tǒng),可以觀察到一個現(xiàn)象,就是 wifi 會自動打開,但是不會連接, 那是因為沒有 wpa_supplicant 服務(wù),需要手動開啟。這樣才會將要連接 wifi 的 SSID,PASSWD 和配置信息放置在 /etc/wpa_supplicant.conf 手動開啟 wpa_supplicant 服務(wù)
ip route 信息
這里可以看到 2 個 default,前面一個是 eth0 躍點數(shù) 15,后面 wlan0,躍點數(shù) 20
此時就是以太網(wǎng)優(yōu)先,如果以太網(wǎng)斷開,就走 WIFI 路由。測試 ping 百度不指定網(wǎng)卡,中途拔掉以太網(wǎng)。
[ 190.316708] stm32-dwmac 5800a000.ethernet eth0: Link is Down 拔掉網(wǎng)線打印信息
可以看到,以太網(wǎng)和 wifi 同時連接時,網(wǎng)絡(luò)不會因為以太網(wǎng)中斷而停止。這里還有一個點,到底 ping 的時候走哪個網(wǎng)卡,這里直接說明,會走 ip route 最前面的 default 路由, 由于 eth0 metric = 15 ,wifi metric=20,所以連接順序無論怎么接,都是以太網(wǎng)在前。
鑒于后面內(nèi)容篇幅過長,本次實操開發(fā)筆記分 3 次對外進行發(fā)布:開發(fā)筆記|Systemd 實現(xiàn) STM32MP1 的多種網(wǎng)絡(luò)通信管理(上)開發(fā)筆記|Systemd 實現(xiàn) STM32MP1 的多種網(wǎng)絡(luò)通信管理(中)開發(fā)筆記|Systemd 實現(xiàn) STM32MP1 的多種網(wǎng)絡(luò)通信管理(下)