Can’t ping some IP addresses in the same subnet – Updated

This is followup from last post about connectivity issue between two computers in same subnet, somehow the arp -s workaround stopped working. I have tried different ways to figure out the root cause, including using tool like tcpdump to sniffer ARP/ICMP request/response, but no luck.

I doubt it’s caused by the wifi router, which model is Zyxel nbg-418n. Eventually I found the workaround to add static DHCP table for one of the machine, and everything works magically.

Static DHCP

Can’t ping some IP addresses in the same subnet

Recently I have tried to setup Linux machine as dev box, and remote from Mac via SSH. But one strange issue is that I was not able to connect the dev box at all, no matter CentOS 7, CentOS 6.8 and Ubuntu 16.04.

Let me clarify. There are three machines A, B, C connected to wifi. All of them can access external network without any issue. A is Mac, B is the dev box, and C is another test machine. The ping between B and C, A and C works perfectly. But A cannot ping B and B cannot ping A at all. It seems they’re isolated.

$ ping 192.168.1.59
PING 192.168.1.59 (192.168.1.59): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

To diagnostic, first I run “tcpdump icmp” on machine B, and ping from A results nothing, which means the ping request cannot reach to destination. Then check the arp table:

$ arp -a
nbg-418n (192.168.1.1) at cc:5d:4e:48:3d:9e on en0 ifscope [ethernet]
fewang-dev.hsd1.wa.comcast.net (192.168.1.59) at (incomplete) on en0 ifscope [ethernet]

That’s weird as it shows as incomplete, which means we cannot translate the IP address to related physical address.

I don’t know why that could happen, but fixing this can be adding static route with IP address and physical address (MAC address).

$ sudo arp -a -d
$ sudo arp -s 192.168.1.59 00:21:6a:a6:b7:fa

$ ping 192.168.1.59
PING 192.168.1.59 (192.168.1.59): 56 data bytes
64 bytes from 192.168.1.59: icmp_seq=0 ttl=64 time=19.469 ms
64 bytes from 192.168.1.59: icmp_seq=1 ttl=64 time=11.742 ms
64 bytes from 192.168.1.59: icmp_seq=2 ttl=64 time=15.606 ms

Install and configure CentOS 7 on a Raspberry Pi 3

I just bought the Raspberry Pi 3 from Amazon.com CanaKit Raspberry Pi 3 Complete Starter Kit – 32 GB Edition. It seems the Amazon One Day delivery never worked for me, last time my order with one day delivery got cancelled, and this time better it took two days :).

I don’t want to use the default Raspbian OS and instead CentOS 7 is preferred, which is the version I’m using for daily work. The installation is pretty straight forward with help from Google. Basically you need find the correct disk id, download the image, unzip it and copy it the USB MicroSD with your Mac. There is one MicroSD reader included in above Kit.

$ diskutil list
/dev/disk0 (internal, physical):
   ....
/dev/disk1 (internal, virtual):
   ....

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.4 GB    disk2
   1:             Windows_FAT_16 RECOVERY                1.2 GB     disk2s1
   2:                      Linux                         33.6 MB    disk2s5
$ wget http://buildlogs.centos.org/centos/7/isos/armhfp/CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img.xz
$ unxz CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img.xz
$ diskutil unmountDisk /dev/disk<#diskid>
$ sudo dd bs=1m if=CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img of=/dev/disk<#diskid>

The copy of dd will take a few minutes.

Now insert the SD card to the RespberryPi 3 and boot, then use root/centos to login.

After login we will immediately find that wireless doesn’t work, actually wlan0 device is not recognized by OS.

[root@centos-rpi3 ~]# nmcli d
DEVICE  TYPE      STATE         CONNECTION
eth0    ethernet  connected     eth0
lo      loopback  unmanaged     --

In order to setup the wireless connection, we have to connect to wire connection first and make sure we have internet access. If you want, you can ssh root@<ip> to the Raspberry Pi from you Mac, with the ip address by run ifconfig from the Raspberry Pi.

Now we need first make sure the time is correct by setting up the ntp service, otherwise download later will fail with error complaining certificate error.

# yum install -y ntp
# systemctl enable ntpd
# systemctl start ntpd

Verify the date is correct now:

[root@centos-rpi3 ~]# date
Fri Jun 17 04:20:43 UTC 2016

Then we need download updated firmware from github, update it, then reboot.

# yum -y install git
# git clone https://github.com/RPi-Distro/firmware-nonfree.git
# mv /lib/firmware/brcm{,.org}
# cp -R firmware-nonfree/brcm80211/brcm /lib/firmware/brcm
# curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update
# chmod +x /usr/bin/rpi-update
# rpi-update
# reboot

After reboot finished, the wlan0 interface will be available.

[root@centos-rpi3 ~]# nmcli d
DEVICE  TYPE      STATE         CONNECTION
eth0    ethernet  connected     eth0
wlan0   wifi      disconnected  --
lo      loopback  unmanaged     --

Now find the SSID of your wifi connection point, and connect to it.

[root@centos-rpi3 ~]# nmcli d wifi
*  SSID               MODE   CHAN  RATE       SIGNAL  BARS  SECURITY
   kobuk              Infra  5     54 Mbit/s  60      ▂▄▆_  WPA2
   --                 Infra  1     54 Mbit/s  20      ▂___  WPA1 WPA2
   .....

[root@centos-rpi3 ~]# nmcli d wifi connect <your_uuid> password <your_pwd>
[root@centos-rpi3 ~]# nmcli d
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
wlan0   wifi      connected  <your_uuid>    
lo      loopback  unmanaged  --

Now confirm the wifi connection state and with the ip address we can remove the wire network connection.

root@centos-rpi3 ~]# nmcli d show wlan0
GENERAL.DEVICE:                         wlan0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         B8:27:EB:6F:DF:97
GENERAL.MTU:                            0
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ....
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:                         192.168.1.56/24
IP4.GATEWAY:                            192.168.1.1
IP4.DNS[1]:                             192.168.1.1
IP4.DOMAIN[1]:                          hsd1.wa.comcast.net
IP6.ADDRESS[1]:                         ....
IP6.GATEWAY: