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 port | tag なしで 1 つの VLAN に所属する port | サーバー側で VLAN interface を作らない場合が多い |
| trunk port | 複数 VLAN の tagged frame を通す port | 許可 VLAN と native VLAN を確認する |
| tagged VLAN | VLAN tag 付きで流れる frame | Ubuntu 側では VLAN interface を作る |
| untagged VLAN | tag なしで扱う VLAN | native VLAN や access VLAN と混同しない |
| VLAN interface | enp1s0.100 や vlan100 のような論理 interface | IP を持たせるか bridge に載せるかを決める |
事前に確認する
VLAN 設定の前に、物理 NIC 名、現在の IP、route、既存の Netplan 設定を確認します。加えて、switch 側の port が trunk として対象 VLAN を通しているかを確認します。
ip link
ip address
ip route
ls -l /etc/netplan
sudo cat /etc/netplan/*.yamlswitch 側では、対象 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.1ip -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 の間で揃っていない
書籍
ストーリーで覚える 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 をどこで終端するのかを決めることが設計の要点です。

