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

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

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

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

ブリッジへのIPアドレスの割り当てについて議論するいくつかのページを見たことがあります。 MAC割り当ては暗黙的ですか(または自動ですか)?

答え1

ブリッジはイーサネットデバイスなので、MACアドレスが必要です。 Linuxブリッジはスパニングツリープロトコルフレームなどのエントリを生成できます。これらのトラフィックには元のMACアドレスが必要です。

足がない必要IPアドレス。ほとんどの場合、このような状況は発生しません。しかし、多くの場合、可能たとえば、次のようになります。

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

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

この橋ならいいえIP ルーティングが必要な場合は、IP アドレスは不要です。これの例は次のとおりです。

  • ブリッジを使用して外部接続なしでデバイス専用ネットワークを作成する場合、またはブリッジ以外のデバイスを介して外部接続を提供する場合。

答え2

他のネットワークデバイスとともにリストされたブリッジデバイスは、仮想ブリッジを表さず、ブリッジに接続された仮想NICを表します。物理ネットワークデバイスに接続されている物理ブリッジがある場合、ネットワークデバイスに物理ブリッジは表示されません。ただし、他のブリッジと同様に、独自のMACアドレスを持つブリッジに接続されているNICが表示されます。インターネット機器。

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

ネットワークデバイスツール(たとえば、コマンドをiproute2使用)を使用すると、ブリッジに接続されている仮想NICを表示できますが、プログラムを使用して仮想ブリッジ自体を表示することもできます。このコマンドは、すべてのブリッジに関連付けられたインターフェイスを一覧表示します。以下は、Linuxブリッジとtuntapsの使用例です。ip linkip addrbrctlbrctl showiproutebrctl

# 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リストされたインターフェイスは、ホストをブリッジとブリッジにそれぞれ接続するタブインターフェイスvirbr0です。これらの名前のオーバーロードは間違いなく混乱しています。ip addrip linkbr0virbr0

だから何ですかvirbr0-nic

これはもともと質問の一部ではありませんが、過去に混乱していたので、ここに2セントを追加します。virbr0-nicMAC アドレスがブリッジ内のvirbr0独自の MAC アドレスとして使用される仮想インターフェイスです。常に存在するこのインターフェイスは、virbr0ポートがブリッジに動的に追加または削除されたときにMACアドレスが変更されるのを防ぎます。ホストはvirbr0-nicインターフェイスの外部にトラフィックを送信しません。

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

関連情報