手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 VLAN の基本設定 – Netplan で tagged VLAN を扱う

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

Ubuntu 26.04 で VLAN を使う場合、重要なのは「IP アドレスを増やすこと」ではありません。VLAN は、1 本の物理リンクや Bonding の上に複数の L2 セグメントを通すための tag 分離です。

この記事では、Netplan で VLAN interface を作成し、物理 NIC、Bonding、VLAN ID、switch 側 trunk / tagged VLAN、IP アドレス、default route をどう対応させるかを整理します。

この記事の位置づけ

VLAN は IP セグメントそのものではなく、Ethernet frame に VLAN tag を付けて L2 セグメントを分ける仕組みです。Ubuntu 側の Netplan 設定だけでなく、対向 switch の access / trunk / tagged / untagged 設定と合わせて考えます。

VLAN は L2 の tag 分離である

VLAN を使うと、1 本の物理リンク上で複数の L2 セグメントを扱えます。ただし、VLAN ID が同じでも、switch 側で通していなければ通信できません。サーバー側と switch 側の設定が一致して初めて成立します。

用語意味確認すること
access porttag なしで 1 つの VLAN に所属する portサーバー側で VLAN interface を作らない場合が多い
trunk port複数 VLAN の tagged frame を通す port許可 VLAN と native VLAN を確認する
tagged VLANVLAN tag 付きで流れる frameUbuntu 側では VLAN interface を作る
untagged VLANtag なしで扱う VLANnative VLAN や access VLAN と混同しない
VLAN interfaceenp1s0.100vlan100 のような論理 interfaceIP を持たせるか bridge に載せるかを決める

事前に確認する

VLAN 設定の前に、物理 NIC 名、現在の IP、route、既存の Netplan 設定を確認します。加えて、switch 側の port が trunk として対象 VLAN を通しているかを確認します。

コマンド
ip link
ip address
ip route
ls -l /etc/netplan
sudo cat /etc/netplan/*.yaml

switch 側では、対象 port が trunk または tagged VLAN を通す設定になっている必要があります。access port のままでは、tagged frame は期待通りに通りません。

  • 親 interface は物理 NIC か Bonding か
  • VLAN ID は switch 側と一致しているか
  • その VLAN interface に IP を持たせるのか
  • VLAN の上に Bridge を作るのか
  • default route はどの VLAN に置くのか
  • MTU は物理側、VLAN 側、経路上で整合しているか

物理 NIC の上に VLAN を作る

もっとも単純な例は、物理 NIC の上に VLAN interface を作り、その VLAN interface に IP アドレスを持たせる構成です。

設定ファイル例
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
      addresses:
        - 10.0.100.20/24
        - fd00::a00:6420/120
      nameservers:
        addresses:
          - 10.0.100.53
          - fd00::a00:6453
      routes:
        - to: default
          via: 10.0.100.1
        - to: default
          via: fd00::a00:6401
EOF
sudo chmod 600 /etc/netplan/00-main.yaml

この構成では、IP アドレスを持つのは vlan100 です。親 interface の enp1s0 には IP アドレスを持たせません。

Bonding の上に VLAN を作る

物理 NIC を冗長化した上で VLAN を扱う場合は、bond0 の上に VLAN interface を作ります。switch 側では LACP / LAG と trunk VLAN の両方を正しく設定する必要があります。

設定ファイル例
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
  vlans:
    vlan100:
      id: 100
      link: bond0
      addresses:
        - 10.0.100.20/24
      routes:
        - to: default
          via: 10.0.100.1
      nameservers:
        addresses:
          - 10.0.100.53
EOF
sudo chmod 600 /etc/netplan/00-main.yaml

この構成では、物理 NIC、Bonding、VLAN の順に階層ができます。障害時は、物理 link、bond、VLAN、route のどこで崩れているかを分けて確認します。

複数 VLAN と default route

複数 VLAN を作る場合、すべての VLAN に default route を置くと経路が曖昧になります。通常は、管理用 VLAN、サービス用 VLAN、ストレージ用 VLAN のように用途を分け、default route をどこに置くかを明確にします。

設定ファイル例
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
      addresses:
        - 10.0.100.20/24
      routes:
        - to: default
          via: 10.0.100.1
    vlan200:
      id: 200
      link: enp1s0
      addresses:
        - 10.0.200.20/24
EOF
sudo chmod 600 /etc/netplan/00-main.yaml

複数の default route が必要な場合は、単純な VLAN 設定ではなく policy based routing として整理した方が安全です。

設定を反映する

Netplan の反映はネットワーク断を伴う可能性があります。特に VLAN は switch 側設定と一致していないと通信が戻らないため、管理コンソールや別経路を用意してから作業します。

コマンド
sudo netplan generate
sudo netplan try
sudo netplan apply

反映後に確認する

設定後は、VLAN interface が作成されているか、IP アドレスが意図した interface に付いているか、route が正しいかを確認します。

コマンド
ip -d link show
ip address show vlan100
ip route
networkctl status vlan100
ping -c 3 10.0.100.1

ip -d link show では VLAN ID や親 interface を確認できます。通信できない場合は、Ubuntu 側だけでなく switch 側の trunk / allowed VLAN / native VLAN を確認します。

Bridge / KVM と組み合わせる境界

KVM で VLAN を使う場合、VLAN interface に直接 IP を持たせるのではなく、その上に bridge を作り、VM を bridge に接続する構成があります。

構成使い方考え方
vlan100 に IP を持たせるhost が VLAN 100 で通信するサーバー自身の通信に使う
vlan100 の上に br100 を作るVM を VLAN 100 に接続する仮想マシン用の L2 接続点にする
OVS provider port に trunk を設定するOVS / OVN で VLAN を扱うKVM ネットワークを論理化する

どの構成でも、VLAN は L2 tag の扱いです。KVM、Bridge、OVS、OVN のどこで VLAN を終端するのかを決めないと、設定は動いていても設計の責任分界が曖昧になります。

よくある見落とし

  • VLAN を IP セグメントそのものだと思っている
  • switch port が access のままなのに、Ubuntu 側で tagged VLAN を作っている
  • VLAN ID は合っているが、switch 側の allowed VLAN に含まれていない
  • 複数 VLAN に default route を置いて経路が曖昧になっている
  • Bonding、VLAN、Bridge の階層を決めずに設定している
  • MTU が物理 NIC、Bonding、VLAN、Bridge、VM の間で揃っていない
Ubuntu 26.04 ネットワーク設定の関連記事
参考
書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Ubuntu Server のネットワーク確認、CLI 操作、設定ファイル管理を押さえたい場合の参考書籍です。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

まとめ

Ubuntu 26.04 の VLAN 設定では、VLAN を IP アドレスの追加手段としてではなく、L2 の tag 分離として理解することが重要です。Netplan では、物理 NIC や Bonding の上に VLAN interface を作り、その VLAN に IP を持たせるか、Bridge に載せるかを決めます。

VLAN は Ubuntu 側だけでは完結しません。switch 側の access / trunk / tagged / untagged、allowed VLAN、native VLAN、LACP、MTU と合わせて成立します。KVM や OVS / OVN と組み合わせる場合も、VLAN をどこで終端するのかを決めることが設計の要点です。

Ubuntu 26.04 サーバー管理ガイド
Ubuntu 26.04 VLAN の基本設定 – Netplan で tagged VLAN を扱う

コメントを残す

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

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

トップへ戻る