本篇内容接上篇内容【开发笔记 | Systemd 实现 STM32MP1 的多种网络通信管理(上)】。

 

5.3 开启 wifi 并检查网络现象

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 已经开启,但是没有被管理 

 

5) 再次查看路由情况

 

 

192.168.43.1 为 wlan0 新增

 

6) 根据以上情况,可以得出,访问外网时,只有 eth0 可以工作,wlan0 无法工作

 

 

wlan0 无法连接外网

 

 

测试拔掉网线后情况

 

 

 

 

7) 根据以上的现象 unmanaged 与没有路由表,还是无法使用 wlan0 接口连通外网

 

 

但当使用手动给 wlan0 增加一条路由表后如下

 

 

 

此时 IP,路由,DNS 都有,那么就可以 ping 通外网

 

 

所以到这里可以得到即使 wifi 联通还无法连通外网的原因,是需要对应的路由表。分析了网络联通的过程,那就可以使用 systemd-networkd 来进行多网络管理。

 

5.4 systemd-networkd 增加 wlan0 管理

1) 在 /lib/systemd/network/ 中增加 79-wlan0.network 文件,并添加以下内容

 

 

RouteMetric 20 跃点数 20(小于 eth0 的 15)

 

重启 systemd-networkd 服务

 

 

查看 networkctl 状态

 

 

wlan0 现在变成 configured 接下来,重启下系统,可以观察到一个现象,就是 wifi 会自动打开,但是不会连接, 那是因为没有 wpa_supplicant 服务,需要手动开启。这样才会将要连接 wifi 的 SSID,PASSWD 和配置信息放置在 /etc/wpa_supplicant.conf 手动开启 wpa_supplicant 服务

 

 

ip route 信息

 

 

这里可以看到 2 个 default,前面一个是 eth0 跃点数 15,后面 wlan0,跃点数 20

 

此时就是以太网优先,如果以太网断开,就走 WIFI 路由。测试 ping 百度不指定网卡,中途拔掉以太网。

 

 

 

[ 190.316708] stm32-dwmac 5800a000.ethernet eth0: Link is Down 拔掉网线打印信息 

 

可以看到,以太网和 wifi 同时连接时,网络不会因为以太网中断而停止。这里还有一个点,到底 ping 的时候走哪个网卡,这里直接说明,会走 ip route 最前面的 default 路由, 由于 eth0 metric = 15 ,wifi metric=20,所以连接顺序无论怎么接,都是以太网在前。

 

鉴于后面内容篇幅过长,本次实操开发笔记分 3 次对外进行发布:开发笔记|Systemd 实现 STM32MP1 的多种网络通信管理(上)开发笔记|Systemd 实现 STM32MP1 的多种网络通信管理(中)开发笔记|Systemd 实现 STM32MP1 的多种网络通信管理(下)