“没有到主机的路由”,直到“ping”或“路由”

use*_*761 5 route arp gateway

我有两台电脑在一个 WiFi 网络中:

  • 一个客户
  • B-服务器

有时(十次一次)在 B 重新启动后,我无法从 A 到 B:

$ ssh 192.168.201.128
ssh: connect to host 192.168.201.128 port 22: No route to host
Run Code Online (Sandbox Code Playgroud)

当我尝试 ping 它时,我得到:

$ ping 192.168.201.128
PING 192.168.201.128 (192.168.201.128) 56(84) bytes of data.
From 192.168.201.133 icmp_seq=1 Destination Host Unreachable
From 192.168.201.133 icmp_seq=2 Destination Host Unreachable
From 192.168.201.133 icmp_seq=3 Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

ARP 可能是问题所在:

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
_gateway                 ether   70:4c:a5:a7:c2:57   C                     wlp2s0
192.168.201.128                  (incomplete)                              wlp2s0
Run Code Online (Sandbox Code Playgroud)

我试图像这样修复它:

$ sudo arp -d 192.168.201.128
$ arping -c 10 -I wlp2s0 192.168.201.128
ARPING 192.168.201.128 from 192.168.201.133 wlp2s0
Sent 10 probes (10 broadcast(s))
Received 0 response(s)
Run Code Online (Sandbox Code Playgroud)

没有效果 :(

我可以通过将显示器和键盘插入 B(服务器)并执行以下任一操作来解决此问题:

1)ping A(客户端)

或者

2)在终端中输入“路线”

然后一切恢复正常。

知道为什么会发生这种情况吗?我的猜测是 B 有时无法正确发现网关。我无法验证这一点,因为当我在 B 终端中输入“route”时,一切都会恢复正常。

旁注:

  1. B(服务器)上没有防火墙
  2. A(客户端)是Ubuntu 18.04桌面版
  3. B(服务器)是 Ubuntu 16.04 最小版本(可能缺少一些用于 arp/auto gw 发现的重要包?)
  4. B(服务器)接口配置:
$ cat /etc/network/interfaces
auto lo
iface lo inter loopback
Run Code Online (Sandbox Code Playgroud)

And*_*mes 1

我建议你检查一下你的WiFi路由器。重新启动服务器后,您是否能够在路由器的管理界面中看到从其内部 DHCP 服务器租用到您的服务器的 IP 地址?您可以从路由器 ping 服务器吗?路由器和服务器之间的电缆连接是否可行?

我在家里使用连接到旧 TP-Link TLWR340G 路由器提供的 WiFi 网络的笔记本电脑和智能手机时遇到了类似的问题。有时,尽管两台设备都成功建立了互联网连接,但我无法建立从智能手机到计算机的连接。当出现这样的问题时,我通过从计算机 ping 智能手机直到得到响应来解决它,这通常是在 20 个数据包丢失之后。