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