我有一个基本的网络设置,只需对单个公共地址进行 NAT 到内部 /24,无需任何 VLAN 或花哨的路由。
我的路由器和交换机都运行 Cisco IOS 12.x。我的配置非常少。问题如下:
从路由器,我可以成功 ping 本地网络或互联网上的任何设备,而不会造成任何损失。
但是从交换机或者任何连接到交换机的设备来看,第一次外部 ping 总是会失败。
有什么建议么?
下面是一些引起我好奇心的例子。
从此网络上的 Linux 主机:
#ping -c 5 4.2.2.1
PING 4.2.2.1 (4.2.2.1) 56(84) bytes of data.
64 bytes from 4.2.2.1: icmp_seq=2 ttl=55 time=9.11 ms
64 bytes from 4.2.2.1: icmp_seq=3 ttl=55 time=10.1 ms
64 bytes from 4.2.2.1: icmp_seq=4 ttl=55 time=10.8 ms
64 bytes from 4.2.2.1: icmp_seq=5 ttl=55 time=9.80 ms
--- 4.2.2.1 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 3998ms
rtt min/avg/max/mdev = 9.115/9.981/10.831/0.625 ms
从不在此网络上的 Linux 主机,不使用 Cisco 设备,但具有类似的网络拓扑:
#ping -c 5 4.2.2.1
PING 4.2.2.1 (4.2.2.1) 56(84) bytes of data.
64 bytes from 4.2.2.1: icmp_seq=1 ttl=59 time=6.16 ms
64 bytes from 4.2.2.1: icmp_seq=2 ttl=59 time=3.56 ms
64 bytes from 4.2.2.1: icmp_seq=3 ttl=59 time=5.45 ms
64 bytes from 4.2.2.1: icmp_seq=4 ttl=59 time=3.24 ms
64 bytes from 4.2.2.1: icmp_seq=5 ttl=59 time=4.22 ms
--- 4.2.2.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 3.242/4.529/6.160/1.115 ms
答案1
第一个 icmp 数据包失败,因为主机发送了 ARP 请求。如果目标主机 MAC 已经在 ARP 缓存中,则设备不会发送此请求。