tcpdump没有回包、内网地址和docker分配地址冲突问题排查和解决

1 引入

起因是近期要开通某两个内网地址之间的网络策略。
这里假定A机器的地址是172.17.1.100,B机器的地址是10.10.1.100,我们需要172.17.1.100访问10.10.1.100

往常来说,首先找网络部门开通这两个地址之间的硬件防火墙和软件防火墙即可。但是这次网工帮我开通了,我就是telnet不通。

# 在172.17.1.100机器上执行
telnet 10.10.1.100 8000

2 tcpdump

使用tcpdump在B机器上抓包发现,接收到了数据包,但是没有回包:

# 在10.10.1.100机器上执行
tcpdump tcp port 8000 and host 172.17.1.100

在这里插入图片描述

3 route

然后在B机器上查看route,发现路由地址中172.17是docker的地址:

# 在10.10.1.100机器上执行
route -n

在这里插入图片描述

难怪没有回包,因为包发到docker的网段去了,并没有发到A机器。

4 解决

这里有两个解决方案:

  1. 修改docker的网段,这个适合docker上没有跑重要业务,把docker冲突的网段修改了就解决了
  2. 把这台机器上要访问的服务做一个代理转发

版权声明:本文为weixin_39198406原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。