網橋通過 L2 但不通過 L3 流量的問題

網橋通過 L2 但不通過 L3 流量的問題

嘿夥計們希望這裡有人可以幫助我。

我在我的 Ubuntu 系統上設定了一個橋來連接到我在 KVM 中運行的虛擬機器。橋接器能夠發送 ARP 請求和回复,因此我有 2 路流量,但沒有 IP 流量能夠通過。

網路如下: vnet0 -> 橋接器 -> eth1 -> 附有我嘗試 ping 的主機的 VLAN

嘗試遍歷 eth1 時 Ping 全部失敗。我已經在 vnet0、網橋和 eth1 介面上完成了 TCPDUMP。我可以看到問題是,當從 vnet0 發送時,沒有 IP 封包離開 eth1,而它們似乎很好地通過橋接介面。另外值得注意的是,我使用 USB 3.0 千兆位元轉接器進行此連接。

目前為止的故障排除:

  1. 透過 sysctl.conf 停用 IPv6 認為這可能是個問題
  2. 將 USB 轉接器移至其他 USB 連接埠
  3. 多次刪除和建立橋
  4. 重新啟動

難住了。知道為什麼只有L2可以通過嗎?我的虛擬機器透過 eth1 透過 arp 學習系統的 MAC 位址,但無法傳送 IP 封包。

謝謝

答案1

在我把頭撞在桌上又一個小時左右後,我想通了。我的 /etc/network/interfaces 配置是基於我在運行 14.04 的另一台機器上工作的配置。損壞的介面檔案僅顯示相關位元:

自動 eth1
iface eth1 inet 手動
up ifconfig eth1 up

自動 E-MGMT-Bridge
iface E-MGMT-Bridge inet 手動
bridge_stp 關閉
bridge_fd 0bridge_ports
eth1

在 16.04 中,這會以某種方式破壞第 3 層,同時仍允許 ARP、CDP 和 STP 訊框等第 2 層流量通過。很奇怪。要使其在 16.04 中工作,您需要刪除 eth1 節並僅定義網橋而不是它引用的實體接口,如下所示:

自動 E-MGMT-Bridge
iface E-MGMT-Bridge inet 手動
bridge_stp 關閉
bridge_fd 0bridge_ports
eth1

我必須重新啟動,然後才能透過網橋從我的虛擬機器 ping 到連接到我的交換器的真實網路。不確定是否有其他人遇到過這個問題,或者我只是幸運的

答案2

如果您只看到 ARP 而沒有「真實」流量,那麼 iptables 可能是您的問題。檢查 iptables 的 FORWARDING 策略是否設定為 ACCEPT。如果您想使用政策 DROP,請檢查是否已新增轉送規則以允許您的 KVM 流量。

相關內容