一张以太网卡上可以实现两个完全独立的桥接吗?

一张以太网卡上可以实现两个完全独立的桥接吗?

Docker 创建了自己的桥接器,当存在现有桥接器时,两者似乎会发生冲突。我亲身经历过这种情况,互联网上的多个来源也提到了这个问题。我看到的一个解决方案是让 Docker 使用现有的桥接器,然后这个说是因为Docker的规则和KVM的桥接搞混了,并提供了下面的解决方案。

我的问题是,为什么这两个网桥的配置会互相影响?一台计算机上只有一个以太网卡,难道不能有完全独立的两个网桥吗?也就是说,一个网桥的设置不会影响另一个网桥的网络。

$ sudo systemctl edit docker.service
 
[Service]
ExecStartPre=/bin/sh -c “/usr/sbin/iptables -D FORWARD -p all -i br0 -j ACCEPT || true”
ExecStartPre=/usr/bin/iptables -A FORWARD -p all -i br0 -j ACCEPT
 
$ sudo reboot

答案1

您在这里搞混了。Docker 创建的网桥仅包含正在运行的 docker 容器中的所有 veth 接口 - 网桥本身不会接触您的物理网络接口。从您的 docker 容器到公共世界的通信是通过路由而不是通过桥接完成的!

如果您尝试将物理网络接口添加到两个不同的独立网桥,那将是一个问题。在同一台 PC 上拥有一个 docker 网桥和一个不同的网桥不会造成问题。

但是你遇到了另一个问题:docker 正在干扰内核设置,导致穿越网桥(第 2 层)的数据包被向上发送一层,以便这些数据包能够通过数据包过滤器发送,而桥接数据包通常不会这样做。请参阅问题,它有一个很好的答案,描述了docker和桥梁的问题......

相关内容