トランクポートとは

前の記事「VLANの設定と確認」で扱ったアクセスポートは、通常、データ用として1つのVLANを割り当てます。ただし、IP電話を接続するポートでは、音声用のvoice VLANを追加して、データVLANと音声VLANを併用できる場合があります。しかし、スイッチ間を接続するリンクでは、複数のVLANのトラフィックを1本の物理リンクだけでまとめて運びたい場合がほとんどです。この役割を果たすのがトランクポート(trunk port)です。

トランクポートは、1本の物理リンクの中で、どのフレームがどのVLANに属するかを区別できるように、フレームにVLANタグを付けて送受信します。

802.1Q

VLANタグを付ける方式として、業界標準として広く使われているのがIEEE 802.1Qです。802.1Qでは、Ethernetフレームのヘッダー部分に4バイトの802.1Qタグを挿入し、その中にVLAN IDの情報を含めます。受信側のスイッチは、このタグを見ることで、そのフレームがどのVLANに属するかを判断できます。

トランクポートの設定

インターフェイスコンフィギュレーションモードで、モードをトランクに設定します。

Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# switchport mode trunk

機種によっては、switchport mode trunkを実行する前に、トランクのカプセル化方式(802.1QまたはCisco独自のISL)を明示的に指定しておく必要があります。

Switch(config-if)# switchport trunk encapsulation dot1q

ISLと802.1Qの両方に対応したスイッチで、トランクカプセル化方式がautoになっている場合は、このコマンドで802.1Qを明示的に選択しておかないと、switchport mode trunkコマンドは拒否されます。一方、Catalyst 2960シリーズのような、現在の多くのアクセス層スイッチは802.1Qのみに対応しており、switchport trunk encapsulationコマンド自体が存在しない(設定自体が不要な)ことも多くなっています。

許可VLANの制限

トランクポートは、初期設定ではすべてのVLAN(1〜4094)が許可VLANリストに含まれています。ただし、実際にトラフィックを転送できるのは、スイッチ上に存在しアクティブなVLANなど、転送条件を満たすVLANです。必要なVLANだけに制限したい場合は、switchport trunk allowed vlanコマンドを使います。

Switch(config-if)# switchport trunk allowed vlan 10,20,100

この形式のコマンドは、許可VLANリストを指定した内容で置き換えます。既存のリストに追加・削除する場合は、switchport trunk allowed vlan add VLAN番号やswitchport trunk allowed vlan remove VLAN番号を使います。

不要なVLANのトラフィックまでトランクに流してしまうと、無駄なブロードキャストトラフィックの伝搬や、意図しないセキュリティ上の露出につながる可能性があるため、実運用では必要なVLANだけに絞り込むことが推奨されます。

ネイティブVLAN

Ciscoスイッチで802.1Qトランクを使用する場合、1つだけ特別な扱いを受けるVLANがあり、これをネイティブVLAN(native VLAN)と呼びます。Ciscoスイッチの通常の802.1Qトランクでは、トランクリンクを流れるフレームのうち、ネイティブVLANに属するフレームだけは、802.1Qタグを付けずに(タグ無しのまま)送信されます。それ以外のVLANのフレームには、タグが付けられます。対応機種では、グローバルコンフィギュレーションモードでvlan dot1q tag nativeを設定すると、ネイティブVLANのフレームにもタグを付けるように変更できます。

ネイティブVLANは、初期設定ではVLAN 1です。使用する前に、両端のスイッチでVLAN 99を作成しておきます。次のコマンドで変更できます。

Switch(config)# vlan 99
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# switchport trunk native vlan 99

ネイティブVLANの不一致(ミスマッチ)

トランクで接続された両端のスイッチで、ネイティブVLANの設定が食い違っていると、ネイティブVLANミスマッチという問題が発生します。片方のスイッチが送信したタグ無しフレームを、もう片方のスイッチが自分自身の(異なる)ネイティブVLANのフレームとして誤って解釈してしまうため、意図しないVLAN間でトラフィックが漏えいする可能性があり、接続性の問題だけでなくセキュリティ上のリスクにもなりますCDPが有効でCDP隣接関係を確立できるCisco製スイッチでは、CDPを使ってトランクの両端のネイティブVLAN設定を比較し、食い違いを検知すると%CDP-4-NATIVE_VLAN_MISMATCHというログメッセージを出力する仕組みが備わっています。トランクの両端で、ネイティブVLANの設定を必ず一致させることが重要です。[1]。

実運用では、セキュリティ上の理由から、ネイティブVLANとしてユーザーが使わない専用のVLAN番号を割り当て、デフォルトのVLAN 1をそのまま使わない設計がしばしば推奨されます。

設定の確認

トランクポートの設定内容は、show interfaces trunkコマンドでまとめて確認できます。

Switch# show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Gi0/1       on               802.1q         trunking      99

Port        Vlans allowed on trunk
Gi0/1       10,20,100

Port        Vlans allowed and active in management domain
Gi0/1       10,20,100

Port        Vlans in spanning tree forwarding state and not pruned
Gi0/1       10,20,100

この出力は、上から順に「モード・カプセル化方式・トランクの状態・ネイティブVLAN」「許可されているVLAN」「実際に存在し許可もされているVLAN」「スパニングツリー上でフォワーディング状態にあり、かつプルーニングされていないVLAN」の4つのブロックに分かれています。特に最後のブロックに含まれていないVLANは、設定上は許可されていても、スパニングツリーまたはプルーニングの状態により、そのトランクで転送できる状態にないことを意味するため、トラブルシューティングの際に重要な着眼点になります。

特定の1ポートだけを詳しく確認したい場合は、show interfaces GigabitEthernet0/1 switchportコマンドが使えます。

Switch# show interfaces GigabitEthernet0/1 switchport

Name: Gi0/1
Switchport: Enabled
Administrative Mode: trunk
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 99 (VLAN0099)

show interfaces trunkが、すべてのトランクポートを一覧で表示するのに対し、こちらは指定した1ポートについて、管理上設定したモード(Administrative Mode)と実際に動作しているモード(Operational Mode)、トランクのカプセル化方式、ネイティブVLANなどをまとめて確認できます。特定の1ポートだけがトランクとして機能していないような場合の切り分けに向いています。


補足

  1. CDPが有効でCDP隣接関係を確立できるCisco製スイッチでは、CDPを使ってトランクの両端のネイティブVLAN設定を比較し、食い違いを検知すると%CDP-4-NATIVE_VLAN_MISMATCHというログメッセージを出力する仕組みが備わっています。トランクの両端で、ネイティブVLANの設定を必ず一致させることが重要です。 ↩