ブリッジインターフェースにMACアドレスとIPアドレスを割り当てる理由

ブリッジインターフェースにMACアドレスとIPアドレスを割り当てる理由

たとえば、Linux でブリッジ インターフェイス ( br0) を作成し、それにいくつかのインターフェイス ( eth0tap0など) を追加するとします。私の理解では、このインターフェイスは、追加したすべてのインターフェイス/ポートとともに仮想スイッチのように動作します。

そのインターフェースに MAC アドレスと IP アドレスを割り当てる意味は何ですか? インターフェースは、他のポートがホスト マシンにアクセスできるようにするスイッチ/ブリッジ上の追加ポートとして機能しますか?

ブリッジに IP アドレスを割り当てる方法について説明しているページをいくつか見ました。MAC アドレスの割り当ては暗黙的 (または自動的) ですか?

答え1

ブリッジはイーサネット デバイスであるため、MAC アドレスが必要です。Linux ブリッジはスパニング ツリー プロトコル フレームなどを生成することができ、そのようなトラフィックには送信元の MAC アドレスが必要です。

橋は必要とするIPアドレス。IPアドレスがない状況も多々あります。しかし、多くの場合、5月次のようなものがあります:

  • ブリッジがコンテナまたは仮想マシンのグループ (または物理インターフェース) のデフォルト ゲートウェイとして機能している場合。この場合、IP アドレスが必要です (ルーティングは IP レイヤーで行われるため)。

  • 「プライマリ」NIC がブリッジのメンバーである場合、ブリッジは外部との接続になります。この場合、(たとえば) に IP アドレスを割り当てるのではなくeth0、ブリッジ デバイスに IP アドレスを割り当てます。

橋がないIP ルーティングに必要な場合は、IP アドレスは必要ありません。この状況の例は次のとおりです。

  • ブリッジが、外部接続のないデバイスのプライベート ネットワークを作成するために使用されている場合、またはブリッジ以外のデバイスを通じて外部接続が提供される場合。

答え2

他のネットワーク デバイスと一緒にリストされているブリッジ デバイスは、仮想ブリッジを表すものではなく、ブリッジに接続されている仮想 NIC を表します。物理ネットワーク デバイスに接続された物理ブリッジがある場合、ネットワーク デバイスにも物理ブリッジは表示されませんが、ブリッジに接続されている NIC は表示されます。もちろん、他のネットワーク デバイスと同様に、独自の MAC アドレスを持っています。

ブリッジ デバイス (これも実際には仮想ブリッジに接続された仮想 NIC) に IP アドレスを割り当てると、ホスト デバイスはブリッジによって作成されたサブネットとそれに接続されたすべてのデバイスにパケットをルーティングできるようになります。すばらしいですね。

などのネットワーク デバイス ツールiproute2(ip linkおよびip addrコマンドを使用) を使用すると、ブリッジに接続されている仮想 NIC を表示できますが、 プログラムを使用して仮想ブリッジ自体を表示することもできますbrctl。コマンドは、すべてのブリッジとそれらに接続されているインターフェイスを一覧表示します。 以下は、 Linux ブリッジと tuntaps でおよびをbrctl show使用する例です。iproutebrctl

# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip tuntap add dev tap1 mode tap
# ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev br0
# ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev tap0
# ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev tap1
# brctl addif br0 tap0
# brctl addif br0 tap1
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.2e22e593fe8c       no              tap0
                                                        tap1
# ip addr show to 10.0.0.0/24
11: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 10.0.0.1/24 brd 10.0.0.255 scope global br0
       valid_lft forever preferred_lft forever
12: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
    inet 10.0.0.2/24 brd 10.0.0.255 scope global tap0
       valid_lft forever preferred_lft forever
13: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
    inet 10.0.0.3/24 brd 10.0.0.255 scope global tap1
       valid_lft forever preferred_lft forever

brctl show出力の「インターフェース」の下にリストされているのは、他のブリッジの作成時に自動的に追加されたインターフェイスに加えて、ブリッジにbr0接続されたインターフェイスも追加されます。(Linux では、デバイスが接続されていない仮想ブリッジの作成は許可されず、デバイスのないブリッジは自動的に破棄されるようです。) 記録のために言っておきますが、私はカーネルでこれについて調査したことはありませんし、ネットワークの専門家でもありません。Linux での仮想ブリッジのかなりわかりにくい実装を説得力を持って説明しているように思われたので、これを投稿しました。仮想ブリッジ自体には MAC アドレスさえないと思います。

答え3

はい、ブリッジ インターフェイスは追加ポートとして機能します。

man 5 systemd.netdev

ブリッジ デバイスはソフトウェア スイッチであり、その各スレーブ デバイスとブリッジ自体はスイッチのポートです。

答え4

および にリストされているbr0およびインターフェースは、それぞれホストをブリッジおよびブリッジに接続するタップ インターフェースです。このように名前が多すぎると、混乱を招く可能性があります。virbr0ip addrip linkbr0virbr0

それで、 とは何ですかvirbr0-nic?

これは元の質問の一部ではありませんでしたが、以前私を混乱させたので、ここで私の意見を述べたいと思います。 は、ブリッジvirbr0-nicが自身の MAC アドレスとして MAC アドレスとして使用するダミー インターフェイスですvirbr0。 この常に存在するインターフェイスは、ブリッジのポートが動的に追加または削除されたときに の MAC アドレスが変更されないようにするためにありますvirbr0。 ホストはインターフェイスからトラフィックを送信しませんvirbr0-nic

見るhttps://backreference.org/2010/07/28/linux-bridge-mac-addresses-and-dynamic-portsそしてhttps://www.redhat.com/archives/libvirt-users/2012-9月/msg00038.html説明のために。

関連情報