最近公司服务器网络出现了问题,现象就是有台主机不能访问某个网段的机器,无法ping通。原因是在启动docker容器的时候突然断开连接,然后就连接不上了。服务器网段是100.10.x.x,被访问机器是172.17.x.x。

后来琢磨可能是docker网桥导致主机路由表异常,定位了一下,果然如此,那么解决方法就很简单了。大概解释一下,docker安装以后会在主机上创建一个虚拟网卡-docker0,而我们启动的容器host网络以外,其他的都是通过docker0这个虚拟网卡经过物理网卡与外部通信的。这个虚拟网卡本身会有一个网段,一般是172.17.x.x,所以问题就明确了,因为docker0占用了这个网段,导致主机无法访问真是的网段机器。只要把docker0绑定的网段修改一下,就可以了。解决步骤如下:

查看路由信息查看主机路由信息

route -n

可以看到docker0占用的网段

docker可以跨网络访问吗(docker网段冲突导致主机网络异常处理)(1)

也可以直接查看docker0占用的网段

ifconfig docker0

docker可以跨网络访问吗(docker网段冲突导致主机网络异常处理)(2)

修改docker0默认网段1. 停止docker服务

systemctl stop docker

2. 删除原有网桥

ip link del docker0 down

3. 修改docker网段

vim /etc/docker/daemon.json { "bip":"192.168.100.1/24" }

4. 重启docker服务

systemctl restart docker

5. 通过ifconfig 查看docker网段是否已经变更

ifconfig docker0

参考文档

https://cloud.tencent.com/developer/article/1852577https://blog.csdn.net/penetrate/article/details/82458166https://blog.csdn.net/q95548854/article/details/121097186

,