STUDY · NETWORK GUIDE

2-3 VLAN

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

1. VLAN とは

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

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

VLAN の論理分割


2. なぜ VLAN が必要か

物理的に分けたい LAN セグメントが増えるたびスイッチを買い足すのは現実的でない。VLAN を使えば、1 台のスイッチで複数の論理 LAN を同時に収容できる。主な利点は次の四つである。

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

VLAN を跨いだ通信が必要な場合は、L3 装置(ルーターまたは L3 スイッチ)を経由させる。これは第 3 章で扱うルーティングの世界に踏み込む話で、本節では「L2 では届かない」ことだけを押さえれば十分である。


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

VLAN を端末側に提供するポートを アクセスポート と呼ぶ。アクセスポートは 1 つの VLAN にのみ所属し、その VLAN のフレームだけを送受信する。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 はポートを明示的にアクセスポートとして固定する宣言で、次節 2-4 で扱うトランクへの自動切り替え(DTP)を抑止する意味でも有用である。

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 ごとに独立している」と予告した内容を、実機の出力で確認する。

まず、動的エントリ全体を表示した結果が次である。

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 台の物理スイッチの中に独立した複数のスイッチが共存する」と先に述べたことの実装上の正体である。

ポート単位で確認しても、各ポートが所属 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 10 の PC1 が VLAN 20 の PC3 へ ping を打とうとしたとする。PC1 は宛先 IP に対応する MAC を解決するために ARP リクエスト(ブロードキャスト)を送出するが、ブロードキャストは VLAN 境界を越えない。SW1 は VLAN 10 のポート群にしかこの ARP を流さないため、VLAN 20 にいる PC3 はそもそも問い合わせを受け取らない。結果として MAC 解決が失敗し、最初の 1 フレームを送出することすらできずに終わる。

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


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)必要がある。第 3 章で扱う。

8. 次節

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

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