ubuntu18.04安装docker后,无法访问公司内网的原因及解决方案

时间:2022-09-14 15:38:51

问题描述 

最近周一上班时,突然连不上公司内网,想到周末捣鼓过docker,判断很有可能是安装了docker引起的。我的系统是 ubuntu18.04, docker的版本如下:

ubuntu18.04安装docker后,无法访问公司内网的原因及解决方案

通过 sudo ifconfig发现多了一个docker0的网卡,使用sudo ifconfig docker0 down 暂时关闭docker0的虚拟网卡后,果然又能访问内网了。但这个docker0为什么会影响我连公司网呢?

ubuntu18.04安装docker后,无法访问公司内网的原因及解决方案

  查阅了docker的官方文档及SO上的问答,我找到了原因。

ubuntu18.04安装docker后,无法访问公司内网的原因及解决方案

  当 Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,如上图所示,通过宿主机上veth*的虚拟网卡和容器eth0网卡相连,由此实现容器和外部的网络通信。容器的ip和mac由宿主机生成,而默认docker0 默认的容器ip为172.17.0.1/16 ,问题就在这里。我们公司的DNS地址巧好也在 172.17.*.*这个网段,而被误认为是容器内部ip,从而通过docker0尝试访问容器,自然是访问不到的。

ubuntu18.04安装docker后,无法访问公司内网的原因及解决方案

解决方案的话就是要区别容器ip和DNS地址,可以通过在 /etc/docker/daemon.json中添加如下配置

{
"bip": "172.31.0.1/16"
}

 然后重启就ok了!

 

参考:https://superuser.com/questions/1336567/installing-docker-ce-in-ubuntu-18-04-breaks-internet-connectivity-of-host