UbuntuでVLANを設定する方法

ネットワーク

「UbuntuでVLANを設定したい」と検索してたどり着いた方へ。結論から言うと、ip link add link eth0 name eth0.10 type vlan id 10 の1コマンドで作成できます。

VLANは物理NICを論理的に分割する技術で、1台のサーバーで複数のネットワークセグメントを扱いたいときに使います。自宅サーバーやVPSでDockerコンテナや仮想マシンを動かすなら、VLANを知っておくと構成の幅が広がります。

本記事では Ubuntu 24.04 LTS(Docker公式イメージ)で実際にコマンドを実行した結果をベースに、VLANの設定手順をステップごとに解説します。Ubuntu 22.04でも同じ手順で動作します。

この記事のポイント

  • Ubuntu 24.04 では iproute2 6.1.0-1ubuntu6.3 が標準で入っており、ip link コマンドだけでVLANを作成できる(実測済み)
  • vconfig コマンドは非推奨。新しいサーバーでは ip link add type vlan を使うこと
  • VLANインターフェースは /proc/net/vlan/config で一覧確認できる(実測で eth0.10 / eth0.20 の表示を確認)
  • 永続化には netplan(Ubuntu 20.04以降の標準)または nmcli(NetworkManager)を使う
  • Ubuntu 22.04 と 24.04 でコマンド構文は変わらず、どちらも同じ手順で設定できる

目次

  1. VLANとは(概念図で理解する)
  2. 前提環境・準備
  3. 手順1:パッケージをインストールする
  4. 手順2:8021qカーネルモジュールを読み込む
  5. 手順3:ip linkでVLANインターフェースを作成する
  6. 手順4:設定を確認する
  7. 手順5:netplanで永続化する
  8. 手順6:NetworkManager(nmcli)で設定する
  9. Ubuntu 22.04 / 24.04 バージョン比較
  10. よくあるエラーと解決策
  11. まとめ

VLANとは(概念図で理解する)

VLAN(Virtual LAN、仮想LAN)は、物理的なNICを複数の仮想インターフェースに分割する技術です。802.1Q規格でイーサネットフレームに「VLAN ID」という4バイトのタグを付け、スイッチやOSがそのIDでトラフィックを分離します。

たとえば1台のVPSに eth0 という物理NICがあれば、そこから eth0.10(VLAN 10 / 192.168.10.x)と eth0.20(VLAN 20 / 192.168.20.x)という2つの仮想インターフェースを作れます。DockerコンテナやVMのネットワークを分けたいときに便利です。

VLANの仕組み:1枚の物理NICから複数の仮想ネットワークを作る(概念図)
VLANの仕組み:1枚の物理NICから複数の仮想ネットワークを作る(概念図)

前提環境・準備

  • OS:Ubuntu 24.04 LTS(Ubuntu 22.04 LTSでも同手順)
  • 実行権限:sudo が使えるユーザー(またはroot)
  • 物理NIC名:環境によって eth0 / ens3 / enp3s0 など異なります。ip link show で事前に確認してください

注意

本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ)で実際に実行した出力をもとにしています。VPS・仮想マシン・実機でも同じ手順で動作しますが、NIC名が異なることがあります。

手順1:パッケージをインストールする

VLAN設定に必要なパッケージは iproute2 のみです。Ubuntu 24.04 の最小インストールにも含まれていますが、念のため確認しましょう。




ubuntu@linuxlab: ~
$ ip -V
ip utility, iproute2-6.1.0, libbpf 1.3.0

# iproute2 がない場合はインストール
$ sudo apt update && sudo apt install -y iproute2

オプションとして vlan パッケージをインストールすると、/etc/network/interfaces(ifupdown方式)でのVLAN設定が便利になります。ただし、iproute2だけでも ip link コマンドによるVLAN設定は完全に動作します

apt install vlan の実行ログ(Ubuntu 24.04 実測)
apt install vlan の実行ログ(Ubuntu 24.04 実測)

実際にインストールすると vlan 2.0.5ubuntu5iproute2 6.1.0-1ubuntu6.3 がインストールされます(2026-06-13 時点)。vconfig コマンドも含まれますが、「Warning: vconfig is deprecated」と明示されており、今後削除される可能性があります。新しい設定では必ず ip link を使いましょう。

手順2:8021qカーネルモジュールを読み込む

VLANを使うには 8021q カーネルモジュールが必要です。最近のUbuntuカーネルでは自動でロードされますが、明示的に読み込んでおくと確実です。




ubuntu@linuxlab: ~
# モジュールを読み込む
$ sudo modprobe 8021q

# 読み込みを確認
$ lsmod | grep 8021q
8021q 36864 0
garp 16384 1 8021q
mrp 20480 1 8021q

再起動後も自動で読み込まれるようにする場合は、次のコマンドでモジュール設定ファイルに追記します。




ubuntu@linuxlab: ~
$ echo “8021q” | sudo tee /etc/modules-load.d/8021q.conf
8021q

手順3:ip linkでVLANインターフェースを作成する

いよいよVLANインターフェースを作成します。ここでは eth0 上に VLAN ID 10 と VLAN ID 20 の2つを作ります(NIC名は自分の環境に合わせてください)。




ubuntu@linuxlab: ~
# VLAN 10 を作成する(eth0.10 という名前で作成)
$ sudo ip link add link eth0 name eth0.10 type vlan id 10

# VLAN 20 を作成する
$ sudo ip link add link eth0 name eth0.20 type vlan id 20

# インターフェースを有効化する
$ sudo ip link set eth0.10 up
$ sudo ip link set eth0.20 up

# IPアドレスを割り当てる
$ sudo ip addr add 192.168.10.1/24 dev eth0.10
$ sudo ip addr add 192.168.20.1/24 dev eth0.20

実際にUbuntu 24.04(Docker –privilegedコンテナ)で実行した結果がこちらです。vlan protocol 802.1Q id 10 <REORDER_HDR> という表示で802.1Q VLANとして認識されていることが確認できました。

ip link addでVLANインターフェースを作成(Ubuntu 24.04 実測)
ip link addでVLANインターフェースを作成(Ubuntu 24.04 実測)

コマンド構文のポイントは3つです:

  • link eth0:VLANを乗せる親インターフェース
  • name eth0.10:作成するVLANインターフェースの名前(任意だが 親名.VLAN_ID が慣例)
  • type vlan id 10:VLAN IDの指定(1〜4094)

手順4:設定を確認する

VLANインターフェースが正しく作成されたかを確認します。




ubuntu@linuxlab: ~
# VLANインターフェースの詳細確認
$ ip -d link show eth0.10
13: eth0.10@eth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 26:0c:32:ed:e7:d5 brd ff:ff:ff:ff:ff:ff
vlan protocol 802.1Q id 10 <REORDER_HDR>

# カーネルのVLAN管理テーブルを確認
$ cat /proc/net/vlan/config

/proc/net/vlan/config で両方のVLANが登録されていることを実測で確認しました。ルーティングテーブルにも自動で追加されています。

/proc/net/vlan/config でVLAN一覧を確認(Ubuntu 24.04 実測)
/proc/net/vlan/config でVLAN一覧を確認(Ubuntu 24.04 実測)

正直、このコマンドを知らずに「VLANが動いているか分からない」と詰まる方が多いです。ip link show type vlan でも同様に確認できます。




ubuntu@linuxlab: ~
$ ip link show type vlan
13: eth0.10@eth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
link/ether 26:0c:32:ed:e7:d5 brd ff:ff:ff:ff:ff:ff
14: eth0.20@eth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
link/ether 26:0c:32:ed:e7:d5 brd ff:ff:ff:ff:ff:ff

手順5:netplanで永続化する

ip link add で作ったVLANは再起動すると消えてしまいます。Ubuntu 20.04以降の標準ツールである netplan を使って永続化しましょう。

設定ファイルは /etc/netplan/ 配下にあります(通常 00-installer-config.yaml または 01-netcfg.yaml など)。




ubuntu@linuxlab: ~
# 現在の設定ファイルを確認
$ ls /etc/netplan/
00-installer-config.yaml

$ sudo nano /etc/netplan/00-installer-config.yaml

netplan の YAML ファイルに以下のように VLAN の設定を追加します:




/etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
vlans:
eth0.10:
id: 10
link: eth0
addresses:
– 192.168.10.1/24
eth0.20:
id: 20
link: eth0
addresses:
– 192.168.20.1/24

ファイルを保存したら、設定を適用します。




ubuntu@linuxlab: ~
# 設定の文法チェック
$ sudo netplan try
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration

# 問題なければ適用
$ sudo netplan apply

注意:netplan apply 実行前に確認

リモートからSSH接続中に netplan apply を実行すると、ネットワーク設定が変わってSSH接続が切断される場合があります。netplan try を先に使うと120秒以内にEnterを押さなければ自動で元の設定に戻るので安全です。

手順6:NetworkManager(nmcli)で設定する

デスクトップ版Ubuntuや、NetworkManagerが有効なサーバーでは nmcli を使ったVLAN設定も一般的です。




ubuntu@linuxlab: ~
# VLAN接続を作成する
$ sudo nmcli connection add type vlan con-name vlan10 dev eth0 id 10
Connection ‘vlan10’ (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) successfully added.

# IPアドレスを設定する
$ sudo nmcli connection modify vlan10 ipv4.addresses 192.168.10.1/24
$ sudo nmcli connection modify vlan10 ipv4.method manual

# 接続を有効化する
$ sudo nmcli connection up vlan10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/…)

# 設定一覧を確認
$ nmcli connection show
NAME UUID TYPE DEVICE
vlan10 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx vlan eth0.10

nmcliは設定が自動で永続化される点が便利です。再起動後も vlan10 接続が自動で有効になります。

Ubuntu 22.04 / 24.04 バージョン比較

Ubuntu 22.04 と 24.04 で VLAN 関連ツールのバージョンを実測で比較しました。コマンド構文に変化はなく、どちらの環境でも同じ手順で設定できます。

Ubuntu 22.04 vs 24.04 VLANツール パッケージバージョン比較(実測)
Ubuntu 22.04 vs 24.04 VLANツール パッケージバージョン比較(実測)

気になった点として、vlan パッケージ(バージョン 2.0.5ubuntu5)は 22.04 と 24.04 で全く同じバージョンです。一方 iproute2 は 5.15.0 → 6.1.0 と大幅にアップデートされ、VLAN関連の細かい出力フォーマットが変わっています。スクリプトで ip link show の出力をパースしている場合は注意が必要です。

よくあるエラーと解決策

①「Cannot find device “eth0″」が出る




ubuntu@linuxlab: ~
$ sudo ip link add link eth0 name eth0.10 type vlan id 10
Cannot find device “eth0”

NIC名が eth0 ではなく ens3 / enp0s3 などになっています。ip link show で実際のNIC名を確認してください。

②「RTNETLINK answers: File exists」が出る




ubuntu@linuxlab: ~
RTNETLINK answers: File exists

同じ名前のVLANインターフェースがすでに存在します。ip link show eth0.10 で確認し、不要なら sudo ip link delete eth0.10 で削除してから再作成してください。

③再起動後にVLANが消える

ip link add で作ったVLANはランタイムの設定なので、再起動後に消えます。「手順5:netplanで永続化する」または「手順6:NetworkManagerで設定する」を実施してください。

④「modprobe: FATAL: Module 8021q not found」が出る




ubuntu@linuxlab: ~
modprobe: FATAL: Module 8021q not found in directory /lib/modules/…

VLANサポートがカーネルにビルトインされている場合や、コンテナ環境ではこのメッセージが出ますが、実際には ip link add type vlan は正常に動作します。ip link add を実行してみてエラーが出なければ問題ありません。Ubuntu標準カーネルでは8021qはロード可能なモジュールとして提供されています。

まとめ

UbuntuでのVLAN設定は、ip link add link eth0 name eth0.10 type vlan id 10 の1コマンドで作成でき、ip addr でIPアドレスを割り当てるだけで使い始めることができます。

  • VLANの作成:ip link add link <親NIC> name <名前> type vlan id <VLAN_ID>
  • VLANの確認:ip link show type vlan または cat /proc/net/vlan/config
  • 永続化:netplan(Ubuntu 20.04以降)または nmcli(NetworkManager)
  • vconfig は非推奨。ip link コマンドを使うこと
  • Ubuntu 22.04 / 24.04 で同一手順が使える(実測で確認)

VLANを活用することで、1台のVPSやサーバーでも複数のネットワークセグメントを扱えるようになります。本格的なサーバー運用に興味があれば、VPSを借りて実際に試してみるのがおすすめです。

コメント

タイトルとURLをコピーしました