最近公司服务器网络出现了问题,现象就是有台主机不能访问某个网段的机器,无法ping通。原因是在启动docker容器的时候突然断开连接,然后就连接不上了。服务器网段是100.10.x.x,被访问机器是172.17.x.x。
后来琢磨可能是docker网桥导致主机路由表异常,定位了一下,果然如此,那么解决方法就很简单了。大概解释一下,docker安装以后会在主机上创建一个虚拟网卡-docker0,而我们启动的容器host网络以外,其他的都是通过docker0这个虚拟网卡经过物理网卡与外部通信的。这个虚拟网卡本身会有一个网段,一般是172.17.x.x,所以问题就明确了,因为docker0占用了这个网段,导致主机无法访问真是的网段机器。只要把docker0绑定的网段修改一下,就可以了。解决步骤如下:
查看路由信息
查看主机路由信息
route -n
可以看到docker0占用的网段
也可以直接查看docker0占用的网段
ifconfig docker0
修改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/1852577
https://blog.csdn.net/penetrate/article/details/82458166
https://blog.csdn.net/q95548854/article/details/121097186
本文由mdnice多平台发布