はじめに
Catalyst スイッチで VLAN を設定する場面は多いものの、VLAN のレンジや VTP モードといった前提を押さえずに進めると、「拡張レンジの VLAN が再起動で消える」といった落とし穴にはまることがあります。本記事は Cisco Catalyst(IOS-XE)を前提に、VLAN の作成からアクセス/トランクの構成、SVI による VLAN 間ルーティング、確認とトラブルシュートまでをコマンド付きで整理します。
VLAN の設計そのものの考え方(アクセスとトランクの使い分けや VLAN 間ルーティングの方式選定、セキュリティ)は、別記事『VLAN 設計の基礎|トランクと VLAN 間ルーティングの設計指針』で扱っています。本記事は、その考え方を Catalyst で実際に設定に落とし込む手順に焦点をあてています。
- Catalyst(IOS-XE)での VLAN 作成とアクセスポートへの割り当て
- 802.1Q トランクの設定(許可 VLAN・ネイティブ VLAN・DTP の無効化)
- SVI による VLAN 間ルーティングの設定
- 設定確認とトラブルシュートに使うコマンド
- 通常レンジ/拡張レンジ VLAN や StackWise Virtual など、機種・バージョン固有の注意点
Catalyst の VLAN 設定は、グローバルコンフィグで VLAN を作成し、各ポートにアクセスまたはトランクのモードを割り当て、必要に応じて SVI でルーティングする、という流れに集約されます。拡張レンジ VLAN(1006〜4094)を使う場合は、VTP のモードによって保存先と必要な設定が変わる点に注意が必要です。
前提: 対象機種と IOS-XE のモード
本記事は Catalyst 9000 シリーズ(9200 / 9300 / 9500 / 9600 など)の IOS-XE 機を主な対象とします。旧来の IOS 機(Catalyst 2960 系など)も基本的なコマンド体系は共通ですが、機種やバージョンによって差異があるため、設定前に VLAN レンジと VTP モードを把握しておきます。
VLAN は 1 から 4094 までの番号で識別されます。VLAN 1 はシステム初期化時に自動作成される既定 VLAN で、削除できません。VLAN ID 1002〜1005 は Token Ring / FDDI 用に予約されており、こちらも削除できません。
VLAN は、保存先の観点から 2 つのレンジに分かれます。
- 通常レンジ(VLAN ID 1〜1005): VLAN データベース(
vlan.dat)に保存されます。 - 拡張レンジ(VLAN ID 1006〜4094): VTP バージョン 1 / 2 では VLAN データベースに保存されず、作成には VTP transparent モードが前提になります。VTP バージョン 3 では、client / server モードでも作成・保存できます。
この仕様が落とし穴になりやすい点です。VTP バージョン 1 / 2 で transparent モードにせずに拡張レンジ VLAN を作成すると、その設定は起動構成に保存されず、再起動時に失われます。 拡張レンジを使う設計では、VTP モードの確認と起動構成への保存を先に済ませておくことをおすすめします。
VTP モードには server / client / transparent があります。VTP の同期によって意図しない VLAN の一括削除が起きる事故を避けるため、多くの設計で transparent モードの採用が選ばれています。
ポートの扱いについては、Catalyst のポートは既定で L2 スイッチポートとして動作します。SVI を用いた VLAN 間ルーティングには、別途 L3 ルーティングの有効化(ip routing)が必要です(詳細は後述)
また、Catalyst 9000 を StackWise Virtual で冗長化している場合、VLAN や SVI は 2 台を束ねた仮想スタック全体で 1 つの構成として扱います。SVL(StackWise Virtual Link)や DAD(Dual-Active Detection)を含む冗長構成の組み方は、関連記事『Catalyst 9000 StackWise Virtual 設定の手順|SVL と DAD のポイント』を参照してください。
参考: Cisco VLAN Configuration Guide, Cisco IOS XE(Catalyst 9300 Switches)
“VLAN 1 is the default VLAN and is created during system initialization.”
(VLAN 1 は既定 VLAN であり、システムの初期化時に作成される。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-18/configuration_guide/vlan/b_1718_vlan_9300_cg/configuring_vlans.html


VLAN の作成とアクセスポートへの割り当て
Catalyst での VLAN 設定は、まずグローバルコンフィグで VLAN を作成し、続いて各ポートをアクセスモードにして VLAN を割り当てる、という順序で進めます。
VLAN の作成は、vlanコマンドで VLAN コンフィグモードに入り、必要に応じて名前を付けます。
Switch(config)# vlan 10
Switch(config-vlan)# name Users
Switch(config-vlan)# exit通常レンジ(VLAN ID 1〜1005)の設定は VLAN データベースに保存されます。拡張レンジ(1006〜4094)を使う場合は、前提セクションで触れたとおり VTP モードによって扱いが変わる点に注意してください。
作成した VLAN をアクセスポートに割り当てるには、対象インターフェースをアクセスモードに固定し、VLAN を指定します。
Switch(config)# interface GigabitEthernet1/0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# spanning-tree portfastswitchport mode accessは、そのポートをアクセスポートに固定し、トランクの自動ネゴシエーションを無効にします。spanning-tree portfastは端末接続ポートで STP の待ち時間を短縮する設定で、端末専用ポートに限って使うことがおすすめです(スイッチ間リンクには使いません)。
IP 電話を接続するポートでは、データ VLAN と音声 VLAN を 1 つのポートに同居させる構成も使えます。
Switch(config-if)# switchport voice vlan 30参考: Cisco VLAN Configuration Guide, Cisco IOS XE(Catalyst 9300 Switches)
“By default, an interface is in Layer 2 mode.”
(既定では、インターフェースは L2 モードで動作する。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/16-12/configuration_guide/vlan/b_1612_vlan_9300_cg/configuring_vlan_trunks.html


トランクポートの設定(802.1Q・許可 VLAN・ネイティブ VLAN)
スイッチ間のリンクや上位機器との接続には、複数 VLAN を運ぶトランクポートを構成します。設定では、トランクへの固定、許可 VLAN の限定、ネイティブ VLAN の明示を行います。
Switch(config)# interface GigabitEthernet1/0/24
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport nonegotiate
Switch(config-if)# switchport trunk allowed vlan 10,20,30
Switch(config-if)# switchport trunk native vlan 999各コマンドの役割は次のとおりです。
switchport mode trunk: ポートをトランクに固定します。switchport nonegotiate: DTP フレームを送出せず、自動ネゴシエーションを無効化します。switchport trunk allowed vlan: そのトランクで通す VLAN を限定します(VLAN プルーニング)addremovenoneexceptを併用して差分指定も可能です。switchport trunk native vlan: ネイティブ VLAN を明示します(既定の VLAN 1 から変更)
Catalyst 9000 シリーズは 802.1Q トランクのみに対応するため、トランク種別を選択するswitchport trunk encapsulation dot1qは不要、もしくは非対応です。ISL と 802.1Q の両方に対応していた一部の旧 IOS 機ではこのコマンドが必要でしたが、現行の Catalyst 9000 では意識する必要はありません。
複数の物理リンクを束ねて帯域を確保する場合は、ポートチャネル(EtherChannel)上にトランクを構成します。束ねたリンクでのトラフィックの振り分けの仕組みや確認方法は、関連記事『EtherChannel ロードバランスの仕組みと振り分け先の確認方法』で詳しく扱っています。
参考: Cisco VLAN Configuration Guide, Cisco IOS XE 17.17.x(Catalyst 9300 Switches)
“VLAN 1 is the default VLAN on all trunk ports in all Cisco devices.”
(VLAN 1 は、すべての Cisco 機器においてトランクポートの既定 VLAN である。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-17/configuration_guide/vlan/b_1717_vlan_9300_cg/configuring_vlan_trunks.html
ネイティブ VLAN の変更と DTP の無効化(VLAN ホッピング対策)
VLAN ホッピング対策を、Catalyst のコマンドに落とし込みます。攻撃手法の背景は『VLAN 設計の基礎|トランクと VLAN 間ルーティングの設計指針』を参照してください。本記事では設定面に絞ります。
スイッチスプーフィング対策としては、端末向けポートをswitchport mode accessでアクセスに固定し、トランクではswitchport nonegotiateで DTP を無効化することが基本になります。これにより、DTP を悪用した意図しないトランク形成を防げます。
ダブルタギング対策としては、ネイティブ VLAN を VLAN 1 のままにせず、ユーザートラフィックを載せない未使用 VLAN に変更することが有効です。上記のswitchport trunk native vlan 999がこれにあたります。加えて、グローバルコンフィグでvlan dot1q tag nativeを設定すると、ネイティブ VLAN のフレームも明示的にタグ付けされ、タグなしの抜け道をなくす多層防御になります。
設計上の注意点として、公式ガイドでは、ネイティブ VLAN と管理 VLAN を同一の VLAN ID で構成した状態で新しい VLAN をトランクに追加すると、STP が不整合を解消するまでの約 15 秒間、両 VLAN が active と suspend を繰り返す挙動が記載されています。ネイティブ VLAN・管理 VLAN・ユーザー VLAN は、それぞれ別の ID に分けて設計することをおすすめします。


SVI による VLAN 間ルーティングの設定
L3 スイッチで VLAN 間を通信させるには、まずグローバルでルーティングを有効化し、VLAN ごとに SVI を作成して、その VLAN のデフォルトゲートウェイとなる IP アドレスを割り当てます。
Catalyst ではルーティング機能が既定で無効のため、最初にグローバルコンフィグで有効化します。
Switch(config)# ip routing続いて、ルーティングしたい VLAN ごとに SVI を作成し、IP アドレスを割り当てます。
Switch(config)# interface vlan 10
Switch(config-if)# ip address 10.10.10.1 255.255.255.0
Switch(config-if)# no shutdown
!
Switch(config)# interface vlan 20
Switch(config-if)# ip address 10.10.20.1 255.255.255.0
Switch(config-if)# no shutdowninterface vlanコマンドを初めて入力した時点で、その VLAN の SVI が作成されます。割り当てた IP アドレスが、その VLAN に属するホストのデフォルトゲートウェイになります。1 つの VLAN に対して関連づけられる SVI は 1 つだけです。
ここで押さえておきたいのが autostate の挙動です。SVI は、その VLAN に up 状態の物理ポート(アクセスまたはトランク)が 1 つ以上存在しないと、line protocol が up になりません。 この仕様は、後述のトラブルシューティングで頻出するポイントです。
上記の設定により、VLAN 10 のホスト(ゲートウェイ 10.10.10.1)と VLAN 20 のホスト(ゲートウェイ 10.10.20.1)が相互に通信できるようになります。なお、SVI と router-on-a-stick のどちらを選ぶかという方式選定の考え方はハブ記事『VLAN 設計の基礎』で扱っており、本記事は L3 スイッチでの SVI 構成に絞っています。
参考: Cisco Interface and Hardware Components Configuration Guide, Cisco IOS XE(Catalyst 9000)
“All Layer 3 interfaces require an IP address to route traffic.”
(すべての L3 インターフェースは、トラフィックをルーティングするために IP アドレスを必要とする。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/c9000/infra/interface-characteristics/interface-characteristics-configuration-guide.html
設定確認とトラブルシューティングのコマンド
設定後の確認と障害時の切り分けには、状態を表示する show コマンドを使います。まず、確認によく使うコマンドを整理します。
show vlan brief: VLAN の一覧と、各 VLAN に割り当てられたアクセスポートを確認します。show interfaces trunk: トランクのモード、許可 VLAN、ネイティブ VLAN を確認します。show interfaces switchport: 各ポートのモード(access / trunk)とアクセス VLAN・ネイティブ VLAN を確認します。show interfaces status: ポートの up / down と所属 VLAN を一覧で確認します。show ip interface brief: SVI を含む L3 インターフェースの IP アドレスと状態を確認します。show ip route connected: 各 SVI が接続ルートとして見えているかを確認します。show mac address-table: VLAN ごとの MAC アドレス学習状況を確認します。
障害時は、症状から切り分けると効率的です。
同一 VLAN 内で通信できない場合は、show interfaces switchportでポートの VLAN 割り当てを、show interfaces statusでポートの up / down を確認します。
トランク越しに特定の VLAN だけ通らない場合は、show interfaces trunkで許可 VLAN を確認し、両端のネイティブ VLAN が一致しているかを確認します。
VLAN 間で通信できない場合は、ip routingが有効か、該当 SVI が up / up かをshow ip interface briefで確認します。SVI が up / down の場合は、その VLAN に up している物理ポートが無い(autostate)、VLAN 自体が未作成または削除されている、STP でブロックされている、といった原因が考えられます。
ホストがデフォルトゲートウェイに到達できない場合は、ホスト側のゲートウェイ設定と SVI の IP アドレスが一致しているか、SVI の状態とあわせて確認します。
参考: Cisco Interface and Hardware Components Configuration Guide, Cisco IOS XE 17.18.x(Catalyst 9300 Switches)
“it does not become active until it is associated with a physical port.”
(SVI は、物理ポートと関連づけられるまで active にならない。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-18/configuration_guide/int_hw/b_1718_int_and_hw_9300_cg/configuring_interface_characteristics.html


機種・バージョンごとの注意点
ここまでの手順は Catalyst 9000 シリーズの IOS-XE を前提としていますが、機種・バージョン・機能セット・冗長構成によって注意点があります。設定前に確認しておくと、運用後のトラブルを避けられます。
| 項目 | 注意点 |
|---|---|
| 拡張レンジ VLAN(1006〜4094) | VTP バージョン 1 / 2 では transparent モードが前提。VLAN データベースに保存されず起動構成に保存される。VTP バージョン 3 なら client / server でも保存可能 |
| トランク種別 | Catalyst 9000 は 802.1Q のみ対応で switchport trunk encapsulation は不要・非対応。ISL は廃止済み |
| STP インスタンス | PVST+ / rapid PVST+ はインスタンス数に上限あり。多数の VLAN を扱う場合は MST の採用を検討 |
| L3 インターフェース上限 | SVI と routed port はハードウェアリソースの上限を共有。超過分の SVI は down のままになる |
| 旧 IOS 機(Catalyst 2960 系など) | 基本コマンドは共通。機能セットによって VLAN 数に制限がある(例: LAN Base で 255 VLAN)。encapsulation コマンドが必要な機種もある |
| StackWise Virtual 構成 | VLAN・SVI・トランクは仮想スタック全体で 1 つの構成として扱う |
冗長構成について補足すると、Catalyst 9000 を StackWise Virtual で束ねている場合、2 台を 1 台の論理スイッチとして扱うため、VLAN や SVI の設定は仮想スタック全体で共通になります。上位へのアップリンクは、両筐体にまたがる MEC(Multichassis EtherChannel)で束ねる構成が一般的です。SVL や DAD を含む構築手順は、前掲の関連記事『Catalyst 9000 StackWise Virtual 設定の手順|SVL と DAD のポイント』を参照してください。
参考: Cisco Consolidated Platform Configuration Guide, Cisco IOS XE 15.2(2)E(Catalyst 2960-XR Switch)
“supports a total of 255 VLANs when running the LAN base feature set.”
(LAN Base 機能セットで動作する場合、合計 255 VLAN までサポートする。)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960xr/software/15-2_2_e/consolidated_guide/b_1522e_consolidated_2960xr_cg/b_1522e_consolidated_2960xr_cg_chapter_0110100.html


まとめ
Catalyst の VLAN 設定は、VLAN の作成、ポートへのアクセス / トランクの割り当て、必要に応じた SVI でのルーティング、という流れに集約されます。拡張レンジ VLAN や StackWise Virtual といった機種・バージョン固有の前提を先に押さえておくことで、設定後のトラブルを減らせます。
- VLAN を作成しアクセスポートに割り当てて L2 を分離
- トランクは許可 VLAN を絞りネイティブ VLAN を明示する。
- 端末ポートのアクセス固定と DTP 無効化が VLAN ホッピング対策の基本
- ネイティブ VLAN を VLAN 1 から変更しユーザー通信を載せない。
- VLAN 間ルーティングは ip routing の有効化と SVI で実現する。
- SVI は VLAN 内に up したポートが無いと有効にならない。
- 拡張レンジ VLAN は VTP モードに注意し公式リファレンスで確認する。
以上、最後までお読みいただきありがとうございました。


