手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Bridge の基本設定 – KVM 向け br0 を Netplan で作る

Ubuntu 26.04 ネットワーク設定の関連記事

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 の単位になる
VLANtagged VLAN を扱う論理インターフェイスNIC、Bonding、Bridge の前後関係を決める
BridgeL2 の接続点IP を持つ側、または VM を接続する側になる
tap interfaceVM から 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/*.yaml

KVM を利用している環境では、既に 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 apply

netplan 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.100br100 に接続し、その 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.yaml

VLAN と 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 br0

bridge 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 の設定が用途に合っているか
Ubuntu 26.04 仮想化基盤の関連記事
参考
書籍
参考書籍

ストーリーで覚える 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 との役割分担を整理すると、仮想ネットワークの切り分けがしやすくなります。

Ubuntu 26.04 サーバー管理ガイド
Ubuntu 26.04 Bridge の基本設定 – KVM 向け br0 を Netplan で作る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る