一、ARP请求无应答的原因
1.目的网络不存在。
2.arp请求传播时被路由器等一些设备隔离。
3.源主机和目的主机不在同一广播域。
二、抓包分析
原因1、2就不再解释了,下面分析原因3:源主机和目的主机不在同一广播域时arp请求无应答的抓包分析。
如下图所示的网络拓扑图
PC3:IP地址 192.168.26.3/24
PC4:IP地址 192.168.26.129/27
AR2:GE0/0/0接口 192.168.26.2/27
这里将PC3、PC4的网关设置为192.168.26.2(AR2的GE0/0/0接口)
经过上面的配置后发现,PC3和PC4是相互ping不通的。
各IP地址后24位二进制如下图:
1、当PC3 ping PC4时,PC3检查发现PC4的ip地址属于自己的一个网段,但PC3没有PC4的MAC地址所以发送目的地址为PC4的ARP广播请求,该广播到达PC4后PC4向PC3发送ARP单播应答告诉PC3我自己的MAC地址。
2、PC3得知PC4的MAC地址后发生ICMP请求报文给PC4。
3、PC4经计算发现PC3的ip地址不属于自己的一个网段,所以会将ICMP应答报文交给网关,所以会发生一个ARP广播请求来获取网关的MAC地址。经抓包发现网关并不会回应PC4发送的ARP广播请求。
所以互相ping不通的原因就出在PC4获取不到网关的MAC地址,导致PC3的ICMP报文无法发送。
回看PC4和网关的IP地址,掩码都是27位,但是它们互相不在对方的网段内,大致可以理解为PC3和网关处在不同的广播域,所以网关是无法接收到PC4发生的ARP请求广播的。
三、解决
经过上面的抓包分析可以得知,其实是网关的掩码配置错误导致无法接收到PC4的ARP请求广播,在不改变主机IP的情况下,只需要将网关所处的广播域包含了PC4的广播域即可解决问题。
查看PC4和网关的IP地址二进制表达式可知:
当网关的掩码≤24时,网关所处广播域就包含了PC4的广播域,这时PC4发送的ARP广播就会被网关接收。
网关掩码修改为24位:
PC3 ping PC4,路由器GE0/0/0接口抓包:
可以看到网关(192.168.26.2)向PC4(192.168.26.129)发送了ARP单播应答告诉PC4自己的MAC地址。
PC3 ping PC4:
PC4 ping PC3:
四、总结
当源主机和目的主机不在同一广播域时,只需将一方的广播域包含另一方的广播域即可。