「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 でコマンド構文は変わらず、どちらも同じ手順で設定できる
目次
- VLANとは(概念図で理解する)
- 前提環境・準備
- 手順1:パッケージをインストールする
- 手順2:8021qカーネルモジュールを読み込む
- 手順3:ip linkでVLANインターフェースを作成する
- 手順4:設定を確認する
- 手順5:netplanで永続化する
- 手順6:NetworkManager(nmcli)で設定する
- Ubuntu 22.04 / 24.04 バージョン比較
- よくあるエラーと解決策
- まとめ
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のネットワークを分けたいときに便利です。

前提環境・準備
- 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 の最小インストールにも含まれていますが、念のため確認しましょう。
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設定は完全に動作します。

実際にインストールすると vlan 2.0.5ubuntu5、iproute2 6.1.0-1ubuntu6.3 がインストールされます(2026-06-13 時点)。vconfig コマンドも含まれますが、「Warning: vconfig is deprecated」と明示されており、今後削除される可能性があります。新しい設定では必ず ip link を使いましょう。
手順2:8021qカーネルモジュールを読み込む
VLANを使うには 8021q カーネルモジュールが必要です。最近のUbuntuカーネルでは自動でロードされますが、明示的に読み込んでおくと確実です。
$ sudo modprobe 8021q
# 読み込みを確認
$ lsmod | grep 8021q
8021q 36864 0
garp 16384 1 8021q
mrp 20480 1 8021q
再起動後も自動で読み込まれるようにする場合は、次のコマンドでモジュール設定ファイルに追記します。
8021q
手順3:ip linkでVLANインターフェースを作成する
いよいよVLANインターフェースを作成します。ここでは eth0 上に VLAN ID 10 と VLAN ID 20 の2つを作ります(NIC名は自分の環境に合わせてください)。
$ 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として認識されていることが確認できました。

コマンド構文のポイントは3つです:
link eth0:VLANを乗せる親インターフェースname eth0.10:作成するVLANインターフェースの名前(任意だが親名.VLAN_IDが慣例)type vlan id 10:VLAN IDの指定(1〜4094)
手順4:設定を確認する
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が登録されていることを実測で確認しました。ルーティングテーブルにも自動で追加されています。

正直、このコマンドを知らずに「VLANが動いているか分からない」と詰まる方が多いです。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 など)。
$ ls /etc/netplan/
00-installer-config.yaml
$ sudo nano /etc/netplan/00-installer-config.yaml
netplan の YAML ファイルに以下のように VLAN の設定を追加します:
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
ファイルを保存したら、設定を適用します。
$ 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設定も一般的です。
$ 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 関連ツールのバージョンを実測で比較しました。コマンド構文に変化はなく、どちらの環境でも同じ手順で設定できます。

気になった点として、vlan パッケージ(バージョン 2.0.5ubuntu5)は 22.04 と 24.04 で全く同じバージョンです。一方 iproute2 は 5.15.0 → 6.1.0 と大幅にアップデートされ、VLAN関連の細かい出力フォーマットが変わっています。スクリプトで ip link show の出力をパースしている場合は注意が必要です。
よくあるエラーと解決策
①「Cannot find device “eth0″」が出る
Cannot find device “eth0”
NIC名が eth0 ではなく ens3 / enp0s3 などになっています。ip link show で実際のNIC名を確認してください。
②「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」が出る
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を借りて実際に試してみるのがおすすめです。


コメント