Networking

一張乙太網卡上有兩個完全獨立的網橋,可能嗎?

  • October 21, 2022

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

你在這裡把事情搞混了。Docker 創建了一個僅包含來自正在執行的 docker 容器的所有 veth 介面的網橋 - 網橋本身不會觸及您的物理網路介面。從您的 docker 容器到公共世界的通信是通過路由完成的,而不是通過橋接!

如果您嘗試將物理網路介面添加到兩個不同的獨立網橋,那將是一個問題。在同一台 PC 上擁有一個 docker 網橋和不同的網橋不會造成問題。

但是你有一個不同的問題:docker 搞亂了核心設置,導致通過網橋(第 2 層)的數據包向上發送一層,以便通過數據包過濾器發送這些數據包,而橋接數據包通常不會做。看到這個問題,它有一個很好的答案,描述了碼頭工人和橋樑的問題……

引用自:https://serverfault.com/questions/1113652