通过ping、traceroute、tcpdump困扰已久的网络问题终于解决了

背景介绍
16、87和111都是虚拟机只有一个IP,3是物理机有两个IP分别为172.16.15.3和172.16.15.67
网段分为172.16.15.0~172.16.15.63(业务网)、172.16.15.64~172.16.15.127(管理网),两个网段之间是联通的,
业务网的网关为172.16.15.62,管理网的网关为172.16.15.126
172.16.15.87路由为

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.15.126   0.0.0.0         UG    0      0        0 eth0
172.16.15.64    *               255.255.255.192 U     0      0        0 eth0

172.16.15.3路由为

[root@sugon03 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.15.62    0.0.0.0         UG    0      0        0 br1
172.16.15.0     0.0.0.0         255.255.255.192 U     0      0        0 br1
172.16.15.64    0.0.0.0         255.255.255.192 U     0      0        0 enp4s0f1
  • 87可以ping通16、111、不能ping通3
    • ping16走的是路由,具体如下
[docker@pcopusrw01 /opt/apache-tomcat-8.5.9]#traceroute 172.16.15.15
traceroute to 172.16.15.15 (172.16.15.15), 30 hops max, 60 byte packets
1  172.16.15.124 (172.16.15.124)  13.747 ms  14.119 ms  14.536 ms
2  172.16.15.15 (172.16.15.15)  0.963 ms  1.101 ms  1.218 ms
  • ping111因为在同一个网段,不走路由,直接点对点
  • ping 3走的也是路由(3上面的路由配置如下),但是ping包到达3的时候,却没有返回相应的包给87,因为3发现87是64网段的,因此发现可以直接通过64这个网段直接回包给87,而64这个网段对应的网卡ip为67,因此实际会给87的包是由67发的,而ping的原理是必须来源走同一个ip,现在是87请求的是3,而回的却是67,自然就被87把回的包给扔了,当做不可达
[root@sugon03 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.15.62    0.0.0.0         UG    0      0        0 br1
172.16.15.0     0.0.0.0         255.255.255.192 U     0      0        0 br1
172.16.15.64    0.0.0.0         255.255.255.192 U     0      0        0 enp4s0f1

修改87的路由配置:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.15.126   0.0.0.0         UG    0      0        0 eth0
172.16.15.0    *               255.255.255.192 U     0      0        0 eth0
172.16.15.64    *               255.255.255.192 U     0      0        0 eth0
  • 87可以ping通3、111、不能ping通16
    • ping3走的是172.16.15.0这个网段,traceroute172.16.15.3发现,到点3压根没走路由,直接到3然后从3返回;然后在3上抓icmp包发现,所有的请求包都是到67这个网卡上的,根本没到3的网卡上,但是这个时候却直接ping通了3,笔者猜测可能是因为3和67是同一台机器,ping3时自动做了某种转换,机器把ping3当成了ping67,所以自动就通了,而且走的是同一个网段(64~127网段)。这里纯属猜测
    • ping111因为在同一个网段,不走路由,直接点对点
    • ping16 这个时候ping16应该走业务网段的网关,但是业务网段是配有配置网关的,他的网关处显示的是如:172.16.15.0 255.255.255.192 U 0 0 0 eth0
      因为没有网关做下一跳,所以ping16 就不能往下走了,而且路由的权重分为,主机路由>网段路由>默认路由。这里有网段路由,就不会去找默认路由,所以网络不通。
      要想网络通的办法也很简单,加一条主机点对点路由即可:
route add -host 172.16.15.16 gw 172.16.15.126 dev eth0

这个时候可以ping通16了。

所以在业务网和管理网通的情况下,要想虚拟机或容器跨网段通信,加了默认路由的情况下还需要增加点对点路由。

另外再补充下,一般给网关加一个IP时,默认在路由表上会增加这个IP同网段的路由。

问题详情:
一台物理机是172.16.15.6 上面有一个容器zk01地址是172.16.15.111
这台机器配置的路由是
这里写图片描述
此时能够ping通 172.16.15.3
但是不能ping通172.16.15.16
16是虚拟机 3是物理机 3上面也配了两个网段
0~64是一个网段 65~127是一个网段
两个网段之间是联通的, 业务网的网关为172.16.15.62,管理网的网关为172.16.15.126

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值