Linuxでブリッジインタフェース()を作成し、ここにbr0
いくつかのインタフェース(など)を追加するとしますeth0
。tap0
私が理解したように、インターフェイスは私が追加するすべてのインターフェイス/ポートを含む仮想スイッチと同じです。
このインターフェイスに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 link
ip addr
brctl
brctl show
iproute
brctl
# 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 addr
ip link
br0
virbr0
だから何ですかvirbr0-nic
?
これはもともと質問の一部ではありませんが、過去に混乱していたので、ここに2セントを追加します。virbr0-nic
MAC アドレスがブリッジ内の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説明のために。