VLANを切ったまではいいけど、いざ部署間で通信させたい段階になって「あれ、ping通らない」と固まる。これ、現場でめちゃくちゃよくある。VLAN間ルーティングは設定自体はシンプルなんだけど、L3スイッチでSVIを使うのか、ルーターでサブインターフェース(Router-on-a-stick)でやるのか、最初の選択でその後の運用しやすさが大きく変わる。
本記事では、Cisco Catalyst 9300とCisco ISR 4321を使って実機検証した結果をベースに、両方式の違い・コマンド・通らないときの切り分けまで一気に解説する。CCNA勉強中の方にも、現場でVLAN設計を任された若手エンジニアにも刺さる内容にしたつもり。
VLANを分けたら、別VLAN同士は通信できなくなる
VLANはL2のブロードキャストドメインを論理的に分割する仕組み。同じスイッチに繋がっていても、VLAN10とVLAN20のPCはそのままだと通信できない。ここでL3の介在が必要になる。VLANに割り当てたサブネット同士をルーティングで繋ぐ、これがVLAN間ルーティングの正体です。
で、L3で繋ぐ方法は大きく2つある。L3スイッチでSVI(Switched Virtual Interface)を切る方式と、L2スイッチ+ルーターでサブインターフェースを切る方式(俗に言うRouter-on-a-stick)。どちらが正解かはネットワーク規模と予算次第。
数年前、客先で「予算がないからL2スイッチ+ルーター1台で60台のPCを5VLANに分けたい」という案件があった。最初は試しにRouter-on-a-stickを組んだんだけど、ピーク時にCPU使用率が80%を超えてしまって、結局1年後にL3スイッチへリプレース。最初からL3スイッチにしておけばと、けっこう後悔した。
スループット・運用性・コストで見比べる
違いを言葉で並べてもピンと来ないので、実機で計測した数字を交えて図にした。Catalyst 9300(SVI)とISR 4321(Router-on-a-stick)でそれぞれ4VLAN間のiPerf3スループットを測ったときの結果がベース。
図1: SVI vs Router-on-a-stick 実測比較(数値はざっくり目安)
~9.4Gbps
~900Mbps
85%
60%
| 比較項目 | SVI(L3スイッチ) | Router-on-a-stick |
|---|---|---|
| 処理方式 | ハードウェアASIC処理 | ソフトウェアCPU処理 |
| スループット目安 | 数Gbps〜数十Gbps | 数百Mbps〜1Gbps程度 |
| 必要機器 | L3スイッチ1台 | L2スイッチ+ルーター |
| 必要なリンク数 | 論理リンクのみ(SVI) | 物理1本にトランクで集約 |
| 向いている規模 | 中規模〜大規模オフィス | 小規模・検証環境・拠点 |
| コスト感 | 機器単価は高い | 既存の機材を流用しやすい |
| 運用しやすさ | SVIごとに整理しやすい | 物理障害でVLAN全滅の恐れ |
CCNA試験の文脈では、Router-on-a-stickという呼称は半ば慣用句。日本語では「ワンアームルーティング」と書かれた本もあるけど、現場では英語表記のほうが通じやすい印象。
Catalyst 9300での設定手順を実機ベースで
構成は超シンプル。VLAN10(営業部・192.168.10.0/24)とVLAN20(開発部・192.168.20.0/24)を切って、L3スイッチ上のSVIで両者をルーティングする。
| VLAN ID | 用途 | SVI IPアドレス | DHCP範囲 |
|---|---|---|---|
| 10 | 営業部 | 192.168.10.1/24 | .100〜.200 |
| 20 | 開発部 | 192.168.20.1/24 | .100〜.200 |
SW1(config)# vlan 10 SW1(config-vlan)# name SALES SW1(config-vlan)# exit SW1(config)# vlan 20 SW1(config-vlan)# name DEV SW1(config-vlan)# exit SW1(config)# interface range Gi1/0/1 - 12 SW1(config-if-range)# switchport mode access SW1(config-if-range)# switchport access vlan 10 SW1(config)# interface range Gi1/0/13 - 24 SW1(config-if-range)# switchport mode access SW1(config-if-range)# switchport access vlan 20
SW1(config)# interface vlan 10 SW1(config-if)# ip address 192.168.10.1 255.255.255.0 SW1(config-if)# no shutdown SW1(config-if)# exit SW1(config)# interface vlan 20 SW1(config-if)# ip address 192.168.20.1 255.255.255.0 SW1(config-if)# no shutdown SW1(config-if)# exit ! ★これが必須。これを忘れるとSVI間がルーティングしない SW1(config)# ip routing
CatalystのL3対応スイッチでも、デフォルトでは ip routing が有効になっていないモデルがある(特にIP Liteライセンス機)。show running-configにip routingが出ていないと、SVIに正しいIPを振っても永遠にpingが通らない。最初これでハマって、深夜2時に冷や汗かいた経験あり。
L2スイッチとISR 4321を1本のトランクで繋ぐ
こちらは「L2スイッチ ⇄ トランクリンク ⇄ ルーター」の構成。ルーター側にサブインターフェース(GigabitEthernet0/0/1.10 のように .VLANID で切る)を作り、各VLANのデフォルトゲートウェイを担当させる。トランクポートでタグVLANをまとめて運ぶイメージ。
SW1(config)# vlan 10 SW1(config-vlan)# name SALES SW1(config-vlan)# exit SW1(config)# vlan 20 SW1(config-vlan)# name DEV SW1(config-vlan)# exit ! ルーター直結ポートをトランクに SW1(config)# interface Gi1/0/24 SW1(config-if)# switchport trunk encapsulation dot1q SW1(config-if)# switchport mode trunk SW1(config-if)# switchport trunk allowed vlan 10,20
R1(config)# interface GigabitEthernet0/0/1 R1(config-if)# no ip address R1(config-if)# no shutdown R1(config-if)# exit ! VLAN10用サブインターフェース R1(config)# interface GigabitEthernet0/0/1.10 R1(config-subif)# encapsulation dot1Q 10 R1(config-subif)# ip address 192.168.10.1 255.255.255.0 R1(config-subif)# exit ! VLAN20用サブインターフェース R1(config)# interface GigabitEthernet0/0/1.20 R1(config-subif)# encapsulation dot1Q 20 R1(config-subif)# ip address 192.168.20.1 255.255.255.0 R1(config-subif)# exit
サブインターフェース番号とdot1Q番号は別物。慣習として揃えるけど、合わなくても動くから余計に混乱しやすい。encapsulation dot1Q [VLAN ID] のVLAN IDだけが本物のVLAN番号。サブインターフェース.10だからVLAN10、ではない。ここはCCNAでも問われやすいポイント。
ネイティブVLAN(タグなし)を使うときは encapsulation dot1Q [ID] native と書く。トランク両側でnative VLANが揃っていないとCDPの警告が出るから、設定は対向と揃えるのが鉄則。
show系コマンドで設定が当たっているか確認する
設定をbutに、すぐに「やった、終わり」とはせず、必ず show コマンドで確認する習慣をつけたい。SVI構成のときの確認コマンドはこの3つで十分。
SW1# show ip interface brief | include Vlan Vlan10 192.168.10.1 YES manual up up Vlan20 192.168.20.1 YES manual up up SW1# show ip route connected C 192.168.10.0/24 is directly connected, Vlan10 C 192.168.20.0/24 is directly connected, Vlan20 SW1# show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 10 SALES active Gi1/0/1, Gi1/0/2 ... 20 DEV active Gi1/0/13, Gi1/0/14 ...
R1# show ip interface brief | include 0/0/1 GigabitEthernet0/0/1 unassigned YES NVRAM up up GigabitEthernet0/0/1.10 192.168.10.1 YES manual up up GigabitEthernet0/0/1.20 192.168.20.1 YES manual up up R1# show vlans Virtual LAN ID: 10 (IEEE 802.1Q Encapsulation) vLAN Trunk Interface: GigabitEthernet0/0/1.10 ... ! L2スイッチ側でトランクが上がっているかも見ておく SW1# show interface trunk Port Mode Encapsulation Status Native vlan Gi1/0/24 on 802.1q trunking 1
PCのデフォルトゲートウェイをそれぞれのSVI/サブインターフェースのIPに向けたら、別VLANのPC同士でping。返ってきたら勝ち。返ってこなかったら次のセクションへどうぞ。
VLAN間ルーティングが通らない時の典型パターン
現場で本当によく出る原因をエラーメッセージ付きで一覧にした。show ip routeに該当ルートがいない場合は、まずこの表で当てはまる行を探すと早い。
| 症状 | 原因 | 対処法 |
|---|---|---|
| SVI同士もpingが通らない | ip routingが無効 | グローバルでip routingを投入 |
| SVIがadministratively down | no shutdown忘れ | interface vlanでno shutdown |
| SVIがdown/down | そのVLANのアクセスポートに何も繋がっていない | PC接続 or no autostate設定 |
| PC→GW自体がping不通 | アクセスポートのVLAN割当ミス | show vlan briefで所属確認 |
| 片方のVLANだけ通信不可 | trunk allowed vlanに含まれていない | switchport trunk allowed vlan addで追加 |
| サブインターフェース無反応 | 親IFがshutdownのまま | 親IFでno shutdown |
| 時々パケロス | Router CPU過負荷 | show processes cpuで確認、L3SWへ移行検討 |
! 経路の有無を見る show ip route ! 物理ポートのVLAN所属を見る show interface status show vlan brief ! トランクの状態と通すVLANを見る show interface trunk ! ARPの引きが正しいか確認 show ip arp ! 重い時のCPU消費プロセスを特定 show processes cpu sorted | exclude 0.00
「とりあえずreloadしたら直るかも」は最後の手段。VLAN間ルーティングは設定の論理ミスがほとんどで、再起動で症状が変わったらむしろ別問題(SVIの再起動時UPタイミング等)を疑う。本番環境では特に、show系で1つずつ潰していくのが結果的に一番早い。
SVIとRouter-on-a-stickの選び方
中規模以上、または将来的にトラフィックが増えそうな環境はSVI一択。スループットとASIC処理の恩恵で安心して任せられる。逆に、小規模拠点や検証環境、既存ルーターを活かしたい場面ではRouter-on-a-stickが現実解。設定では ip routing と encapsulation dot1Q の漏れがVLAN間ルーティング不通の二大原因なので、まずそこを疑う。
よくある質問(FAQ)
Q. L3スイッチがあるのにRouter-on-a-stickを使う場面はある?
あるある。検証環境とか、特定VLANだけWAN側ルーターと直結したい構成、あとはACL・QoS・VRFをルーター側に寄せたい場合など。要件次第で意外とハマるパターン。
Q. ip routingコマンドはなぜグローバルで必要?
L3スイッチでもデフォルトはL2モード相当で動いていることが多く、ルーティングテーブルを使った転送をオンにする宣言が ip routing。これを入れない限り、SVI同士でも別サブネット間のパケットは破棄される。
Q. Router-on-a-stickでネイティブVLANの設定は必須?
必須ではない、けど対向L2スイッチのトランクnative VLANと一致させないとCDPで毎回怒られる。タグなしフレームで運ぶVLANを使うなら設定が必要。基本的には合わせておくのが事故防止のコツ。
Q. VLAN間ルーティングのRFCって何を読めばいい?
VLANタギング自体はIEEE 802.1Qで規定されている標準。RFCというよりIEEE規格を当たるのが正しいルート。Ciscoの公式ドキュメントだと「Configuring InterVLAN Routing」セクションが詳しい。CCNA勉強用ならOfficial Cert Guideの該当章で十分カバーできる。



