多网卡网络如何管理?
-
在arm开发版中,有两张网卡,其中一张WIFI无线wlan0网卡,一张4G移动usb0网卡,两个网卡均可单独连接网络上网。但是同一时间只有一张卡能生效,且为最后一张udhcp启动的网卡。比如先启动了usb0网卡后,有网络。在启动wlan0有网络。使用的就是wlan0,当wlan0 wifi 断开之后,不会自动使用usb0网络,usb0网络也不通。
wifi使用SDK内置wifi_deman开启的,4g网络使用usb设备连接的。
如何像手机一样,有WIFI时候自动连接WIFI网络,WIFI网络端口后自动使用4G网络,且优先使用WIFI网络。网卡如下
root@(none):/mnt# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) usb0 Link encap:Ethernet HWaddr AE:0C:29:A3:9B:6D inet addr:192.168.43.100 Bcast:192.168.43.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:286 errors:0 dropped:0 overruns:0 frame:0 TX packets:339 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31441 (30.7 KiB) TX bytes:28159 (27.4 KiB) wlan0 Link encap:Ethernet HWaddr C4:3C:B0:E8:FA:22 inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:2546 errors:0 dropped:0 overruns:0 frame:0 TX packets:236 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:517319 (505.1 KiB) TX bytes:23986 (23.4 KiB)
路由表如下
root@(none):/mnt# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0 default 192.168.43.1 0.0.0.0 UG 0 0 0 usb0 192.168.1.0 * 255.255.255.0 U 0 0 0 wlan0 192.168.43.0 * 255.255.255.0 U 0 0 0 usb0
DNS如下,为WIFI的DNS
root@(none):/mnt# cat /etc/resolv.conf nameserver 10.1.1.10 nameserver 10.1.1.8
-
@wanglang 或许你可以试下不用udhcp来获取IP。使用ifconfig和route命令手动设置网卡的ip和网关
-
@wanglang 大哥你好,我也准备开始上4g模块,可以加您的QQ分享一下适配过程吗?
-
@wanglang
如何理解Wifi优先级?
我没有使用wifi_deman SDK,也不知道它是如何工作的。 使用常规脚本时,解决方案非常简单...
udhcpc -i usb0 &
udhcpc -i wlan0 & -
学习一下,顶顶顶
-
-
@dream @smbzd @fuzhikun @Alb702 @camperzzz 感谢各位。
是的,本质上是修改路由表和DNS,这里采用了一种简单方法。- 判断当前的网络工作状态。如果是wifi wlan0网口工作, 判断 ping ip -I wlan0 当网口不通时候,刷新 usb0的网口 udhcpc -i usb0 ,会刷新route路由表和 usb0的DNS文件/etc/resolve.conf,使得usb0工作,并设置工作状态为4g usb0。
- wifi_deman中设置wifi会自动重连,当wifi连接成功(账号连接或者断开重连)后。再进行一次wlan0的路由刷新和DNS刷新。切换为WIFI工作。
顺便,再route路由表中
虽然两个优先级Metric都是0,但是由于udhcpc刷新了route和DNS,所以只有排在前面的一个网口以及对应网关gateway到DNS中的一个网口会工作。
-
@wanglang 赞。
-
@wanglang 赞。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号