docker0网络在promiscuous模式下才能使用的问题

有一次我在客户服务器上部署docker容器遇见了个很奇葩的问题。就是容器运行一切正常,但就是无法连接容器的网络。更奇怪的是,一旦你通过tcpflow或者tcpdump监控docker0网络时,那些容器的网络又可以访问了。

原来tcpflow和tcpdump会将虚拟网卡或者网卡至于promiscuous模式,这种模式会让网卡不管网络数据包是不是发给自己的,它都会接受。像目前这种情况,一般是ip地址正确,mac地址错误就会发生。因此,我考虑是不是安装docker时,一不小心创建了两个docker0网络,这两个docker0虚拟网卡ip地址重合了,最后导致网络通信出了问题。

最后,解决方案是把该虚拟网卡删除再重建,问题解决:

sudo ip link delete docker0
sudo systemctl restart docker.service

发表评论

邮箱地址不会被公开。 必填项已用*标注