Ubuntu

如何追踪 Linux 筆記型電腦之間的乙太網 ARP 表問題的根源?

  • November 16, 2018

在我們的家庭區域網路上,重新啟動路由器後,我無法從筆記型電腦 A SSH 到筆記型電腦 B,除非通過路由器。但是,在從筆記型電腦 B 到筆記型電腦 A 執行 ping 操作後,我可以從 A 正常連接到 B。我可以通過重新啟動路由器來重現此問題。兩台筆記型電腦都通過 WiFi 連接到路由器,並且沒有連接其他 AP 或路由器。區域網路上有其他設備,我不知道有任何其他 ARP 問題。

路由器重啟後展示問題:

scott@laptopa:~$ ip addr show dev wlp58s0 |grep 'inet '
   inet 192.168.8.194/24 brd 192.168.8.255 scope global dynamic noprefixroute wlp58s0
scott@laptopa:~$ ssh 192.168.8.131 echo okay
ssh: connect to host 192.168.8.131 port 443: No route to host
scott@laptopa:~$ ssh 192.168.8.131 echo okay
ssh: connect to host 192.168.8.131 port 443: No route to host
scott@laptopa:~$ ssh 192.168.8.131 echo okay
ssh: connect to host 192.168.8.131 port 443: No route to host
scott@laptopa:~$ arp |grep 9c:b6:d0:44:18:09
scott@laptopa:~$ 

尷尬的解決方法:

scott@laptopa:~$ ssh -o 'ProxyCommand ssh -q -W %h:%p root@192.168.8.1' 192.168.8.131 'ping -c 10 192.168.8.194'
PING 192.168.8.194 (192.168.8.194) 56(84) bytes of data.
64 bytes from 192.168.8.194: icmp_seq=1 ttl=64 time=66.3 ms
64 bytes from 192.168.8.194: icmp_seq=2 ttl=64 time=22.9 ms
64 bytes from 192.168.8.194: icmp_seq=3 ttl=64 time=106 ms
64 bytes from 192.168.8.194: icmp_seq=4 ttl=64 time=230 ms
64 bytes from 192.168.8.194: icmp_seq=5 ttl=64 time=252 ms
64 bytes from 192.168.8.194: icmp_seq=6 ttl=64 time=275 ms
64 bytes from 192.168.8.194: icmp_seq=7 ttl=64 time=298 ms
64 bytes from 192.168.8.194: icmp_seq=8 ttl=64 time=321 ms
64 bytes from 192.168.8.194: icmp_seq=9 ttl=64 time=38.3 ms
64 bytes from 192.168.8.194: icmp_seq=10 ttl=64 time=60.3 ms

--- 192.168.8.194 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9012ms
rtt min/avg/max/mdev = 22.950/167.478/321.937/112.761 ms

證明它現在可以正常工作:

scott@laptopa:~$ ssh 192.168.8.131 echo okay
okay
scott@laptopa:~$ arp |grep 9c:b6:d0:44:18:09
laptopb.lan              ether   9c:b6:d0:44:18:09   C                     wlp58s0

筆記型電腦 A 和 B 都執行 Ubuntu 18.04,路由器是 Lede (OpenWRT) 17.01.4。

正如@roaima 建議的那樣,我刪除了所有iptables規則並再次測試。即使在多次重新啟動路由器後,我也遇到了零問題。然後我iptables重新添加了我的規則並進一步測試。我仍然有零問題。

簡而言之,我無法再重現該問題,因此可能就像@dirkt 所經歷的那樣是隨機的。也許它是網路上的其他設備。

引用自:https://unix.stackexchange.com/questions/481565