通过 LAN 上的以太网连接到交换机/路由器的主机之间持续超时

通过 LAN 上的以太网连接到交换机/路由器的主机之间持续超时

此时我已经没有主意了,所以我想寻求帮助。我有 4 台设备连接到我的家用路由器 (Dasan H660GW)。它和大多数其他家用路由器一样,也是一个接入点和一个 L2 交换机。

所以我有 3 个通过以太网连接的主机:

  1. jjk-desktop(IP 通过 DHCP 配置,当前为 192.168.55.101)- 台式电脑(双启动 Win10/Linux)
  2. rpi-main(RaspberryPi,静态IP 192.168.55.20)
  3. rpi-worker1(RaspberryPi,静态IP 192.168.55.30)

1台通过wifi连接的主机:

  1. jjk-laptop(IP 通过 DHCP 配置,当前为 192.168.55.100)- 家用笔记本电脑(Linux)

最后,我的家用路由器的 IP 是 192.168.55.1。

问题就在这里:通过以太网连接的所有设备都无法互相连接 - 每次请求都会超时。但它们可以访问通过 wifi 连接的笔记本电脑,反之亦然 - 我可以从笔记本电脑连接到每个设备。

例如,尝试从 rpi-main (192.168.55.20) ping rpi-worker1 (192.168.55.30) - 这只是 7 次 ping,但我已经运行了 200 多次,并且 100% 丢失:

jjk@rpi-worker1:~ $ ping rpi-main -O
PING rpi-main (192.168.55.20) 56(84) bytes of data.
...
no answer yet for icmp_seq=7
^C
--- rpi-main ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7153ms

尝试从 jjk-desktop ping 到任何 rpi-main/rpi-worker1 或从 rpi-main ping 到 rpi-worker1 等看起来完全相同。

以下是从 jjk-desktop (192.168.55.101) 到 rpi-main (192.168.55.20) 的 SSH 尝试:

jjk@jjk-desktop: ~
$ ssh 192.168.55.20                                                                                                                               
ssh: connect to host 192.168.55.20 port 22: Connection timed out
FAIL: 255

尝试通过 SSH 连接到 rpi-worker1 (192.168.55.30) 时也是一样。通过 SSH 连接到 jjk-laptop (192.168.55.100) 则没问题。

最后一个例子——尝试 DNS 查询(rpi-main 也是一个 DNS 服务器):

jjk@jjk-desktop: ~
$ nslookup argo.jed.local rpi-main                                                                                                                
;; communications error to 192.168.55.20#53: timed out
;; communications error to 192.168.55.20#53: timed out
;; communications error to 192.168.55.20#53: timed out
;; no servers could be reached

基本上,通过以太网连接的这 3 个主机之间的每个请求都会超时。
现在我可以看到它们都正确设置了 ARP 表(表面上),并且每个 IP 都映射到正确的 MAC 地址:

jjk@jjk-desktop: ~
$ arp -en                                                                                                                                         
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.55.20            ether   e4:5f:01:98:c2:ae   C                     eno1
192.168.55.100           ether   e0:d4:e8:f2:0a:8f   C                     eno1
192.168.55.30            ether   e4:5f:01:d9:f4:fe   C                     eno1
192.168.55.1             ether   18:d0:71:fb:63:9f   C                     eno1

jjk@rpi-worker1:~ $ arp -en
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.55.100           ether   e0:d4:e8:f2:0a:8f   C                     eth0
192.168.55.1             ether   18:d0:71:fb:63:9f   C                     eth0
192.168.55.101           ether   e0:d5:5e:e6:a9:f1   C                     eth0
192.168.55.20            ether   e4:5f:01:98:c2:ae   C                     eth0

jjk@rpi-main:~ $ arp -en (I've cut out docker/k8s related crap)
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.55.100           ether   e0:d4:e8:f2:0a:8f   C                     eth0
192.168.55.1             ether   18:d0:71:fb:63:9f   C                     eth0
192.168.55.101           ether   e0:d5:5e:e6:a9:f1   C                     eth0
192.168.55.30            ether   e4:5f:01:d9:f4:fe   C                     eth0

JJKlaptop at ~ ❯ arp -en
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.55.30            ether   e4:5f:01:d9:f4:fe   C                     wlp1s0
192.168.55.20            ether   e4:5f:01:98:c2:ae   C                     wlp1s0
192.168.55.101           ether   e0:d5:5e:e6:a9:f1   C                     wlp1s0
192.168.55.1             ether   18:d0:71:fb:63:9f   C                     wlp1s0

每台设备上的路线似乎也设置正确:

ip route on jjk-desktop:
default via 192.168.55.1 dev eno1 proto dhcp src 192.168.55.101 metric 100
192.168.49.0/24 dev br-eaad61b9a668 proto kernel scope link src 192.168.49.1 linkdown
192.168.55.0/24 dev eno1 proto kernel scope link src 192.168.55.101 metric 100

ip route on jjk-laptop:
default via 192.168.55.1 dev wlp1s0 proto dhcp src 192.168.55.100 metric 600
192.168.49.0/24 dev br-41d5ad4a1d7d proto kernel scope link src 192.168.49.1 linkdown
192.168.55.0/24 dev wlp1s0 proto kernel scope link src 192.168.55.100 metric 600

ip route on rpi-worker1 (and it's essentially the same on rpi-main + a lot of docker/k8s stuff):
default via 192.168.55.1 dev eth0 src 192.168.55.30 metric 202
192.168.55.0/24 dev eth0 proto dhcp scope link src 192.168.55.30 metric 202

我已经在每台主机上运行了 tcpdump host,似乎唯一流动的只有 ARP 请求(每当我尝试 SSH、ping 或其他方式时):

jjk@rpi-worker1:~ $ sudo tcpdump host 192.168.55.20
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
22:17:07.856650 ARP, Request who-has 192.168.55.30 tell rpi-main, length 46
22:17:07.856694 ARP, Reply 192.168.55.30 is-at e4:5f:01:d9:f4:fe (oui Unknown), length 28

这是它在每个以太网连接设备上的样子,没有其他东西出现——在这个 tcpdump 的例子中,我从 rpi-main ping rpi-worker 1。

TL;DR:无法在我的以太网连接设备之间建立任何连接,而且我不知道可能是什么原因造成的,也许有人有什么建议。

无论如何,我打算很快为这些设备购买一个单独的交换机,我想这可以解决这个问题,但我仍然很好奇为什么现在会发生这种情况。目前,我怀疑家用路由器本身存在一些问题。

相关内容