STUDY · NETWORK GUIDE

2-3 VLAN

1 台の物理スイッチを論理的に複数のブロードキャストドメインに分割する VLAN の仕組み。アクセスポート設定と CAM テーブルの VLAN 別分離を Cat9000v 実機で確認する。

1. VLAN とは

VLAN (Virtual LAN) は、1 台の物理スイッチを論理的に複数のスイッチへ分割する仕組みです。前節 2-2 ではスイッチが単一の CAM (Content Addressable Memory) テーブルを持ち、フレームを宛先別に転送する動作を扱いました。VLAN を導入すると、その内部状態が VLAN ごとに分かれ、同じ筐体の中に独立した複数のスイッチが共存するかのように振る舞います。

スイッチへの進化により、ポートごとに 衝突ドメイン (Collision Domain) が分離されました。VLAN ではさらに一歩進んで、ブロードキャストドメイン (Broadcast Domain) も分離されます。ブロードキャストドメインとは、ARP リクエストやブロードキャストフレームが届く範囲のことで、L2 通信が成立する境界そのもの。VLAN A のポートで発生したブロードキャストは VLAN B のポートには届きません。両者は同じ筐体に挿さっているにもかかわらず、別の L2 セグメントとして扱われます。

VLAN の論理分割


2. VLAN が必要となる理由

VLAN は、物理スイッチを増やさずに複数の論理 LAN を同時に収容するために使われます。物理的に分けたい LAN セグメントが増えるたびにスイッチを買い足す方式と違い、1 台のスイッチで論理的な分割を完結できる点が特徴です。主な利点は次の四つ。

  • 設計柔軟性: 同じフロアの端末を物理結線とは無関係にグループ化できる機能。組織変更や席替えのたびに配線を引き直す必要がない。
  • セキュリティ: 部署別・用途別に L2 通信を隔離できる機能。社員 LAN とゲスト LAN を物理的に同じスイッチへ収容しつつ、相互通信を遮断する要件で基本手段となる。
  • ブロードキャスト抑制: ARP やブロードキャストフレームが VLAN 境界を越えない性質。スケールに伴うブロードキャストトラフィックの肥大化を抑える効果。
  • コスト: 物理スイッチを増やさずに済む経済性。ポート余りの有効活用にもつながる。

VLAN を跨いだ通信が必要な場合は、L3 装置 (ルーターまたは L3 スイッチ) を経由させます。L2 だけでは異 VLAN 間の通信は成立しません。


3. アクセスポートの設定

VLAN を端末側に提供するポートを アクセスポート (Access Port) と呼びます。通常のデータ用アクセスポートは 1 つの VLAN にのみ所属し、その VLAN のフレームだけを送受信する形式です(例外として、IP 電話を収容する voice VLAN ではデータ VLAN と音声 VLAN を 1 つのアクセスポートに併用できますが、本節では扱いません)。IOS-XE での最小 config は次のとおり。

snippet
vlan 10
 name USERS
vlan 20
 name GUESTS
!
interface GigabitEthernet1/0/1
 description PC1
 switchport mode access
 switchport access vlan 10
!
interface GigabitEthernet1/0/3
 description PC3
 switchport mode access
 switchport access vlan 20

設定のポイントは二つです。vlan <id> で VLAN を作成し、switchport access vlan <id> でアクセスポートをその VLAN に所属させます。switchport mode access はポートを明示的にアクセスポートとして固定する宣言で、DTP (Dynamic Trunking Protocol) によるトランクへの自動切り替えを抑止する意味でも有用です。

VLAN 名 (name USERS 等) は人間向けのラベルにすぎず、フレーム転送や CAM の振る舞いには影響しません。それでも運用上は必ず付けます。後から show vlan brief を確認した際に、ID だけでは用途を思い出せないためです。


4. CML での検証

検証は CML (Cisco Modeling Labs) 上の Cat9000v (IOS-XE 17.15.3) で実施しました。トポロジは下図のとおりで、PC1 / PC2 を VLAN 10 (USERS) に、PC3 / PC4 を VLAN 20 (GUESTS) に収容しています。各 PC は同 VLAN 内の peer に対して 30 秒ごとに ping を打つバックグラウンドループで動作させました。

検証トポロジ

スイッチ側で VLAN とアクセスポートの状態を確認した結果は以下のとおりです。

snippet
SW1#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Gi1/0/5, Gi1/0/6, Gi1/0/7, Gi1/0/8, Gi1/0/9, Gi1/0/10, Gi1/0/11, Gi1/0/12, Gi1/0/13, Gi1/0/14, Gi1/0/15, Gi1/0/16, Gi1/0/17, Gi1/0/18, Gi1/0/19
                                                Gi1/0/20, Gi1/0/21, Gi1/0/22, Gi1/0/23, Gi1/0/24
10   USERS                            active    Gi1/0/1, Gi1/0/2
20   GUESTS                           active    Gi1/0/3, Gi1/0/4
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

出力では、VLAN 10 USERS に Gi1/0/1 と Gi1/0/2 が、VLAN 20 GUESTS に Gi1/0/3 と Gi1/0/4 がそれぞれ所属しています。未使用ポート (Gi1/0/5 以降) は VLAN 1 default に残っており、設定を入れなくても全ポートがデフォルトで VLAN 1 に属することが分かります。1002〜1005act/unsup 行は FDDI / Token Ring 用の予約 VLAN で、現代の Ethernet 環境では実用上無視できる項目です。

ポートごとのリンク状態は以下のとおりです。

snippet
SW1#show interfaces status

Port         Name               Status       Vlan       Duplex  Speed Type
Gi1/0/1      PC1                connected    10         a-full a-1000 unknown
Gi1/0/2      PC2                connected    10         a-full a-1000 unknown
Gi1/0/3      PC3                connected    20         a-full a-1000 unknown
Gi1/0/4      PC4                connected    20         a-full a-1000 unknown
# ...(Gi1/0/5 以降は未使用、省略)

Vlan 列には所属 VLAN が直接表示されます。アクセスポートの設定が想定どおりかを目視で確認する手段として、この 1 行が最短です。


5. CAM テーブルの VLAN 別分離

CAM テーブルは VLAN ごとに独立しています。前節 2-2 で予告した内容を、実機の出力で確認します。

動的エントリ全体を表示した結果は以下のとおりです。

snippet
SW1#show mac address-table dynamic
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  20    5254.0054.a42e    DYNAMIC     Gi1/0/4
  20    5254.0090.e9c3    DYNAMIC     Gi1/0/3
  10    5254.006e.c93e    DYNAMIC     Gi1/0/2
  10    5254.00d5.e916    DYNAMIC     Gi1/0/1
Total Mac Addresses for this criterion: 4

出力では、4 件のエントリすべてに Vlan 列が付いており、VLAN 10 が 2 件、VLAN 20 が 2 件と分かれています。VLAN を指定して絞り込むと、その VLAN だけのテーブルとして表示されます。

snippet
SW1#show mac address-table vlan 10
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    5254.006e.c93e    DYNAMIC     Gi1/0/2
  10    5254.00d5.e916    DYNAMIC     Gi1/0/1
Total Mac Addresses for this criterion: 2

SW1#show mac address-table vlan 20
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  20    5254.0054.a42e    DYNAMIC     Gi1/0/4
  20    5254.0090.e9c3    DYNAMIC     Gi1/0/3
Total Mac Addresses for this criterion: 2

show mac address-table count を実行すると、VLAN ごとのカウンタが個別に集計されている様子を確認できます。

snippet
SW1#show mac address-table count
Mac Entries for Vlan 20:
---------------------------
Dynamic Address Count  : 2
Static  Address Count  : 0
Total Mac Addresses    : 2

Mac Entries for Vlan 10:
---------------------------
Dynamic Address Count  : 2
Static  Address Count  : 0
Total Mac Addresses    : 2

Total Dynamic Address Count  : 4
Total Static  Address Count  : 0
Total Mac Address In Use     : 4
Total Mac Address Space Available: 32764

CAM テーブルは VLAN という次元を持つ 構造です。エントリのキーは MAC アドレス単独ではなく (VLAN, MAC) の組で、同じ MAC アドレスが VLAN 10 と VLAN 20 の両方で観測されても、それぞれ独立した別エントリとして扱われます。「1 台の物理スイッチの中に独立した複数のスイッチが共存する」という §1 の説明の、実装上の正体がこれです。

ポート単位で確認すると、各ポートが所属 VLAN のエントリだけを持つ様子が分かります。

snippet
SW1#show mac address-table interface GigabitEthernet1/0/1
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    5254.00d5.e916    DYNAMIC     Gi1/0/1
Total Mac Addresses for this criterion: 1

SW1#show mac address-table interface GigabitEthernet1/0/3
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  20    5254.0090.e9c3    DYNAMIC     Gi1/0/3
Total Mac Addresses for this criterion: 1

Gi1/0/1 は VLAN 10 の MAC を、Gi1/0/3 は VLAN 20 の MAC を、それぞれ単独で保持しています。アクセスポートは 1 VLAN にしか所属しないため、CAM 上もそのポートに紐づく VLAN は 1 つだけになります。


6. 異 VLAN 間の L2 通信不成立

CAM テーブル分離の直接的な帰結として、異 VLAN 間の L2 通信は成立しません。同 VLAN 内では peer の ping が通り、異 VLAN 間では通りません。検証トポロジでの到達性は以下のとおりです。

VLAN 間の到達性マトリクス

不到達の理由は、ARP の動きで追うと明らかになります。ここでは VLAN だけを分け、VLAN 間をルーティングする L3 機器 (ルーターや SVI) をまだ用意していない構成を前提とします。本検証では PC1 と PC3 を同一 IP サブネットに置いているため、VLAN 10 の PC1 が PC3 へ ping を打とうとすると、PC1 は宛先 IP に対応する MAC を解決するために ARP リクエスト (ブロードキャスト) を送出します。しかしブロードキャストは VLAN 境界を越えません。SW1 は VLAN 10 のポート群にしかこの ARP を流さないため、VLAN 20 にいる PC3 は問い合わせ自体を受け取りません。結果として MAC 解決が失敗し、最初の 1 フレームを送出することすらできずに終わります。(なお PC を別サブネットに分けた一般的な構成では、ホストは宛先 IP ではなくデフォルトゲートウェイの MAC を解決しようとし、そのゲートウェイが無いために届きません。いずれの場合も L3 機器なしでは VLAN を越えられない点は同じです。)

L2 だけでは越えられないこの境界を越えるには、IP を理解する装置、すなわち L3 ルーター または L3 スイッチの SVI (Switch Virtual Interface) が必要です。スイッチが各 VLAN に対応する仮想インターフェース (SVI) を持ち、VLAN 間のルーティング判断を行う形式が、現代の典型構成となります。


7. 落とし穴・補足

  • 既定 VLAN 1: 何も設定しなくても全ポートは VLAN 1 に所属します。ラボでは便利ですが、運用環境では VLAN 1 を業務トラフィックや管理用途に使わない のがセキュリティ上の定石です。一部の制御プロトコル (CDP / VTP / DTP 等) も VLAN 1 を介して流れるため、不要なアクセスを集めやすい性質があります。ユーザー端末用と管理用は別途 VLAN を切るのが望ましい構成。
  • switchport mode access を省略しない: アクセス VLAN を switchport access vlan だけで指定しても動きますが、ポートのモードはデフォルトでは「動的」(DTP で相手と交渉) の状態。意図せず Trunk に切り替わる事故を避けるため、アクセスポートは必ず switchport mode access を明示します。
  • VLAN 名は飾り: name USERS のような名前は表示用ラベルにすぎず、CAM の振る舞いや転送には一切影響しません。名前重複や typo が起きてもフレームは想定どおり流れます。ただし運用ドキュメントとの突き合わせを楽にするため、必ず付けておきます。
  • 予約 VLAN 1002〜1005: FDDI / Token Ring 等の旧プロトコル用に予約された VLAN ID。show vlan briefact/unsup で表示されますが、現代の Ethernet では実用上意識する必要はありません。
  • VLAN を跨ぐ通信は必ず L3 経由: 同じ筐体内で VLAN 10 と VLAN 20 を相互接続したい場合でも、L2 のままでは不可能です。L3 スイッチの SVI を介すか、外部ルーターをトランクで接続する (router-on-a-stick) 必要があります。

8. 次節

本節では、1 台のスイッチを論理的に複数のブロードキャストドメインへ分割する VLAN の基本動作を実機で確認しました。アクセスポートは 1 VLAN に固定され、CAM テーブルは VLAN ごとに独立し、異 VLAN 間の L2 通信は成立しません。これが VLAN という概念の核心です。

現実のネットワークでは、複数の VLAN を 1 本のリンクで運ぶ必要が頻繁に発生します。スイッチ間を 1 本のケーブルで結びつつ、その上に VLAN 10 と VLAN 20 のフレームを同時に流すような構成です。これを実現するのが トランクポート (Trunk Port) と 802.1Q タグ です。続く 2-4 Trunk と 802.1Q では、フレームに VLAN ID を付与して識別する仕組み、Native VLAN の扱い、DTP の挙動を、再び CML 実機の出力で見ていきましょう。