Cisco VLAN間ルーティング設定手順|SVIとRouter-on-a-stickの使い分け【実機検証】

Cisco VLAN間ルーティング SVIとRouter-on-a-stickの構成図

VLANを切ったまではいいけど、いざ部署間で通信させたい段階になって「あれ、ping通らない」と固まる。これ、現場でめちゃくちゃよくある。VLAN間ルーティングは設定自体はシンプルなんだけど、L3スイッチでSVIを使うのか、ルーターでサブインターフェース(Router-on-a-stick)でやるのか、最初の選択でその後の運用しやすさが大きく変わる。

本記事では、Cisco Catalyst 9300とCisco ISR 4321を使って実機検証した結果をベースに、両方式の違い・コマンド・通らないときの切り分けまで一気に解説する。CCNA勉強中の方にも、現場でVLAN設計を任された若手エンジニアにも刺さる内容にしたつもり。

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スイッチにしておけばと、けっこう後悔した。

SVI方式とRouter-on-a-stickの違いを整理する

スループット・運用性・コストで見比べる

違いを言葉で並べてもピンと来ないので、実機で計測した数字を交えて図にした。Catalyst 9300(SVI)とISR 4321(Router-on-a-stick)でそれぞれ4VLAN間のiPerf3スループットを測ったときの結果がベース。

図1: SVI vs Router-on-a-stick 実測比較(数値はざっくり目安)

SVI スループット

~9.4Gbps

Router-on-a-stick

~900Mbps

SVI 設定の簡単さ

85%

Router-on-a-stick 設定難易度

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という呼称は半ば慣用句。日本語では「ワンアームルーティング」と書かれた本もあるけど、現場では英語表記のほうが通じやすい印象。

SVI(L3スイッチ)でVLAN間ルーティングを設定する

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
Step 1: 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 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
Step 2: SVIを作成してIPアドレスを設定する
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時に冷や汗かいた経験あり。

Router-on-a-stickでVLAN間ルーティングを設定する

L2スイッチとISR 4321を1本のトランクで繋ぐ

こちらは「L2スイッチ ⇄ トランクリンク ⇄ ルーター」の構成。ルーター側にサブインターフェース(GigabitEthernet0/0/1.10 のように .VLANID で切る)を作り、各VLANのデフォルトゲートウェイを担当させる。トランクポートでタグVLANをまとめて運ぶイメージ。

Step 3: L2スイッチ側 — トランクポートの設定
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
Step 4: ルーター側 — サブインターフェースの設定
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の警告が出るから、設定は対向と揃えるのが鉄則。

動作確認とping疎通テスト

show系コマンドで設定が当たっているか確認する

設定をbutに、すぐに「やった、終わり」とはせず、必ず show コマンドで確認する習慣をつけたい。SVI構成のときの確認コマンドはこの3つで十分。

SVI構成での確認コマンド
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 ...
Router-on-a-stick構成での確認コマンド
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 downno 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 routingencapsulation 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の該当章で十分カバーできる。