有什么方法可以配置 connman 通过 DHCP 自动连接到两个网络?
默认情况下,大多数 DHCP 服务器配置为向客户端发出默认路由。如果你得到两个默认路由,linux 网络堆栈就不可能正常工作。
由于您希望两个网络上的 DHCP 客户端都能正常运行,因此您可以做的最好的事情可能是扫描系统路由表并删除默认路由之一。
通常,您会使用netstat -rn
查找重复的默认值...
[mpenning@tsunami micro]$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
239.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 <--
0.0.0.0 172.16.2.1 0.0.0.0 UG 0 0 0 eth1 <--
[mpenning@tsunami micro]$
然后删除其中一个...
[mpenning@tsunami micro]$ sudo route del default dev eth1
[mpenning@tsunami micro]$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
239.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0
[mpenning@tsunami micro]$
编写一个 shell 脚本来检查这个问题并不难。但是,更好的解决方案是在其中一个网络上获取静态地址,这样您就不必围绕 DHCP 问题进行管理。