VLAN(Virtual LAN)

論理的なネットワーク分割

VLANとは

VLANは、物理的な接続に関係なく論理的にネットワークを分割する技術です。 同じスイッチに接続されていても異なるVLANに属する機器は直接通信できません。 これにより、ブロードキャストドメインの分割、セキュリティ向上、管理の柔軟性が得られます。

VLANの仕組み

VLAN 10(営業部)
PC-A
PC-B
VLAN 20(開発部)
PC-C
PC-D

物理的には同じスイッチでも、VLAN間は通信不可(L3ルーティングが必要)

IEEE 802.1Q(VLANタグ)

802.1Qは、イーサネットフレームに4バイトのVLANタグを挿入してVLAN情報を伝達する標準規格です。

宛先MAC
送信元MAC
802.1Qタグ
4B(TPID+TCI)
タイプ
ペイロード

802.1Qタグ構造

  • TPID(2B): 0x8100(VLANタグの識別子)
  • PCP(3bit): 優先度(QoS用)
  • DEI(1bit): 破棄可能フラグ
  • VID(12bit): VLAN ID(1-4094)

ポートタイプ

アクセスポート

  • • 1つのVLANにのみ所属
  • • タグなしフレームを送受信
  • • エンドデバイス(PC、サーバー)接続用

トランクポート

  • • 複数VLANのトラフィックを伝送
  • • 802.1Qタグ付きフレーム
  • • スイッチ間、ルーター接続用

ネイティブVLAN

トランクポートでタグなしフレームが属するVLAN。デフォルトはVLAN 1。 セキュリティ上、変更を推奨。両端で一致させる必要あり。

VLAN間ルーティング

異なるVLAN間の通信にはL3デバイス(ルーター/L3スイッチ)が必要です。

Router on a Stick

ルーターの1つの物理インターフェースにサブインターフェースを作成し、 トランクポートで接続。小規模向け。

L3スイッチ(SVI)

Switch Virtual Interface(SVI)を作成してVLAN間ルーティング。 ハードウェア処理で高速。大規模向け。

Linux VLAN設定

1# VLANインターフェース作成
2ip link add link eth0 name eth0.10 type vlan id 10
3ip link set eth0.10 up
4ip addr add 192.168.10.1/24 dev eth0.10
5
6# 別のVLAN
7ip link add link eth0 name eth0.20 type vlan id 20
8ip link set eth0.20 up
9ip addr add 192.168.20.1/24 dev eth0.20
10
11# VLAN確認
12cat /proc/net/vlan/config
13
14# 永続化(netplan例)
15# /etc/netplan/01-vlans.yaml
16# network:
17# ethernets:
18# eth0: {}
19# vlans:
20# eth0.10:
21# id: 10
22# link: eth0
23# addresses: [192.168.10.1/24]

クラウドでのネットワーク分離

クラウド環境ではVLANの代わりにVPC/サブネットでネットワークを分離します。 オーバーレイネットワーク(VXLAN等)で仮想化されています。

AWS

VPC、サブネット、セキュリティグループ

GCP

VPCネットワーク、サブネットワーク

Kubernetes

Network Policy、Namespace

SRE/インフラ観点

VLAN設計のベストプラクティス

  • 機能別分離: Web、DB、管理用を分ける
  • VLAN IDの命名規則: 10x=本番、20x=開発など
  • ドキュメント化: VLAN一覧とIP設計書を維持

よくある問題

  • VLANミスマッチ: 両端のVLAN設定不一致
  • ネイティブVLAN不一致: トランク間の設定ミス
  • 許可VLANの設定漏れ: トランクで必要なVLANが通らない