我在路由器上添加了一条静态路由,该路由指向与其余计算机位于不同子网的地址。它工作正常,但当我 ping 它时,我收到了以下ping
我从未见过的命令响应:
64 bytes from 10.11.12.13: icmp_seq=0 ttl=127 time=1.527 ms
92 bytes from 10.0.0.1: Redirect Host(New addr: 10.0.0.254)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 0054 bf4c 0 0000 3f 01 9c43 10.0.0.2 10.11.12.13
顺便说一句,我正在用 Mac 执行此操作。
我的路由器是 10.0.0.1。有问题的主机中有 2 个 NIC。一个是 10.11.12.13,另一个是路由器上的 DHCP 保留地址,地址为 10.0.0.254(这解释了重定向地址)。
显然这是由于静态路由(呃),但这个响应到底是什么?我ping
以前从未见过该命令给出这样的响应。
答案1
您的路由器会向您发送 ICMP 重定向消息以响应您的 ICMP 回显请求,因为您尝试访问的主机与您位于同一 LAN 上,但您的网络堆栈已将您的数据包寻址到路由器的 MAC 地址(因为目标 IP 地址不在子网内,并且您的路由器是您的默认路由)。因此,路由器会说“嘿,那家伙和您在同一个 LAN 上。直接与他交谈,不要再让我麻烦地中继您应该直接发送的流量”。ping 命令显示了该 ICMP 重定向的内容。
如果您尝试与同一 IP 地址建立 TCP 连接,您将获得等效的 ICMP 重定向,但您的网络堆栈可能只会处理它而不是向您显示它。ping 命令向您显示它的唯一原因是 ping 命令是一种网络诊断工具,因此它认为您会对这种细节感兴趣。