本篇内容接上篇内容【开发笔记 | 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 的多种网络通信管理(下)