【KVM】ブリッジネットワーク(Bridge)を設定する方法(CLI編)

仮想環境

 NAT接続のままでは「外部のPCから仮想マシンに直接SSH接続する」「仮想マシンをWebサーバーとして一般公開する」といったことができません。
 仮想マシンをホストサーバーと同じLANに参加させ、独自のIPアドレスを持たせるには「ブリッジ接続(Network Bridge)」の設定が必要です。

 今回は、GUIを一切使わず、nmcli コマンドだけで完結する仮想ブリッジの構築手順を解説します。

⚠️ 作業前の重要注意(ネットワーク切断リスク)
 リモート環境(SSH経由)でホストサーバーの物理ネットワーク設定を変更する場合、設定を間違えるとホストサーバー自体に二度と接続できなくなる(完全な通信遮断)リスクがあります。

  • 可能な限り、ディスプレイとキーボードを直接繋いだローカル環境(コンソール環境)で作業してください。
  • リモート環境で作業する場合は、タイマーを使って数分後に自動的に設定を元に戻す仕組み(nmcli connection up の自動復旧を設定するなど)を用意するか、最悪の場合に備えてサーバーの強制再起動やシリアルコンソールが使える状態で行ってください。

1. 物理インターフェース名の確認

まずは、現在インターネットやLANに接続しているホストサーバーの「物理ネットワークインターフェース名(NIC名)」を確認します。

[root@almalinux ~]# nmcli device

DEVICE  TYPE      STATE    CONNECTION 
enp1s0  ethernet  接続済み  enp1s0     
lo      loopback  管理外    --
virbr0  bridge    管理外    --
  • この例では、外部と通信している物理デバイス名は enp1s0、そのコネクション名は enp1s0 であることが分かります。
  • ※環境によって eth0enp1s0f0 など名前が異なりますので、自身の環境に合わせて読み替えてください。

2. 仮想ブリッジ(br0)の作成

新しく作成する仮想ブリッジの名前を br0 として定義します。

[root@almalinux ~]# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0

 ブリッジ自体にホストサーバーのIPアドレスを引き継がせるため、ここで静的IPアドレス(固定IP)を割り当てます。

[root@almalinux ~]# nmcli connection modify br0 ipv4.addresses "192.168.10.100/24"
[root@almalinux ~]# nmcli connection modify br0 ipv4.gateway "192.168.10.1"
[root@almalinux ~]# nmcli connection modify br0 ipv4.dns "8.8.8.8"
[root@almalinux ~]# nmcli connection modify br0 ipv4.method manual
  • ※IPアドレス、ゲートウェイ、DNSの値は必ずお使いのルーター環境・ネットワークセグメントに合わせて変更してください。

3. 物理インターフェースをブリッジの配下に設定(スレーブ化)

 既存の物理デバイス(例: enp3s0)を、先ほど作った仮想ブリッジ br0 の「子機(スレーブ)」として紐付けます。

[root@almalinux ~]# nmcli connection add type bridge-slave autoconnect yes con-name br0-slave ifname enp1s0 master br0
  • ifname enp1s0 の部分には、手順1で確認したご自身の物理デバイス名を入力してください。

4. ネットワーク設定の有効化(切り替え)

 ここが最も通信切断のリスクが高いステップです。既存の物理コネクションを無効化し、新しく作成したブリッジコネクションを有効化します。

[root@almalinux ~]# nmcli connection down enp1s0 && nmcli connection up br0
  • 切り替えが成功すると、数秒後に通信が復旧します。
  • 再度 nmcli device を実行し、物理デバイス(enp1s0)の接続先(CONNECTION)が br0-slave に変わっていることを確認してください。

5. KVM(libvirt)にブリッジネットワークを認識させる

 OS側のブリッジ設定が完了したら、次はKVM(libvirt)側でこのブリッジを利用できるように定義ファイル(XML)を作成します。

① 定義ファイルの作成

適当な場所(例: /tmp/host-bridge.xml)に、以下の内容でファイルを作成します。

<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

② libvirtへネットワークを登録・有効化

作成したXMLファイルを使って、KVMに新しいネットワーク host-bridge を登録します。

# ネットワークの定義
[root@almalinux ~]# virsh net-define /tmp/host-bridge.xml

# ネットワークの自動起動設定
[root@almalinux ~]# virsh net-autostart host-bridge

# ネットワークの起動
[root@almalinux ~]# virsh net-start host-bridge

正常にアクティブになっているか一覧を表示して確認します。

[root@almalinux ~]# virsh net-list --all

 名前      状態     自動起動     永続
---------------------------------------------
 default   動作中   はい (yes)   はい (yes)

host-bridge動作中 (active)自動起動 (yes) になっていれば成功です!

コメント