Ubuntu 26.04 で KVM や仮想基盤を扱う場合、Linux bridge を使って物理ネットワークと仮想インターフェイスを接続することがあります。Bridge は、OS 上に作る L2 の接続点です。
この記事では、Ubuntu 26.04 Server で Netplan を使って br0 を作成する基本を整理します。物理 NIC に直接 IP を持たせる構成、bridge 側に IP を移す構成、Bonding や VLAN と組み合わせる構成を分けて考えます。
この記事の位置づけ
Bridge は KVM 専用の機能ではありません。物理 NIC、Bonding、VLAN、仮想マシンの tap interface を同じ L2 セグメントへ接続するための Linux の基本機能です。KVM で使う場合も、まず Ubuntu 26.04 の Netplan bridge として理解します。
Bridge は L2 の接続点である
Linux bridge は、複数のインターフェイスを同じ L2 セグメントへ接続するための仕組みです。仮想マシンの tap interface、物理 NIC、VLAN interface、Bonding interface などを bridge に接続することで、仮想マシンや host が同じネットワークへ参加できます。
| 構成要素 | 役割 | 考え方 |
|---|---|---|
| 物理 NIC | 外部 switch へ接続する実インターフェイス | 単独で使うか、Bonding の slave にする |
| Bonding | 複数 NIC を束ねる論理インターフェイス | 冗長化や LACP の単位になる |
| VLAN | tagged VLAN を扱う論理インターフェイス | NIC、Bonding、Bridge の前後関係を決める |
| Bridge | L2 の接続点 | IP を持つ側、または VM を接続する側になる |
| tap interface | VM から host 側に見える仮想インターフェイス | libvirt などが VM 起動時に接続する |
Bridge を使う時に重要なのは、どの interface に IP アドレスを持たせるかです。bridge を作る場合、通常は物理 NIC ではなく br0 側に IP アドレス、DNS、default route を持たせます。
現在の状態を確認する
既存環境で bridge 化する前に、現在のインターフェイス、route、Netplan 設定を確認します。物理 NIC に IP アドレスが付いている場合、bridge 化すると IP の置き場所が変わります。
ip link
ip address
ip route
ls -l /etc/netplan
sudo cat /etc/netplan/*.yamlKVM を利用している環境では、既に virbr0 が存在することがあります。これは libvirt の NAT 用 bridge であり、外部ネットワークへ VM を直接参加させるための br0 とは役割が異なります。
単純な Bridge の Netplan 例
もっとも単純な例は、物理 NIC を br0 の下に置き、IP アドレスを br0 に持たせる構成です。仮想マシンを物理ネットワークと同じ L2 に接続したい場合の基本形になります。
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces:
- enp1s0
addresses:
- 10.0.10.20/24
- fd00::a00:1020/120
nameservers:
addresses:
- 10.0.10.53
- fd00::a00:1053
routes:
- to: default
via: 10.0.10.1
- to: default
via: fd00::a00:1001
parameters:
stp: false
forward-delay: 0
EOF
sudo chmod 600 /etc/netplan/00-main.yamlこの構成では、enp1s0 は bridge の port になります。IP アドレスを持つのは br0 です。物理 NIC 側に IP を残すと、経路や ARP / ND の見え方が分かりにくくなるため、bridge 構成では IP の持ち主を明確にします。
設定を反映する
Netplan はネットワーク設定を変えるため、特にリモート作業では慎重に反映します。まず生成確認を行い、可能であれば netplan try で戻れる状態を作ります。
sudo netplan generate
sudo netplan try
sudo netplan applynetplan try は一定時間内に確認できなければ設定を戻すため、リモート接続での作業では重要です。ただし環境によっては完全な保険にはならないため、管理コンソールや別経路の接続手段を用意してから作業します。
Bonding の上に Bridge を置く
物理 NIC を冗長化したい場合は、Bonding の上に bridge を置きます。この場合、物理 NIC は bond の slave になり、bridge の port は bond0 になります。
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
dhcp6: false
enp2s0:
dhcp4: false
dhcp6: false
bonds:
bond0:
interfaces:
- enp1s0
- enp2s0
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
bridges:
br0:
interfaces:
- bond0
addresses:
- 10.0.10.20/24
routes:
- to: default
via: 10.0.10.1
nameservers:
addresses:
- 10.0.10.53
parameters:
stp: false
forward-delay: 0
EOF
sudo chmod 600 /etc/netplan/00-main.yamlこの構成では、switch 側も LACP に対応した設定が必要です。サーバー側だけ 802.3ad にしても、switch 側の port-channel 設定と一致していなければ期待通りに動きません。
VLAN と Bridge を組み合わせる
VLAN ごとに仮想マシンを接続したい場合は、VLAN interface の上に bridge を作る構成にできます。たとえば bond0.100 を br100 に接続し、その bridge を VM 用ネットワークとして使います。
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
dhcp6: false
vlans:
vlan100:
id: 100
link: enp1s0
bridges:
br100:
interfaces:
- vlan100
addresses:
- 10.0.100.20/24
routes:
- to: default
via: 10.0.100.1
nameservers:
addresses:
- 10.0.100.53
parameters:
stp: false
forward-delay: 0
EOF
sudo chmod 600 /etc/netplan/00-main.yamlVLAN と bridge を組み合わせる場合は、switch 側の trunk 設定、tagged VLAN、native VLAN の扱いと一致している必要があります。サーバー側の Netplan だけを見ても、通信できない原因は切り分けられません。
Bridge の状態を確認する
設定反映後は、br0 が作成されているか、物理 NIC が bridge の port になっているか、IP アドレスと route が bridge 側に移っているかを確認します。
ip link show br0
ip address show br0
bridge link
bridge vlan
ip route
networkctl status br0bridge link では、どの interface が bridge に参加しているかを確認できます。KVM で VM を起動している場合は、tap interface が bridge に接続されているかも確認します。
KVM で Bridge を使う時の考え方
KVM で bridge を使う場合、VM の仮想 NIC を host 側の bridge に接続します。libvirt の NAT 用 virbr0 ではなく、外部ネットワークに直接出したい VM では br0 のような bridge を使います。
sudo virsh net-list --all
sudo virsh domiflist vm-example
bridge link
ip -s link show br0一方、Open vSwitch や OVN を使う構成では、Linux bridge だけで VM ネットワークを完結させるとは限りません。この記事の bridge は、Ubuntu 側の基本的な L2 接続点として位置づけ、OVS / OVN を使う場合は別の記事で論理スイッチや logical port として整理します。
障害時の切り分け
Bridge の障害は、Bridge 単体ではなく、物理 NIC、Bonding、VLAN、VM interface、switch 側設定がつながって見えます。どの層まで packet が届いているのかを分けて確認することが重要です。
br0に IP アドレスがあるか- 物理 NIC に誤って IP アドレスが残っていないか
- default route が bridge 側に向いているか
- 物理 NIC、Bonding、VLAN、Bridge の MTU が揃っているか
- switch 側の access / trunk / LACP 設定と一致しているか
- KVM の VM interface が想定した bridge を参照しているか
- STP や forward delay の設定が用途に合っているか
書籍
ストーリーで覚える Linux CLI 入門
Ubuntu Server のネットワーク確認、設定ファイル管理、CLI 操作を押さえたい場合の参考書籍です。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
まとめ
Ubuntu 26.04 の Bridge は、物理 NIC、Bonding、VLAN、VM interface を L2 で接続するための基本機能です。重要なのは、どの interface を bridge に入れ、どの interface に IP アドレス、DNS、default route を持たせるかです。
KVM で使う場合も、bridge は KVM 専用の設定ではありません。まず Ubuntu 26.04 の Netplan bridge として構造を理解し、その上で libvirt、Open vSwitch、OVN との役割分担を整理すると、仮想ネットワークの切り分けがしやすくなります。

