![“没有到主机的路由”,直到“ping”或“路由”](https://linux22.com/image/735662/%E2%80%9C%E6%B2%A1%E6%9C%89%E5%88%B0%E4%B8%BB%E6%9C%BA%E7%9A%84%E8%B7%AF%E7%94%B1%E2%80%9D%EF%BC%8C%E7%9B%B4%E5%88%B0%E2%80%9Cping%E2%80%9D%E6%88%96%E2%80%9C%E8%B7%AF%E7%94%B1%E2%80%9D.png)
我在一个 WiFi 网络中有两台计算机:
- 一个客户
- B——服务器
有时(十次中就有一次)在 B 重启后,我无法从 A ssh 到 B:
$ ssh 192.168.201.128
ssh: connect to host 192.168.201.128 port 22: No route to host
当我尝试 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
问题可能是 ARP:
$ arp
Address HWtype HWaddress Flags Mask Iface
_gateway ether 70:4c:a5:a7:c2:57 C wlp2s0
192.168.201.128 (incomplete) wlp2s0
我试图像这样修复它:
$ 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)
没有效果 :(
我可以通过将显示器和键盘插入 B(服务器)并执行以下任一操作来解决该问题:
1)ping A(客户端)
或者
2)在终端中输入“route”
然后一切恢复正常。
知道为什么会发生这种情况吗?我猜是 B 有时无法正确发现网关。我无法验证这一点,因为当我在 B 终端中输入“route”时,一切都恢复正常。
附注:
- B(服务器)上没有防火墙
- A(客户端)是 Ubuntu 18.04 桌面版
- B(服务器)是 Ubuntu 16.04 最小版本(可能缺少一些用于 arp/自动 gw 发现的重要包?)
- B(服务器)接口配置:
$ cat /etc/network/interfaces
auto lo
iface lo inter loopback
答案1
我建议您检查一下您的 WiFi 路由器。重启服务器后,您是否能在路由器的管理界面中看到从其内部 DHCP 服务器到您的服务器的 IP 地址租约?您能从路由器 ping 通服务器吗?路由器和服务器之间的电缆连接是否可行?
我在家里遇到了类似的问题,当时一台笔记本电脑和一部智能手机连接到由旧 TP-Link TLWR340G 路由器提供的 WiFi 网络。有时,我无法建立从智能手机到计算机的连接,尽管两个设备都成功建立了互联网连接。当出现此类问题时,我通过从计算机 ping 智能手机直到得到响应来解决这个问题,这通常是在 20 个数据包丢失之后。
答案2
我过去的做法是将这些服务器(希望访问的)聚合/添加到 hosts 文件中,然后刷新 DNS 缓存。你可以在 hot 上找到一个很好的资源来编辑 hosts 文件这里。
根据 linux/unix/mac 版本的不同,您可以在/etc/hosts
或上找到您的文件/private/etc/hosts
。
到达那里后,您可以添加一个新的服务器/主机,并添加以下格式的行:
192.168.201.128 remote_host
您可以查看示例主办方文件
然后,您可以强制更改使 DNS 刷新有效,这听起来像是您所面临的问题。
dscacheutil -flushcache