私の場合、ブリッジに接続されている物理インターフェイスがインターネットからアクセスできないのはなぜですか?

私の場合、ブリッジに接続されている物理インターフェイスがインターネットからアクセスできないのはなぜですか?

次のネットワークトポロジがあります。

(1.1.8.209)は、em1インターネットを介して通信できる物理インターフェイスです。 2つのVMインスタンスを作成しました。両方ともネットワークIPを使用し、PID 8740両方ともパブリックIPアドレスを使用します。PID 88171.1.8.210/291.1.8.211/29

これで、インターネットを介してem1と通信できます。

しかし、要件があります。両方の仮想マシンに直接アクセスしたいので、em1をbr0

それからこれを実行しました。

brctl addif br0 em1

トポロジは次のとおりです。

ここに画像の説明を入力してください。

ただし、このコマンドを実行するとエラーが発生し、1.1.8.209誰とも通信できなくなります。その後、添付ファイルを削除してbrctl delif br0 em1アクセスできます1.1.8.209

なぜこの問題が発生しますか?よく理解できません。理由を説明してください。

答え1

インターフェイスがブリッジポートになると、ルーティングに参加しなくなります。

基本的な詳細はこのブログで説明されています。Linux ブリッジの適切な分離:

  1. フレームをグローバルまたはデバイス固有のプロトコルハンドラ(たとえば、IPv4、ARP、IPv6)に渡します。

    ブリッジインターフェイスの場合、カーネルはデバイス固有の受信ハンドラを設定します。br_handle_frame()この機能は、STPおよびLLDPフレームを除いて「ルーティング」が有効になっている場合を除き、受信インターフェイスのコンテキストでの追加処理を許可しません。したがって、プロトコルハンドラが実行されないこの場合。

これらのブリッジポートのIPアドレスは着信パケットに関連付けられません。そのままにしておくと、発信パケットの正しいルーティングが中断されます。これらのパケットはまだブリッジポートを介して直接送信できるためです(これ以上送信しない場合)。

実行する必要があるのは、IPアドレスをブリッジ(またはネットワークネームスペースまたは同じ場所にあるvethペアの他の自由端)に接続されている反対側のシステムに移動するか、ブリッジの独自のポートに移動することです。港、すなわち橋自体。移動中に中断が発生する短い時間が常にあるため、ローカルで行われるこの設定への変更はネットワークアクセスに依存してはいけません(たとえば、中断されたパスを使用するシェルを介したリモートキーストロークに依存してはいけません)。 。

以下では、最新の構文を含む最新のツールのみを使用します。

たとえば、

ip address flush dev em1
ip address add 1.1.8.209/29 dev br0

代わりに、別のアプローチは、ブリッジがルーティングに参加せずに追加情報を使用することです。ワイズ同じネットワークネームスペースでルーティングに参加するピアは次のとおりです。

ip address flush dev em1
ip link add name em1twin type veth peer name br0portem1twin
ip link set br0portem1twin master br0 up
ip link set em1twin up
ip address add 1.1.8.209/29 dev em1twin

どちらの場合も、デフォルトのルート(または他のルート)がそのアドレスの存在に依存している場合、そのルートは消えてしまうので、そのルートを再追加する必要があります。

関連情報