CCNA 200-301のVLAN問題、ぶっちゃけ「access portとtrunk portの違いは?」レベルなら誰でも解ける。でも本番で出てくるのは、Native VLANのミスマッチを見抜かせたり、allowed vlanの計算をさせたり、802.1Qのタグの有無をパケットフローで追わせたり、地味にいやらしい問題ばっかり。
この記事では、私が現場で実際に組んでハマった構成と、CCNA本番で問われたパターンを紐付けながら、VLAN/Trunk問題を「暗算で30秒以内に解く」ための型をまとめる。図と表を多めに入れたので、紙とペンを使わずに頭の中だけで処理できるようになる。
access port・trunk portの本質的な違い
access portは1つのVLANにしか所属できない。一方trunk portは複数VLANのフレームをタグ付けして運ぶ。これだけ覚えても解けない問題が出るので、「タグが付くか付かないか」を毎回意識すること。
新人の頃、客先のCatalyst 2960でaccess portにVLAN 10を割り当てたつもりが、show vlan briefで該当VLANが「Po1, Gi0/1」みたいにtrunkとaccessが混在しててパニックになった。switchport mode access って明示的に打たないと、デフォルトのdynamic autoでtrunkに化けることがある。これ、CCNAの問題でも引っかけで出てくる。
802.1Qヘッダの構造
802.1Qはイーサネットフレームの送信元MACアドレスの直後に4バイトのVLANタグを挿入する。内訳は次のとおり。
| フィールド | サイズ | 役割 |
|---|---|---|
| TPID | 2バイト | 0x8100固定。802.1Qフレームの目印 |
| PCP | 3ビット | CoS。QoSの優先度(0〜7) |
| DEI(CFI) | 1ビット | 優先廃棄フラグ。基本0 |
| VID | 12ビット | VLAN ID(0〜4095、有効1〜4094) |
VID=12ビット、つまり2の12乗で4096通り。0と4095は予約なので有効レンジは1〜4094。試験ではここを「VLAN IDは何個?」と聞いてくる。
Native VLANの本質
trunk portでもタグが付かないVLANが1つだけ存在する。それがNative VLAN。デフォルトはVLAN 1。トランク両端でNative VLANが揃ってないと、CDPがログを吐く(Native VLAN mismatch)。
Native VLANをVLAN 1のまま運用すると、VLAN hopping攻撃のリスクがある。CCNAの問題でも「セキュリティ上の推奨設定」として、Native VLANを未使用VLAN(例:999)にする選択肢が出てくる。これ、知らないと選べない。
DTPの動作で頭を整理する
CCNAの問題でほぼ100%出るのが、両端のswitchport modeを見て、最終的にaccessになるかtrunkになるかを答えるパターン。下表が暗記用。
| 対向の設定 | access | trunk | dynamic auto | dynamic desirable |
|---|---|---|---|---|
| access | access | 不整合 | access | access |
| trunk | 不整合 | trunk | trunk | trunk |
| dynamic auto | access | trunk | access | trunk |
| dynamic desirable | access | trunk | trunk | trunk |
覚え方は単純で、「auto同士はaccess、片方でもdesirableが入ればtrunk」。これだけ頭に入れとけば9割解ける。
Catalyst 9300などの新しめの機種ではデフォルトモードがdynamic auto。古いCatalyst 2950系はdynamic desirableだった。試験では「Cisco IOSのデフォルト」と書かれていたら基本dynamic autoで考えてOK。
access port設定の最小構成
Switch(config)# vlan 10 Switch(config-vlan)# name SALES Switch(config-vlan)# vlan 20 Switch(config-vlan)# name DEV Switch(config-vlan)# exit
Switch(config)# interface GigabitEthernet0/1 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 10 Switch(config-if)# spanning-tree portfast Switch(config-if)# no shutdown
switchport mode access を打たずにいきなり switchport access vlan 10 だけ入れる人がたまにいる。これだとデフォルトのdynamic auto/desirableのまま動くから、対向のモード次第で挙動が変わる。CCNAでは「先にmode access」と覚える。
trunk port設定とallowed vlan
Switch(config)# interface GigabitEthernet0/24 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk native vlan 999 Switch(config-if)# switchport trunk allowed vlan 10,20,30 Switch(config-if)# no shutdown
「encapsulation dot1q」はCatalyst 3560/3650など複数のトランクプロトコル(ISL)に対応する機種で必要。9300など新しい機種はdot1qのみなので不要。試験では「3560で必須」と覚えておく。
! 追加(既存の許可リストにVLAN 40を足す) Switch(config-if)# switchport trunk allowed vlan add 40 ! 削除(VLAN 30だけ取り除く) Switch(config-if)# switchport trunk allowed vlan remove 30 ! 全削除(VLAN 1すら通さない) Switch(config-if)# switchport trunk allowed vlan none ! 全VLAN許可(デフォルト状態に戻す) Switch(config-if)# switchport trunk allowed vlan all
allowed vlanを「add」抜きで打ち直すと、それまでのリストが上書きされる。本番のスイッチで switchport trunk allowed vlan 50 とか軽率に打って、既存の業務VLANごっそり吹っ飛ばすやつ、定期的に見る。試験でも「現状allowed vlan 10,20,30 → コマンド打ったら何が残る?」というドリブル問題が出る。
show interfaces trunkで一発確認
Switch# show interfaces trunk Port Mode Encapsulation Status Native vlan Gi0/24 on 802.1q trunking 999 Port Vlans allowed on trunk Gi0/24 10,20,30 Port Vlans allowed and active in management domain Gi0/24 10,20,30 Port Vlans in spanning tree forwarding state and not pruned Gi0/24 10,20,30
この4つのテーブルの違いは試験頻出。「allowed」は設定上の許可リスト、「allowed and active」は実際にVLANデータベースに存在しているもの、「in spanning tree forwarding」はSTPでBlockされていない実通信可能なVLAN。微妙な違いが選択肢に並ぶ。
図1: 確認コマンドの使用頻度(個人の実務体感)
95%
80%
55%
20%
CCNA頻出問題の暗算手順
問題形式は大体3パターン。順に処理する型を覚える。
| 問題パターン | 確認すべき項目 | 暗算のコツ |
|---|---|---|
| ポートモード判定 | 両端のswitchport mode | DTPマトリクスで4秒で判定 |
| Native VLAN不一致 | 両端のnative vlan値 | CDPログ “Native VLAN mismatch” |
| allowed vlan疎通不可 | trunkのallowed/active | 「両端allowed」かつ「VLAN存在」 |
VLANは作ったのに通信できない時
CCNAでも実務でも超頻出。原因は大体次の3つに収束する。
| 症状 | 原因 | 対処 |
|---|---|---|
| 同一スイッチ内すらNG | VLAN未作成 or shutdown状態 | vlan 10 → no shutdown |
| trunk越えだけNG | allowed vlanに含まれていない | allowed vlan add 10 |
| VLAN間がNG | L3デバイス(SVI/router)未設定 | SVI作成 + ip routing |
show vlan brief で目的のVLANが「active」になっているか必ず確認する。たまに、interface vlan 10 をno shutdownしただけで「VLAN自体」を作ってない、というケアレスミスをやらかす。SVIだけじゃなくて vlan 10(global config)も忘れずに。
Native VLAN mismatchの見分け方
%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on GigabitEthernet0/24 (1), with Switch2 GigabitEthernet0/24 (999).
こういうログが出たら100%Native VLAN不一致。意外と通信自体は両Native VLAN内のフレームだけ漏れて通っちゃうことがあって、それが余計にややこしい。両端そろえる、これだけ。
DTPの危険性とセキュリティ設定
余談だけど、サーバ収容のアクセスポートでもswitchport mode accessを明示しないと、DTPのネゴが原因で攻撃者が任意のVLANにフレームを送り込めてしまう。実務では nonegotiate か mode access を必ず打つ。
! DTPを完全に無効化(推奨) Switch(config-if)# switchport mode access Switch(config-if)# switchport nonegotiate ! trunkとして固定する場合もnonegotiateで安全側 Switch(config-if)# switchport mode trunk Switch(config-if)# switchport nonegotiate
VLAN問題を30秒で解くための型
VLAN問題は「ポートモード判定 → Native VLAN一致 → allowed vlan確認」の順に処理すればほぼ全パターン解ける。DTPマトリクス、802.1Qヘッダの4バイト、show interfaces trunkの4テーブル、この3つを暗記しておくのが最短ルート。実務でも同じ思考順序で動けば、深夜のトラブルでも30分以内に切り分けが完了する。
よくある質問(FAQ)
Q. switchport mode trunkとswitchport mode dynamic desirableはどう違う?
trunkは「常にtrunk固定」、dynamic desirableは「DTPで対向と交渉してtrunkに持ち込みたい」モード。対向がaccess固定なら、desirableはaccess動作にされる。trunkは無条件trunkだから、対向がaccessだと「不整合」になって通信できない。
Q. Native VLANはなぜVLAN 1から変えるべき?
VLAN 1はあらゆるCisco機器のデフォルトで使われていて、攻撃者が二重タグ(Double Tagging)でVLAN hopping攻撃を仕掛ける際の標的になりやすい。未使用のVLAN(例:999)に変更し、さらにallowed vlanからVLAN 1を除外するのが推奨構成。
Q. allowed vlan addを忘れて上書きしてしまった時のリカバリは?
show interfaces trunkで現状を確認したあと、switchport trunk allowed vlan all で全許可に戻し、必要なVLANだけ含むリストで再設定するのが安全。本番環境ではメンテ枠を取り、対向側のallowed設定とセットで作業する。トラブル時の原状復旧用にbackupを必ず取っておくこと。
Q. CCNA本番でVLAN問題は何問くらい出る?
200-301の出題比率では「ネットワークアクセス」が20%を占めていて、その中の中核がVLAN/Trunk/STP。私が受けた回は、VLAN直接の問題が3問、trunk絡みが2問、STPと混ざった問題が1問という感じだった。要するに、ここを落とすと合格点ギリギリまで追い込まれる。確実に取りに行く分野。


