サーバ上で仮想マシンを利用していると、仮想マシンに物理ネットワークのIPアドレスを割り当てたくなることがあります。その場合は、ホストとなるサーバに仮想ブリッジを作成し、仮想ブリッジを経由して仮想マシンを物理ネットワークに接続させます。今回は仮想ブリッジの作成方法を解説します。
なぜ仮想ブリッジを作成するか
KVMを稼働させると、KVM標準の仮想ブリッジ virbr0 が作成されます(ネットワークアドレスは 192.168.122.0/24)。仮想マシンを作成すると、仮想マシンはこのvirbr0に接続され、仮想マシン間はこのネットワークを経由して接続することができます。また、仮想マシンがホストとなるサーバを経由して外部に接続することもできます。一方で、別のサーバからこの仮想マシンに直接アクセスすることはできません。
このような場合は、ホストとなるサーバの物理インターフェースに接続する仮想ブリッジを作成し、仮想マシンをこのブリッジに接続する(もちろん物理ネットワークのIPアドレスを割り当てる)ことで、別のサーバからこの仮想マシンにアクセスすることが可能となります。
今回は、USB-LAN(物理インターフェース)に接続する仮想ブリッジbr1を作成し、仮想マシンをbr1経由でウチのホームネットワーク(192.168.1.0/24)に接続させてみます。

nmcliコマンドによる仮想ブリッジ設定
以下に、ウチのミニPCで仮想ブリッジを設定したときのnmcliコマンドの例を示します。尚、作業の前に、USB-LANのコネクションはブリッジスレーブとして作成することになるので、USB-LANに対応した既存のコネクション enp0s21f0u2c2 を以下の通り削除しておきます。
# nmcli connection down enp0s21f0u2c2
Connection 'enp0s21f0u2c2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
# nmcli connection delete enp0s21f0u2c2
Connection 'enp0s21f0u2c2' (72aa0063-4141-36b2-b94b-57ff4dc3b468) successfully deleted.
仮想ブリッジを設定する
今回作成する仮想ブリッジの名前はbr1とします。USB-LANに対応するコネクションは br-slave-enp0s21f0u2c2 という名前で新たに作成し、br1のブリッジスレーブとして接続します。nmcliコマンドでは以下の通り実行します。
# nmcli connection add type bridge con-name br1 ifname br1 ★1
Connection 'br1' (af67ad8e-f948-4810-98a6-980ed80e9b5e) successfully added.
# nmcli connection modify br1 ipv4.addresses 192.168.1.200/24 ★2
# nmcli connection modify br1 ipv4.method manual ★3
# nmcli connection modify br1 ipv4.gateway 192.168.1.1 ★4
# nmcli connection modify br1 ipv4.dns 192.168.1.1 ★5
# nmcli connection modify br1 connection.autoconnect yes ★6
# nmcli connection modify br1 ipv6.method ignore ★7
# nmcli connection modify br1 bridge.stp no ★8
# nmcli connection add type ethernet con-name br-slave-enp0s21f0u2c2 ifname enp0s21f0u2c2 master br1 ★9
Connection 'br-slave-enp0s21f0u2c2' (0ead06a2-e323-4412-b5a6-1f8b8a27596b) successfully added.
# nmcli connection up br-slave-enp0s21f0u2c2 ★10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
# nmcli connection up br1 ★10
Connection successfully activated (controller waiting for ports) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/23)
★1: ブリッジのコネクション br1 を作成します。
★2: br1にIPアドレスを割り当てます
★3: br1のIPアドレスを静的にします
★4: このミニPCでは、このUSB-LANポートを経由してデフォルトゲートウェイに接続するので、br1にデフォルトゲートウェイのIPアドレスを設定します
★5: 同様にbr1にDNSサーバのIPアドレスを設定します
★6: システム起動時にbr1を自動的に接続するようにします
★7: bond2のIPv6を無効化します
★8: ブリッジを作成するとデフォルトでスパニングツリーが有効になっています。単独のブリッジとして動かすのでスパニングツリーは不要で、余計なパケットを流すので以下のコマンドで無効化します。
★9: br1をマスターとするイーサネットインターフェースのコネクション br-slave-enp0s21f0u2c2 を作成します。
★10: br1, br-slave-enp0s21f0u2c2のコネクションを有効化(up)すると同時に、br1.nmconnection, br-slave-enp0s21f0u2c2.nmconnection ファイルを作成します
上記のコマンドを実行した後、/etc/NetworkManager/system-connections/ 配下を確認すると以下のファイルが作成されています。
br-slave-enp0s21f0u2c2.nmconnection
br1.nmconnection
参照されたい方は、以下からダウンロードしてください。
Rocky Linux 9の仮想ブリッジ設定ファイル
nmcli connection show コマンドを実行すると、コネクションの一覧は以下の通りになっています。
NAME UUID TYPE DEVICE
br1 af67ad8e-f948-4810-98a6-980ed80e9b5e bridge br1
br-slave-enp0s21f0u2c2 0ead06a2-e323-4412-b5a6-1f8b8a27596b ethernet enp0s21f0u2c2
lo a01cfad5-56ea-409c-a892-be800ebb1596 loopback lo
仮想ブリッジを作成した後、仮想マシンを仮想ブリッジに接続する方法については、以下の記事で詳細しているのでこちらをご覧下さい。
・犬でも分かるKVM(2): 外部ネットワークとブリッジ接続する
広告主へのリンク
オイラが今回のテストに使っているのは、高価なサーバではなくて、安価なミニPC MINISFORUM GK41 というマシンです。LANポートが2つ付いているので、PXEブートのテストにも便利です。
今回使用したUSB-LANは以下のUSB-LAN変換アダプタです。USB接続ですが、OSインストール時から自動的にLANポートとして認識され、通常のLANポートとして使用することができます。
![]()
このブログにおける関連リンク
犬でも分かる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 を買ってみた
・USB-LAN変換アダプタを試してみる


コメント