VIM3主板Wifi和Ethernet网络共存问题

我的主板是VIM3,固件为Android Pie(Android 9),由于开发需要,有线网络和无线网络需要同时启用,且负责不同的通信。

  • 无线网络,连接wifi路由器,负责与外网的通信。
  • 有线网络,通过网线的网口直连另外一台主机进行内网通信。(有线网络的IP地址是通过ifconfig设置)

现在出现以下问题:

(1)当有线网络和无线网络IP地址都设置成功后,此时如果把无线网络重新连接,会发现有线网络的IP地址同时被清空了。

(2)假设有线网络的IP设置为192.168.1.x网段,无线网络的IP地址也是192.168.1.x网段,那么无论哪个网络先设置,那么两个网络都能同时通信。但是假设无线网络的IP地址不是1.x网段(即有线和无线不在同一个网段),那么会导致有线网络无法通信,只有通过先拔出有线网络的网线,重新插上去后再设置有线网络的地址(还是192.168.1.x网段),这时就可以实现有线、无线都能同时通信。

所以:

(1)有线网络IP地址可以在系统中直接固定吗?(系统重启也不会丢失),这样不会被清除了。
(2)对于第二个问题,这其中是什么原因呢?

@fenghong 你这两个问题我先确认一下再给你回复

@fenghong
1.有线网络IP地址如果是ifconfig 设置的重启肯定会丢失的,这个只是临时设置的,如果接上自动获取的是不会丢失的
2.我这边测试,无线 有线不是同一个网段都能通信的,不知道你是怎么得出无法同时通信的?

@jasonl

(1)问题其实是在有线、无线都设置链接上的时候,断开无线网络,再去连上无线网络,发现此时有线网络的IP地址被清除了。就是说无线网络的变化会导致有线网络IP的设置被清除。
(2)我是通过两边的ping来判断的,无法通信肯定ping不通。
我的有线网络走的是网口直连模式,不是连到路由器,就是通过一根网线和另外一台主机通过一根网线连接,然后IP地址配置成同一个网段。
比如VIM3的有线网络IP地址:192.168.1.88,子网掩码:255.255.255.0,另外一台主机IP地址配置为:192.168.1.222,子网掩码:255.255.255.0。这种情况下,如果无线网络也连接上,但是无线网络的IP网段是192.168.2.x,此时就会发现有线网络就通信不了,两边主机ping对方就ping不通了。如果无线网络的IP网段是192.168.1.x,则没有问题。

我就是网口直连模式测试的啊,你ping 的时候有没有通过 -I 选项指定有线和无线的?

@jasonl

ping的时候倒是没有添加 -I 参数,但是从另外的主机去ping vim3主板也是ping不通。

第二个问题的原因的具体步骤是:

(a)有线网卡网段是192.168.1.x网段(内网,通过网线与另外一台主机直连),无线网卡网段是192.168.2.x网段(通过wifi和外网通信)
(b)开机启动vim3主板,当无线和有线全部自动连上的时候,两个 网络都是能够正常通信的。
(c)此时把wifi关掉,然后再重新连接上wifi,这个时候无线网络还是可以连接外网的,但是此时有线网络的IP地址已经被清空掉了。通过ifconfig命令重新设置有线网络的地址,发现有线网络无法通信(通过ping -I 命令无法ping通内网的另外一台主机)。
(d)这个时候把有线网络的网线拔掉(只拔vim3主板这端),再重新插上网线,然后重新通过ifconfig命令设置有线网络的IP,这个有线网络又能正常通信了,无线网络也是能一直正常通信的。

问题的关键点是:当无线网络变化时(比如重连),有线网络的IP地址信息被清空,然后只有重新插拔网线再设置地址才能正常通信。

@fenghong 当无线网络变化时(比如重连),有线网络的IP地址信息被清空 这个问题,安卓系统在关闭wifi时,会在frameworks/base/services/net/java/android/net/ip/IpClient.java 调用stopAllIP去清楚所有网络interface 的ip,如果有线是接到路由器上,清除后会通过dhcp 重新获取的