Ubuntu 26.04 の KVM ホストで、仮想マシンをネットワークへ接続するための Bridge ネットワークを整理します。VM は仮想 NIC を持つだけでは外部と通信できないため、ホスト側で bridge を作り、物理 NIC や VLAN、OVS / OVN との接続関係を決めます。
この記事では、まず Linux bridge を使った基本構成を扱い、そのあと Open vSwitch と OVN localnet を使う場合の確認ポイントをまとめます。実際の環境では構成管理で固定していても、手動で確認できる単位を理解しておくと、VM の疎通トラブルを切り分けやすくなります。
Bridge ネットワークの考え方
KVM では、VM の仮想 NIC をホスト上の bridge に接続します。bridge は仮想スイッチのように動作し、VM 同士、または VM と物理ネットワークを接続します。
br0のような Linux bridge を作る- 物理 NIC を bridge の配下に入れる
- ホスト自身の IP アドレスは物理 NIC ではなく bridge 側に持たせる
- VM 作成時に
--network bridge=br0のように指定する - VLAN や複数ネットワークを扱う場合は bridge を分けるか、OVS / OVN を使う
現在の NIC と bridge を確認する
設定前に、ホストの NIC 名、IP アドレス、既存 bridge の有無を確認します。
ip -br link
ip -br addr
bridge link
bridge vlan show
virsh net-list --all物理 NIC を bridge に入れると、その NIC に直接設定していた IP アドレスは bridge 側へ移します。リモート作業中に間違えると接続が切れるため、コンソールや別経路を確保してから変更します。
Netplan で Linux bridge を作成する
例として、物理 NIC enp1s0 を br0 に接続し、ホスト自身の IP アドレスを br0 に持たせます。IP アドレスやゲートウェイは環境に合わせて変更してください。
sudo tee /etc/netplan/50-kvm-bridge.yaml >/dev/null <<'EOF'
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces:
- enp1s0
addresses:
- 192.0.2.10/24
routes:
- to: default
via: 192.0.2.1
nameservers:
addresses:
- 192.0.2.53
parameters:
stp: false
forward-delay: 0
EOF
sudo netplan generate
sudo netplan trynetplan try で疎通が維持できることを確認してから適用します。
sudo netplan apply
ip -br addr show br0
bridge link show
ping -c 3 192.0.2.1VM 作成時に bridge を指定する
VM を作成するときは、ネットワーク指定で bridge を指定します。ここでは実行例だけを示します。ISO や cloud-init を使った詳細な VM 作成は、後続の VM 作成記事で整理します。
sudo virt-install --name test-vm --memory 2048 --vcpus 2 --disk size=20,bus=virtio --os-variant ubuntu26.04 --network bridge=br0,model=virtio --graphics none --console pty,target_type=serial --cdrom /var/lib/libvirt/images/iso/ubuntu-26.04-live-server-amd64.iso作成済み VM のインターフェースは virsh domiflist で確認できます。
virsh list --all
virsh domiflist test-vm
ip link show master br0
bridge fdb show br br0libvirt の default network との違い
libvirt には default という NAT 型ネットワークがあります。検証用には便利ですが、VM を同一 L2 セグメントへ参加させたい場合や、外部から直接 VM へ接続したい場合は bridge 接続の方が扱いやすくなります。
virsh net-list --all
virsh net-info default
virsh net-dumpxml default- NAT 型: VM はホスト経由で外へ出る。外部から VM へ直接入るには追加設定が必要
- bridge 型: VM が物理ネットワーク上のホストに近い形で見える
- 検証環境では NAT、本番や常設 VM では bridge という使い分けもできる
VLAN を扱う場合
VLAN を使う場合は、物理 NIC の VLAN サブインターフェースを作り、その VLAN ごとに bridge を作る構成が分かりやすいです。
sudo tee /etc/netplan/51-kvm-vlan-bridge.yaml >/dev/null <<'EOF'
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: false
dhcp6: false
vlans:
enp1s0.100:
id: 100
link: enp1s0
bridges:
br100:
interfaces:
- enp1s0.100
dhcp4: false
dhcp6: false
parameters:
stp: false
forward-delay: 0
EOF
sudo netplan generate
sudo netplan apply
ip -br link show br100 enp1s0.100この構成では、VM 作成時に bridge=br100 を指定すると VLAN 100 側へ接続できます。複数 VLAN を扱う場合は、ネットワークごとに bridge 名と用途を明確にしておくと運用しやすくなります。
Open vSwitch を使う場合
Open vSwitch を使う場合は、provider bridge を作成し、物理 NIC を port として追加します。VLAN trunk を扱う場合は、port 側に trunks を設定します。
sudo ovs-vsctl add-br br-provider
sudo ovs-vsctl add-port br-provider enp1s0
sudo ovs-vsctl set Interface br-provider mtu_request=1500
sudo ovs-vsctl set Interface enp1s0 mtu_request=1500
sudo ovs-vsctl showVLAN trunk を明示する場合は、対象 port に trunks を設定します。
sudo ovs-vsctl set Port enp1s0 trunks=100,200,300
sudo ovs-vsctl list Port enp1s0OVN localnet を使う場合
OVN で物理ネットワークへ接続する場合は、OVS の bridge mapping と、OVN logical switch の localnet port を対応させます。ここでは概念を確認するための最小例を示します。
sudo ovs-vsctl set Open_vSwitch . external_ids:ovn-bridge-mappings=provider:br-provider
sudo ovn-nbctl --may-exist ls-add ls-provider
sudo ovn-nbctl --may-exist lsp-add ls-provider ln-provider
sudo ovn-nbctl lsp-set-type ln-provider localnet
sudo ovn-nbctl lsp-set-options ln-provider network_name=provider
sudo ovn-nbctl lsp-set-addresses ln-provider unknown
sudo ovn-nbctl show
sudo ovs-vsctl get Open_vSwitch . external_idsOVN localnet では、network_name と OVS 側の ovn-bridge-mappings が対応します。ここがずれていると、論理スイッチを作っても物理ネットワークへ出られません。
確認ポイント
- ホスト自身の IP アドレスが物理 NIC ではなく bridge 側にあること
bridge linkで物理 NIC が bridge に接続されていること- VM の NIC が意図した bridge に接続されていること
- VLAN 構成では VLAN ID と bridge 名の対応が分かること
- OVS を使う場合は provider bridge と port が存在すること
- OVN を使う場合は
ovn-bridge-mappingsと localnet のnetwork_nameが一致すること
Bridge ネットワークが整理できると、VM 作成時にどのネットワークへ接続するかを明確に指定できます。次は、同じ構成を何度も作れるように VM テンプレートを準備します。




