皆さん、ここで誰かが私を助けてくれるといいですね。
Ubuntu システムにブリッジを設定して、KVM 内で実行している VM に接続しました。ブリッジは ARP 要求と応答を送信できるので、双方向のトラフィックは可能ですが、IP トラフィックは通過できません。
ネットワークは次のとおりです: vnet0 -> ブリッジ -> eth1 -> pingしようとしているホストを含むVLAN
eth1 を通過しようとすると、ping はすべて失敗します。vnet0、ブリッジ、eth1 インターフェースで TCPDUMP を実行しました。問題は、vnet0 から送信された IP パケットが eth1 から送信されないのに対し、ブリッジ インターフェースは問題なく通過しているように見えることです。また、この接続には USB 3.0 ギガビット アダプターを使用しています。
これまでのトラブルシューティング:
- 何らかの問題が発生する可能性があると考え、sysctl.conf 経由で IPv6 を無効にしました。
- USBアダプタを別のUSBポートに移動しました
- ブリッジを複数回削除および作成しました
- 再起動
困惑しています。なぜ 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 トラフィックを許可するための転送ルールが追加されているかどうかを確認してください。