VTPとは何か
VTP(VLAN Trunking Protocol)は、シスコ独自のプロトコルで、スイッチ間でVLAN情報を自動的に同期する仕組みです。具体的には、トランクポートを通じて「VTPアドバタイズメント」と呼ばれるメッセージを送り合うことで、同じVTPドメインに所属する全スイッチにVLANの追加や削除、名前の変更といった情報が一括で反映されます。
つまり、1台のスイッチでVLANを設定すれば、他のスイッチにも自動的に伝わるため、管理の手間を減らすことができるわけです。
ただし、この同期は「VTPドメイン名」が一致している場合のみ行われます。異なるドメイン間では情報が伝わらない仕組みになっており、さらにCatalystスイッチは1つのドメインにしか所属できません。また、VTPはトランクポート経由でのみ機能するため、スイッチ間は必ずトランク接続である必要があります。
VTPの3つのモード
VTPにはサーバ、クライアント、トランスペアレントの3種類の動作モードがあり、各スイッチはそのいずれかで動作します。デフォルトはサーバモードです。
- サーバモード
VLANの作成・削除・変更が可能で、その情報を他のスイッチに通知します。他のサーバやクライアントから通知を受けると、自身の情報も同期されます。ネットワークの中心的な役割を担うスイッチがこのモードになります。 - クライアントモード
自身でVLANの作成や削除はできませんが、サーバから受け取ったVLAN情報を同期して利用します。また、通知をそのまま別のスイッチへ転送します。受け身で動くモードと考えるとイメージしやすいです。 - トランスペアレントモード
VLANの作成や削除は可能ですが、その情報は他のスイッチには伝えません。逆に、受け取った通知を自身には反映しませんが、そのまま他のスイッチへ転送します。つまり「自分のVLANは自分で管理する」動きです。試験では「他のスイッチと同期したくない場合はトランスペアレントモードにする」と問われやすいので必ず覚えておきましょう。
コンフィグレーションリビジョン番号
VTPでは、最新のVLAN情報を正しく反映させるために「コンフィグレーションリビジョン番号」という仕組みを使います。これは、サーバモードのスイッチでVLANの設定を変更するたびに数値が1ずつ増え、アドバタイズメントで配布されます。スイッチはこの番号を比較し、自分が持っている番号より大きいものを受け取ったら、その情報を「最新」と判断して置き換える仕組みです。
ここで問題となるのが、新しいスイッチを既存ネットワークに追加する場面です。もし新しいスイッチのリビジョン番号が既存より大きい場合、中身が空でも「最新」と判断され、既存のVLAN情報がすべて消えてしまいます。これを防ぐため、新しいスイッチはネットワークに組み込む前に一度トランスペアレントモードにしてリビジョン番号を0にリセットしてから導入することが推奨されています。
このリスクのため、実際のネットワーク設計ではVTPを使わず、各スイッチを個別に管理する方が一般的です。
VTPプルーニング
VTPには「VTPプルーニング」という機能もあります。これは、トランクリンクを通る不要なVLANのトラフィックを自動的に抑制する仕組みです。例えば、あるVLANのホストが特定のスイッチに存在しない場合、そのVLANのブロードキャストやマルチキャストを無駄に転送しないようにして帯域を節約します。
ただし、デフォルトVLAN(VLAN 1 や VLAN 1002〜1005)はプルーニングの対象外となる点には注意が必要です。
VTPのバージョン
VTPには3種類のバージョンがあります。
- VTP version 1:基本機能を持つ最初のバージョン。
- VTP version 2:トークンリング対応や認識不能なTLVを扱えるようになっています。ただしversion 1との互換性はないため、同じドメインでは全スイッチのバージョンを揃える必要があります。
- VTP version 3:拡張VLAN(1006~4094)までをサポートし、より大規模な環境でも利用できるようになりました。
VTPの基本設定方法
VTPを利用する場合は、スイッチに対してバージョンやドメイン名、モードなどを設定していきます。ここでは、代表的な設定手順と確認コマンドを整理して解説します。試験でも「どのコマンドで何を設定するのか」が問われやすいので、流れを理解しておきましょう。
VTPバージョンの設定
VTPのデフォルトバージョンは version 1 です。もしネットワークでトークンリングを利用する場合には version 2 を選択します。バージョンの指定は、VTPドメイン全体に1台設定すれば同期されます。
設定コマンドは次の通りです。
(config)# vtp version [1 | 2 | 3]
VTPドメインの設定
VTPを使うには、まず「VTPドメイン名」を設定する必要があります。ドメイン名は大文字小文字を区別する点に注意してください。また、一度設定すると削除はできず、初期状態に戻すにはスイッチの初期化が必要になります。初期化の際は次の2つを忘れずに実行します。
write erase(設定の削除)delete vlan.dat(VLANデータベースの削除)
設定コマンドは以下の通りです。
(config)# vtp domain domain-name
例:
(config)# vtp domain ABC
VTPモードの設定
スイッチはデフォルトでサーバモードになっています。もしVTPを利用しない設計にする場合は、トランスペアレントモードに変更しておくことが推奨されます。
(config)# vtp mode [ server | client | transparent ]
VTPパスワードの設定(オプション)
セキュリティを高めたい場合はVTPパスワードを設定します。これにより、同じドメイン名であってもパスワードが一致しなければVTPに参加できなくなります。
(config)# vtp password password
例:
(config)# vtp password cisco
VTPプルーニングの設定(オプション)
トランクリンク上で不要なVLANのトラフィックを抑制するVTPプルーニングは、サーバモードのスイッチ1台に設定するだけで、そのドメイン内に反映されます。トランスペアレントモードのスイッチには同期されません。
有効化:
(config)# vtp pruning
無効化:
(config)# no vtp pruning
VTPのステータス確認
設定後に、現在の状態を確認するには次のコマンドを使います。
Switch# show vtp status
出力例の読み方は以下の通りです。
- running VTP1:稼働中のバージョン。サポートバージョンも併せて表示されます。
- コンフィグレーションリビジョン番号:最新の更新番号。初期状態は0。
- サポートVLAN数:機種によって異なります。
- 現在存在するVLAN数:デフォルトでは標準のVLANのみ。
- モード:サーバ / クライアント / トランスペアレントのいずれか。デフォルトはサーバ。
- ドメイン名:設定されているVTPドメイン名。未設定時は空欄。
- プルーニング状態:有効か無効か。デフォルトでは無効。
- VTP version 2 のモード:無効がデフォルト。
- トラップ通知:通常は無効。
- 最後にアドバタイズメントを送ったスイッチ:同期の起点を確認可能。
設定変更後の確認
実際にネットワーク構成を組むときは、代表的なサーバスイッチ(例:SW1)に対してVTPドメインやモードを設定し、その後にクライアントスイッチ(SW2、SW3)を接続して同期されるかを確認します。
各スイッチで show vtp status を実行すると、リビジョン番号やドメイン名が一致しているか、プルーニングやパスワードが反映されているかを確認できます。特に「サーバで作ったVLANがクライアントに反映されているか」が試験でも狙われやすいので注意しておきましょう。
VLAN間ルーティングとは
スイッチでVLANを作成すると、各VLANは独立したブロードキャストドメインになります。つまり、VLAN同士は直接通信できません。L2スイッチにはルーティング機能がないため、異なるVLAN間で通信を行うにはL3スイッチやルータといったルーティング機能を持つ機器が必要です。
例えば、VLANを使わずにセグメントを分けた場合は、ルータを介して各セグメント間で通信を行います。同様に、VLANを利用した場合も、L2スイッチとL3スイッチ(あるいはルータ)の間で接続を行い、ルーティングによってVLAN間通信を可能にします。このとき、L2スイッチとルータの接続は、同じVLAN IDのアクセスポートで接続するか、トランクポートで複数VLANをまとめて転送する必要があります。
1台のスイッチ上でのVLAN間ルーティング
1台のスイッチ上に複数のVLANを作った場合、それぞれのVLANに属する端末同士は直接通信できません。もしVLAN 10 と VLAN 20 の間で通信したいなら、ルータを介してルーティングを行う必要があります。
単純に2つのVLANだけであれば、それぞれのVLANごとにスイッチポートをルータの別々の物理インターフェースにつなげれば解決します。しかし、VLANが3つも4つも存在するような環境では、その数だけルータのインターフェースが必要になり、現実的ではありません。
そこで登場するのが「1つの物理リンクを複数のVLANで共有する」方法です。この仕組みはスイッチ側のトランクポートと、ルータ側のサブインターフェースを組み合わせて実現します。
サブインターフェースとは
ルータはスイッチのように直接トランクポートをサポートしていません。そこで「サブインターフェース」という機能を使います。これは物理インターフェースを論理的に分割して、VLANごとに異なるインターフェースのように扱える仕組みです。
例えば、ルータに FastEthernet0/0 という物理インターフェースがあるとします。このインターフェースを VLAN ごとに分割する場合は以下のように定義します。
- FastEthernet0/0.10(VLAN 10 用)
- FastEthernet0/0.20(VLAN 20 用)
- FastEthernet0/0.30(VLAN 30 用)
このように作ったサブインターフェースに対して、それぞれのVLANに対応するIPアドレスを割り当てます。また、サブインターフェースには「どのVLANタグを扱うか」を指定するために、encapsulation dot1q VLAN-ID という設定を行います。
こうすることで、ルータの1つの物理インターフェースで複数のVLANに対応でき、結果としてVLAN間ルーティングを効率よく実現できます。
試験では、この仕組みを「Router on a Stick(一本のケーブルで複数VLANを処理する構成)」と呼ぶことがあります。特にサブインターフェースの設定方法と、encapsulation dot1q の指定がよく出題されるポイントです。
サブインターフェースを使ったVLAN間ルーティングの設定方法
複数のVLANを1本の物理インターフェースでルーティングする仕組みを「サブインターフェースによるVLANルーティング(Router on a Stick)」と呼びます。ここではその設定手順と実際の動作を整理して解説します。試験でも「どの段階で何を設定するか」がよく出題されるので、流れをしっかり理解しておきましょう。
サブインターフェースの作成
ルータの物理インターフェースを論理的に分割して、各VLANごとにサブインターフェースを作成します。サブインターフェース番号に意味はありませんが、VLAN IDと合わせておくと分かりやすくなります。
(config)# interface FastEthernet0/0.10
この例では物理インターフェース Fa0/0 を VLAN 10 用のサブインターフェースにしています。
カプセル化タイプとVLAN IDの指定
作成したサブインターフェースには、どのVLANのトラフィックを扱うかを指定します。ここで使うのが encapsulation コマンドです。
- ISL を使う場合は
encapsulation isl VLAN-ID - 802.1Q を使う場合は
encapsulation dot1q VLAN-ID - ネイティブVLANを設定する場合は
nativeを追加
例(802.1Qの場合):
(config-subif)# encapsulation dot1q 10
ネイティブVLAN(例:VLAN 1)の場合:
(config-subif)# encapsulation dot1q 1 native
IPアドレスの設定
各サブインターフェースは、VLANのデフォルトゲートウェイとして動作します。そのため、VLANごとのネットワークに属するIPアドレスを設定します。
(config-subif)# ip address 192.168.10.254 255.255.255.0
このアドレスは、VLAN 10 内の端末が「デフォルトゲートウェイ」として設定するアドレスになります。
設定例(ISLを使用する場合)
ISLではネイティブVLANの概念がないため、全てのVLANでタグを付ける必要があります。
ルータ側設定:
Router(config)# interface FastEthernet0/0.1
Router(config-subif)# encapsulation isl 1
Router(config-subif)# ip address 192.168.1.254 255.255.255.0
Router(config)# interface FastEthernet0/0.2
Router(config-subif)# encapsulation isl 2
Router(config-subif)# ip address 192.168.2.254 255.255.255.0
スイッチ側設定:
Switch(config)# interface FastEthernet0/24
Switch(config-if)# switchport trunk encapsulation isl
Switch(config-if)# switchport mode trunk
設定例(IEEE802.1Qを使用する場合)
802.1QではネイティブVLANを指定する必要があります。以下はVLAN 1 をネイティブVLANとした場合です。
ルータ側設定:
Router(config)# interface FastEthernet0/0.1
Router(config-subif)# encapsulation dot1q 1 native
Router(config-subif)# ip address 192.168.1.254 255.255.255.0
Router(config)# interface FastEthernet0/0.2
Router(config-subif)# encapsulation dot1q 2
Router(config-subif)# ip address 192.168.2.254 255.255.255.0
スイッチ側設定:
Switch(config)# interface FastEthernet0/24
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
なお、ルータの物理インターフェースをそのままネイティブVLANとして使用することも可能です。ただし一般的にはすべてサブインターフェースを用意する方法がよく使われます。
トラフィックの流れと障害時の動作
- 正常時
VLAN 1~3 の端末は、ルータを介して相互に通信できます。 - サブインターフェース未設定の端末
例えば VLAN に属していない端末 E は、他の端末と通信できません。通信させるには、ルータ側で新しいサブインターフェースを作成し、VLANルーティングを有効にする必要があります。 - スイッチ障害
VLANを収容しているスイッチがダウンすると、そのスイッチに接続された端末はすべて通信不能になります。 - ルータ障害
ルータ全体、もしくはトランク接続しているFa0/0がダウンした場合は、VLAN間ルーティングはできなくなります。ただし、同じVLAN内の通信(例:VLAN 2 内の端末BとCの通信)はそのまま可能です。
このように、サブインターフェースを使うことで1本のリンクで複数VLANを処理でき、効率的にVLAN間ルーティングを実現できます。