犬でも分かるLinuxネットワーク設定(4): ボンディング+仮想ブリッジ

前々回ではボンディング、前回では仮想ブリッジの作成方法を解説しました。じゃあ今回は、ボンディングしたインターフェースを仮想ブリッジに接続できる方法だよね、ってことで、今回はこの方法を解説することにします。

ボンディングと仮想ブリッジをマスター-スレーブで接続する

ボンディングを作成したときは、ネットワークインターフェースをボンディングのスレーブとして接続して、IPアドレスはボンディングのほうに割り当てました。
仮想ブリッジを作成したときは、ネットワークインターフェースを仮想ブリッジのスレーブとして接続して、IPアドレスは仮想ブリッジのほうに割り当てました。

そして、ボンディングと仮想ブリッジを接続したい場合は、ネットワークインターフェースをボンディングのスレーブとして接続し、更にボンディングを仮想ブリッジのスレーブとして接続すれば良いのです。そしてIPアドレスはマスターとなる仮想ブリッジのほうに割り当てます。

各インターフェースのスタック構造は以下の図の通りとなります。ウチのミニPCでは、LAN1,LAN2をボンディングし、更にそれを仮想ブリッジに接続することにします

nmcliコマンドによるボンディングと仮想ブリッジの設定

以下に、ウチのミニPCでボンディングと仮想ブリッジの設定をしたときのnmcliコマンドの例を示します。尚、作業の前に、LAN1,LAN2のコネクションやLAN1,LAN2のボンディングのコネクションが存在する場合は、削除しておきます。削除方法は、前々回の記事と前回の記事を参照して下さい。

仮想ブリッジ,ボンディングインターフェース,ネットワークインターフェースの順番でコネクションを作成する

今回作成する仮想ブリッジのコネクションの名前はbr2とします。ボンディングはbr-slave-bond2、LAN1,LAN2はそれぞれ bond-slave-enp2s0, bond-slave-enp3s0 とします。
nmcliコマンドで以下の通り、「仮想ブリッジ→ボンディングインターフェース→ネットワークインターフェース」の順番でコネクションを作成します。

(1)最初に仮想ブリッジを作成(いつもの手順と同じ)

# nmcli connection add type bridge con-name br2 ifname br2 ★1
Connection 'br2' (13a08407-47b9-498a-b8ca-3dd5a23252ac) successfully added.
# nmcli connection modify br2 ipv4.addresses 192.168.2.200/24 ★2
# nmcli connection modify br2 ipv4.method manual ★3
# nmcli connection modify br2 connection.autoconnect yes ★4
# nmcli connection modify br2 ipv6.method ignore ★5
# nmcli connection modify br2 bridge.stp no
★6

★1: ブリッジのコネクション br1 を作成します。
★2: br1にIPアドレスを割り当てます
★3: br1のIPアドレスを静的にします
★4: システム起動時にbr1を自動的に接続するようにします
★5: bond2のIPv6を無効化します
★6: ブリッジを作成するとデフォルトでスパニングツリーが有効になっています。単独のブリッジとして動かすのでスパニングツリーは不要で、余計なパケットを流すので以下のコマンドで無効化します。

(2) 次にボンディングインターフェースを作成して、br1のブリッジスレーブとして接続する

# nmcli connection add type bond con-name br-slave-bond2 ifname bond2 mode balance-xor ★1
Connection 'br-slave-bond2' (679cc659-13a2-4e19-8277-50f5b593f403) successfully added.
# nmcli connection modify br-slave-bond2 connection.master br2 connection.slave-type bridge
★2

★1: ボンディングのコネクション br-slave-bond2 を作成します。ボンディングモードはbalance-xorとします。ウチのネットワークスイッチがLAGに対応しているのでbalance-xorに設定していますが、ネットワークスイッチ側でLAG設定をしないのであれば、balance-rr または active-backup に設定して下さい。ボンディングに関する記事はこちらをご参考ください。
★2: br-slave-bond2 をブリッジスレーブとしてbr2に接続します。

(3) 次に、ネットワークインターフェースのコネクションを作成して、ボンディング br-slave-bond2のボンディングスレーブとして接続する

# nmcli connection add type ethernet con-name bond-slave-enp2s0 ifname enp2s0 master br-slave-bond2
Connection 'bond-slave-enp2s0' (9ea8cad6-4153-4fcc-8374-ae6527b4b055) successfully added.
# nmcli connection add type ethernet con-name bond-slave-enp3s0 ifname enp3s0 master br-slave-bond2
Connection 'bond-slave-enp3s0' (7398408b-f23c-4a8e-9773-2a12717df23e) successfully added.

(4) 各コネクションを有効化(up)すると同時に、/etc/NetworkManager/system-connections/ 配下に定義ファイルを作成する

# nmcli connection up bond-slave-enp2s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/32)
# nmcli connection up bond-slave-enp3s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/33)
# nmcli connection up br-slave-bond2
Connection successfully activated (controller waiting for ports) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/34)
# nmcli connection up br2
Connection successfully activated (controller waiting for ports) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/37)

(4)のup処理により、/etc/NetworkManager/system-connections/ 配下には以下のファイルが作成されます。

bond-slave-enp2s0.nmconnection
bond-slave-enp3s0.nmconnection
br-slave-bond2.nmconnection
br2.nmconnection

参照されたい方は、以下からダウンロードしてください。
Rocky Linux 9のbondingと仮想ブリッジの同時設定ファイル

最終的なウチのミニPCのネットワーク接続

前回、USB-LANを仮想ブリッジに接続し、今回、LAN1,LAN2をボンディングして仮想ブリッジに接続したことで、最終的にウチのミニPCは、以下のような接続形態となりました。

USB-LANはホームネットワーク、LAN1,LAN2は管理ネットワークに接続しています。ホームネットワークと管理ネットワークは異なるセグメントのネットワークですが、1つのネットワークスイッチ(tp-link製TL-SG108E)に接続して、port VLANを2つ作成して2つのネットワークを分けて運用しています。

意外に正しい手順を探すのは大変..

今回は「仮想ブリッジ→ボンディングインターフェース→ネットワークインターフェース」の順番でコネクションを作成しましたが、「ボンディングと仮想ブリッジを同時に設定する方法」をChatGPTさんに質問をすると「ボンディングインターフェース→仮想ブリッジ」の順番で作成する手順を回答してきます。でも、この手順ではうまくいきませんでした(仮想マシンが仮想ブリッジに接続はできたが、物理ネットワーク経由で別ホストに接続ができなかった)。
スレーブ-マスターの関係にあるコネクションを作成する場合は、上位(マスター)のほうから作成していくのが良さそうかな、と(経験則的に)思った次第です。

広告主へのリンク

オイラが今回のテストに使っているのは、高価なサーバではなくて、安価なミニPC MINISFORUM GK41 というマシンです。LANポートが2つ付いているので、PXEブートのテストにも便利です。

接続しているネットワークスイッチは以下のモデルです。安価だけど、VLANやLAGにも対応しているのでお勉強用ですね。




このブログにおける関連リンク

犬でも分かるLinuxネットワーク
犬でも分かるLinuxネットワーク設定(1): nmcliコマンドの使い方
犬でも分かるLinuxネットワーク設定(2): ボンディング(bonding)
犬でも分かるLinuxネットワーク設定(3): 仮想ブリッジ
犬でも分かるLinuxネットワーク設定(4): ボンディング+仮想ブリッジ
犬でも分かるLinuxネットワーク設定(5):定義ファイルの修正
犬でも分かるLinuxネットワーク設定(6): ルーティングとNAT
犬でも分かるLinuxネットワーク設定(7):firewalldによるアクセス制限
犬でも分かるLinuxネットワーク設定(8):VLAN
犬でも分かるLinuxネットワーク設定(9):IPエイリアス
犬でも分かるLinuxネットワーク設定(10):outboundのアクセス制限
犬でも分かるLinuxネットワーク設定(11):NATポリシーにアクセス制限を設定する

MINISFORUM GK41 ミニPC を買ってみた
コスパの高いネットワークスイッチTL-SG108Eを試す

コメント

タイトルとURLをコピーしました