在局域网内不同子网掩码长度的两个主机单向ping通原因

        这还是昨天我问别人的问题,今天被导师点醒了,为了防止忘记,今天记录一下。

        现实问题:我之前的主机A的IP地址是10.0.0.12/16,最近来了个服务器B,配个IP是10.0.1.136/24,结果在测试网络是否配置正确的时候发现B去ping谁都可以通,但是A去pingB总是这个结果:time out

        问题解析:time out 说明A的request消息发出去了,要么B没收到,要么B收到没有理会。

1)假设B没收到:

        检查了一下B的防火墙,确定已经 systemctl stop firewalld (关闭防火墙)和 systemctl disable firewalld(禁用防火墙),重启之后用 systemctl status firewalld 查看防火墙确实是关闭的

2)假设B收到却直接丢弃了

        按照这个思路的话,可以想象这样一个流程:

        A ping B:A给B发request消息:who has 10.0.1.136,把10.0.1.136、10.0.0.12和255.255.0.0(A的子网掩码)逐位相与,得到10.0.0.0/16和10.0.0.0/16,认为在同一个网段,通过二层转发询问B的MAC地址。

        B收到二层转发的ARP,将里面的10.0.0.12和自己的IP(10.0.1.136)分别与255.255.255.0(B的子网掩码)逐位相与,得到10.0.0.0/24和10.0.1.0/24,认为与请求者不在同一个网段内,于是丢弃

        而反过来,B ping A:B给A发request消息:who has 10.0.0.12,把10.0.1.136、10.0.0.12和255.255.255.0(B的子网掩码)逐位相与,得到10.0.0.0/24和10.0.1.0/24,认为与请求者不在同一个网段内,通过三层转发给默认网关10.0.0.1询问A的MAC地址。

        A收到三层转发的ARP,将自己的IP和MAC地址发给负责三层转发的网关,网关再转发给B,这样B就ping通了。

        这样,为了A能ping通B,我把B的子网掩码也改成了255.255.0.0

        就这样,两边都能ping通了

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值