ブリッジが L2 トラフィックを通過できるが L3 トラフィックを通過できない問題

ブリッジが L2 トラフィックを通過できるが L3 トラフィックを通過できない問題

皆さん、ここで誰かが私を助けてくれるといいですね。

Ubuntu システムにブリッジを設定して、KVM 内で実行している VM に接続しました。ブリッジは ARP 要求と応答を送信できるので、双方向のトラフィックは可能ですが、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 だけが通過できるのか、何か考えはありますか? 私の VM は eth1 を介してシステムの MAC アドレスを arp で学習しますが、IP パケットを送信できません。

ありがとう

答え1

さらに 1 時間ほど机に頭を打ち付けて考えた後、解決しました。/etc/network/interfaces の設定は、14.04 を実行している別のマシンで動作していたものを基にしました。壊れたインターフェース ファイルには、関連する部分だけが表示されています。

自動 eth1
iface eth1 inet 手動
アップ ifconfig eth1 アップ

自動 E-MGMT ブリッジ
iface E-MGMT ブリッジ inet 手動
bridge_stp オフ
bridge_fd 0
bridge_ports eth1

16.04 では、何らかの理由でレイヤー 3 が切断されますが、ARP、CDP、STP フレームなどのレイヤー 2 トラフィックは通過できます。非常に奇妙です。16.04 でこれを動作させるには、eth1 スタンザを削除し、次のように、参照する物理インターフェイスではなくブリッジのみを定義する必要があります。

自動 E-MGMT ブリッジ
iface E-MGMT ブリッジ inet 手動
bridge_stp オフ
bridge_fd 0
bridge_ports eth1

再起動して、ブリッジを介してVMからスイッチに接続された実際のネットワークにpingを実行できました。他にも同様の問題が発生した人がいるのか、それとも私が単にラッキー

答え2

ARP だけが表示され、「実際の」トラフィックが表示されない場合は、iptables に問題がある可能性があります。iptables の FORWARDING ポリシーが ACCEPT に設定されているかどうかを確認してください。代わりにポリシー DROP を使用する場合は、KVM トラフィックを許可するための転送ルールが追加されているかどうかを確認してください。

関連情報