为什么Ping不通啊!求指点?
友情提醒,这个问题难度系数==初级难度(CCNA),只适合初级读者阅读,避免浪费宝贵时间。
Q1: 为何PC1能Ping通PC2?或反之亦然?
PC1主观认为PC2和自己在一个广播域。
因为PC1用自己的网络掩码 /16(255.255.0.0)和PC2的IP地址(10.1.1.2),做按位与(bit and)操作,得到的网络ID = 10.1.0.0。
PC1的IP地址(10.1.1.1),与自己网络掩码/16(255.255.0.0),做按位与(bit and)操作,得到的网络ID = 10.1.0.0。
既然两个网络ID相等,那么PC1与PC2处在同一个广播域,属于同一个网段的通信。
同一个网段的主机之间的通信,不需要网关(路由器AR1)的介入,PC1只要发一个ARP广播请求PC2的MAC地址即可完成通信。
Q2: 为何PC1 Ping不通PC3?反之亦然?
因为PC1认为PC3和自己在同一个网段,同一个广播域,网络ID都是10.1.0.0。
所以使用ARP广播请求PC3的MAC地址,由于路由器AR1天然隔离广播报文(自然包括ARP广播报文)。即从g0/0/0接口收到的广播,不会向其它接口g0/0/1转发。PC3压根无法收到PC1的ARP广播,自然也不会回复。
由于PC1一直无法请求到PC3的MAC地址,通信无法完成,反之亦然。
Q3:如何才能让PC1 Ping通PC3?
只要将
- PC1的IP地址/掩码(10.1.1.1/16)修改成(10.1.1.1/24)
- PC3的IP地址/掩码(10.1.2.3/16)修改成(10.1.2.3/24)
即可。
Q4:除了Q3的方法,还有其它方法吗?
只要将路由器AR1
- 接口g0/0/0 上开启Proxy ARP
- 接口g0/0/1 上开启Proxy ARP
即可。
当PC1 ARP广播请求PC3 的MAC地址时,尽管PC3不在这个广播域里,但是AR1的接口g0/0/0在这个广播域,能够收到ARP广播,于是用g0/0/0接口的MAC地址欺骗PC1 ,让PC1误以为这是PC3的MAC地址。
PC1只要能将Ping包封装好,并发给AR1,剩下的都由AR1来处理。AR1只要查一下路由,即可将Ping包从接口g1/0/0发出,并最终达到PC3。
Ping包的Reply同理可得。
Q5:除了Q3、Q4的方法,还有其它方法吗?
将AR1的g0/0/0、g0/0/1两个接口配置成switch port(二层端口),并放入同一个二层桥(IEEE Bridge)。
由于AR1不再是一个三层路由设备,而是一个透明的二层桥接设备,所以PC1请求PC3的ARP广播,毫无障碍从AR1的bridge通行(从g0/0/0进,从g0/0/1出,反向的流量,两者颠倒)。
既然PC1能请求到PC3的MAC地址,自然可以Ping通了。
Q6:除了Q3、Q4、Q5的方法,还有其它方法吗?
- 在交换机LSW2找出一个空闲端口(假设为P1),需要这个空闲端口的VLAN ID和PC1连接的交换机端口VLAN ID相同。
- 在交换机LSW3找出一个空闲端口(假设为P2),需要这个空闲端口的VLAN ID和PC3连接的交换机端口VLAN ID相同。
- 用一根网线将P1、P2连起来,双方即可通信。
端口P1、P2可以同时为Trunk Mode,或者同时为Access Mode都是可以通信的。
作者|车小胖谈网络|公众号