Strange Issue with WiFi on Raspberry Pi 3B/3B+ when eth0 and wlan0 are on different IP ranges

I am having a strange issue when connecting my Raspberry Pi 3Bx devices to my Aruba Access Point.

  • Access point works with other devices (zerow, macbook, iphone)
  • RPI3 works with other Access Points

It ONLY fails when using the Aruba AP with the RPI3.

I am unsure even how to debug this, any help would be much appreciated.

eth0 OK

root@4c28d5c:/usr/src/app# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 9a:33:e3:62:a1:4d
      inet addr:10.10.10.6  Bcast:10.10.10.255  Mask:255.255.255.0
      inet6 addr: fe80::2e3:9489:28aa:a890/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:68387387 errors:0 dropped:0 overruns:0 frame:0
      TX packets:53942719 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:3459814631 (3.2 GiB)  TX bytes:3693882240 (3.4 GiB)

root@4c28d5c:/usr/src/app# ping google.com -I 10.10.10.6
PING google.com (173.194.219.101) from 10.10.10.6 : 56(84) bytes of data.
64 bytes from ya-in-f101.1e100.net (173.194.219.101): icmp_seq=1 ttl=43 time=30.4 ms
64 bytes from ya-in-f101.1e100.net (173.194.219.101): icmp_seq=2 ttl=43 time=31.1 ms
64 bytes from ya-in-f101.1e100.net (173.194.219.101): icmp_seq=3 ttl=43 time=36.3 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 30.489/32.663/36.394/2.658 ms

wlan0 FAIL

root@4c28d5c:/usr/src/app# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr b8:27:eb:62:c6:c2
      inet addr:172.31.98.53  Bcast:172.31.99.255  Mask:255.255.254.0
      inet6 addr: fe80::c903:8619:fad:b10e/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:64980449 errors:0 dropped:0 overruns:0 frame:0
      TX packets:27308349 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:2973699772 (2.7 GiB)  TX bytes:2459118646 (2.2 GiB)

root@4c28d5c:/usr/src/app# ping google.com -c 3 -I 172.31.98.53
PING google.com (173.194.219.100) from 172.31.98.53 : 56(84) bytes of data.

--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2060ms

UDPATE: I just unplugged the wired connection and then the ping through the wlan0 interface began to work after around 5 mins which leads me to assume that this is something on how the networking on resinos is setup.

Any leads on how to debug this would be much appreciated!

Hi,

Thanks for reporting this. Are you still experiencing this problem? Also, can you please give us the resinOS version of the affected device?

hey @lekkas thanks for checking in. I’ve figured out under what circumstances the issue occurs, but unfortunately haven’t figured out how to solve it.

If both eth0 and wlan0 are on the same range (10.10.10.x for example) then I have connectivity over both interfaces but if they are on a different range (10.10.10.x and 10.40.0.x like below) then I only have connectivity over one interface.

I am guessing I am misunderstanding some fundamental networking concepts in linux but I would really appreciate any ideas on to how to go about solving this as the main requirement of our project is to have the ability to run different diagnostic tests over both interfaces (which right now we cannot do unless they are on the same range, usually not the case).

Thanks!

root@4c28d5c:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr EE:50:44:83:61:85
          inet addr:10.10.10.7  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::1d24:6c68:d093:410f%1995591680/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:60104523 errors:1 dropped:0 overruns:0 frame:1
          TX packets:47511150 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3981703426 (3.7 GiB)  TX bytes:2086629929 (1.9 GiB)

root@4c28d5c:~# ping google.com -I 10.10.10.7 -c 3
PING google.com (173.194.219.100) from 10.10.10.7: 56 data bytes
64 bytes from 173.194.219.100: seq=0 ttl=43 time=105.181 ms
64 bytes from 173.194.219.100: seq=1 ttl=43 time=63.390 ms
64 bytes from 173.194.219.100: seq=2 ttl=43 time=114.697 ms

--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 63.390/94.422/114.697 ms


root@4c28d5c:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr B8:27:EB:62:C6:C2
          inet addr:10.40.0.63  Bcast:10.40.0.255  Mask:255.255.255.0
          inet6 addr: fe80::dead:9370:aeb4:4620%1995456512/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:781 errors:0 dropped:0 overruns:0 frame:0
          TX packets:664 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:122403 (119.5 KiB)  TX bytes:94850 (92.6 KiB)

root@4c28d5c:~# ping google.com -I 10.40.0.63 -c 3
PING google.com (173.194.219.113) from 10.40.0.63: 56 data bytes

--- google.com ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss


root@4c28d5c:~# ip route | grep default
default via 10.10.10.1 dev eth0  metric 100
default via 10.40.0.1 dev wlan0  metric 600

Hi, sorry for following up on this so late. I am not familiar with the specifics of this type of router, but it looks like the router’s configuration may be wrong. Home routers usually provide a single subnet for both Ethernet and WiFi. This is an Enterprise router, so I assume it has the ability to provide two networks - one for Ethernet and one for WiFi. I assume configuration is done through DHCP for the WiFi network, so I exclude the option that you did not provide correct gateway address. If the router is running Linux (quite possibly so) you may connect to it through SSH or Telnet and check NAT settings, debug logs, etc. for both of those subnets.

Similar situation would be RPi to be connected to two routers at the same time. If both routers have Internet connectivity, the google ping will succeed through both interfaces.