2026年7月10日

2026年7月10日

VLAN を設定する方法|Linuxサーバーと仮想化ホストでタグ付きVLANを使う手順

1本のケーブルで複数のVLANに参加させたいサーバーや仮想化ホストでは、スイッチ側のポートをトランクにし、Linux側でVLANインターフェース(802.1Q のタグを扱うインターフェース)を作ります。この記事では、サーバー側でVLANを設定する手順を、NetworkManager(nmcli)での設定、ボンディングとの組み合わせ、仮想マシンに複数のVLANを渡すためのLinuxブリッジ、確認方法と、複数のVLANにIPを持たせたときに起きやすい経路の問題まで順に説明します。スイッチ側でVLANを設計する話や、サーバーを1つのVLANにだけつなぐアクセスポートの設定は扱わず、サーバー・ホストの側に絞ります。

設定の前提を確認する

サーバー側でVLANインターフェースを作るのは、サーバーがタグ付きのフレームを送受信する場合です。次の点を先に確認します。

  • スイッチ側のポートがトランクか:つなぐポートがトランクで、使うVLANが許可されている必要があります。アクセスポートのままだと、サーバーが付けたタグ付きフレームは通りません。逆に、サーバーを1つのVLANにだけ参加させるなら、スイッチ側をアクセスポートにして、サーバーには通常のインターフェースとしてIPを設定するほうが単純です。
  • ネイティブVLAN:トランクでタグなしで流れるVLANのことです。サーバーの親インターフェース(ens192 など)に直接IPを付けると、このVLANに参加することになります。意図していない場合は、親インターフェースにはIPを付けません。
  • VLANごとのアドレス:VLAN ID、サブネット、ゲートウェイ、DNSを一覧にしておきます。
  • 作業経路:VLANの設定ミスで管理用の接続が切れることがあります。リモートで作業する場合は、IPMI などのコンソールや別のNICで入れる経路を用意しておきます。

手順1:一時的な設定で動作を確かめる

まず ip コマンドで、タグ付きの通信ができるかを確かめます。この設定は再起動で消えます。

sudo ip link add link ens192 name ens192.20 type vlan id 20
sudo ip addr add 192.168.20.10/24 dev ens192.20
sudo ip link set ens192.20 up

# VLAN ID が付いているか確認
ip -d link show ens192.20
# 同じVLANのゲートウェイに届くか
ping -c 3 192.168.20.1

ゲートウェイに届かない場合は、恒久設定に進む前にスイッチ側の許可VLANを見直します。確認が済んだら sudo ip link del ens192.20 で削除しておきます。

手順2:NetworkManager で恒久設定にする

RHEL、AlmaLinux、Rocky Linux など、NetworkManager でネットワークを管理している環境では nmcli で設定します。

sudo nmcli connection add type vlan con-name vlan20 ifname ens192.20 \
  dev ens192 id 20 \
  ipv4.method manual ipv4.addresses 192.168.20.10/24 \
  ipv4.gateway 192.168.20.1 ipv4.dns 192.168.20.1
sudo nmcli connection up vlan20

# 設定内容と状態を確認
nmcli connection show vlan20 | grep -E 'vlan\.|ipv4\.'
nmcli device status

インターフェース名(ifname)は15文字までという制限があります。親インターフェースの名前が長い場合は、vlan20 のような短い名前にします。

Ubuntu など netplan を使う環境では、vlans: の項目で同じ内容を書き、sudo netplan try で適用します。netplan try は、確認の操作をしないまま一定時間が過ぎると元の設定に戻るため、リモートでの作業に向いています。nmcli にはこの仕組みがないため、別経路のコンソールを用意してから適用してください。

手順3:ボンディングの上にVLANを作る

2本のNICを束ねて冗長化する場合は、先にボンディングのインターフェース(例:bond0)を作り、その上にVLANを作ります。順番を逆にすると、VLANごとに別々のボンディングが必要になり、管理が煩雑になります。

# bond0 が作成済みの前提で、その上に VLAN 20 を作る
sudo nmcli connection add type vlan con-name bond0.20 ifname bond0.20 \
  dev bond0 id 20 \
  ipv4.method manual ipv4.addresses 192.168.20.10/24 ipv4.gateway 192.168.20.1

ボンディングのモードを LACP(802.3ad)にする場合は、スイッチ側にもポートチャネル(リンクアグリゲーション)を設定し、そのポートチャネルをトランクにします。スイッチ側の対応や設定方法は機種によって異なります。

手順4:仮想マシンに複数のVLANを渡す

KVM などの仮想化ホストで、仮想マシンごとに異なるVLANへつなぎたい場合は、Linuxブリッジを使います。方法は2つあります。

VLANごとにブリッジを作る方法

ens192.20 を親にした br20、ens192.30 を親にした br30 のように、VLANごとにブリッジを作り、仮想マシンのNICをつなぐブリッジで所属を決めます。仕組みが単純で、どのVLANに何がつながっているかを把握しやすい方法です。VLANの数が少ないうちはこちらで十分です。

VLAN対応ブリッジ(vlan_filtering)を使う方法

1つのブリッジでVLANを扱う方法です。ブリッジのポートごとに、通すVLANとタグの扱いを設定します。

sudo ip link add br0 type bridge vlan_filtering 1
sudo ip link set ens192 master br0
sudo ip link set br0 up

# 物理NIC側(スイッチへのトランク)で VLAN 20 と 30 をタグ付きで通す
sudo bridge vlan add dev ens192 vid 20
sudo bridge vlan add dev ens192 vid 30

# 仮想マシンのインターフェース(例: vnet0)を VLAN 20 のタグなしポートにする
sudo bridge vlan add dev vnet0 vid 20 pvid untagged
sudo bridge vlan del dev vnet0 vid 1

# 設定を確認
bridge vlan show

ブリッジに参加したポートには、既定で VLAN 1 がタグなしで割り当てられます。残しておくと意図しないVLANに参加することがあるため、上の例では削除しています。物理NICの ip addr は、ブリッジに参加させるとそのままでは使えなくなります。ホスト自身の管理用IPをどこに持たせるかを、作業の前に決めておいてください。

Proxmox VE などの仮想化製品では、ブリッジのVLAN対応や仮想NICのVLANタグを管理画面から設定できます。画面の表記は版によって異なります(2026年10月現在)。

手順5:複数のVLANにIPを持たせるときの経路

サーバーが VLAN 20 と VLAN 30 の両方にIPを持つと、デフォルトゲートウェイの扱いが問題になります。両方に設定するとどちらが使われるかが分かりにくくなり、片方だけに設定すると、もう片方のVLANの外から届いた通信への応答が、別のVLANのゲートウェイから出ていきます。この「行きと帰りで経路が違う」状態は、カーネルの rp_filter(送信元の経路を確かめる機能)や、経路上のファイアウォールに落とされる原因になります。

対処は用途で選びます。

  • 2つ目のVLANは同じサブネット内の通信だけに使う:2つ目にはゲートウェイを設定しません。nmcli では ipv4.never-default yes を指定すると、その接続がデフォルト経路にならなくなります。
  • 両方のVLANの外部と通信する:送信元のアドレスごとに経路表を分けるポリシールーティングを設定します。設定は複雑になるため、検証環境で動作を確かめてから本番に入れます。

確認方法とつまずきやすい点

  • タグが届いているか:sudo tcpdump -e -n -i ens192 vlan 20 で、VLAN 20 のタグ付きフレームが見えるかを確認します。何も出なければ、スイッチ側の許可VLANの不足を疑います。
  • VLAN IDの一覧:ip -d link show type vlan で、作成したVLANインターフェースとIDを確認できます。
  • ゲートウェイに届かない:同じVLANの別の機器から到達できるかを確かめ、サーバー側かスイッチ側かを切り分けます。
  • MTU:通常のスイッチはタグ付きフレームを扱えるため、VLANインターフェースのMTUは親と同じ1500のままで問題ないことがほとんどです。VXLAN などのトンネルを重ねる場合は、その分を考慮します。

まとめ

  • サーバー側でVLANを設定するのは、タグ付きで複数のVLANに参加させる場合。スイッチ側のポートはトランクにし、使うVLANを許可しておく
  • まず ip link で一時的に試し、届くことを確認してから nmcli や netplan で恒久設定にする
  • ボンディングと組み合わせる場合は、ボンディングの上にVLANを作る
  • 仮想マシンにVLANを渡す方法は、VLANごとのブリッジとVLAN対応ブリッジの2つ。VLAN対応ブリッジでは既定の VLAN 1 の扱いに注意する
  • 複数のVLANにIPを持たせるときは、デフォルトゲートウェイを1つにするか、ポリシールーティングで経路を分ける

お気軽にご相談ください

お見積りへ お問い合わせへ
▲