Packet Tracer で Router-on-a-Stick を構築してみた〜L3 スイッチとの違いも比較〜

Packet Tracer で Router-on-a-Stick を構築してみた〜L3 スイッチとの違いも比較〜

Claude に要件定義書を作成してもらい、Cisco Packet Tracer でネットワーク構築を練習しました。VLAN 間ルーティングの方法として「Router-on-a-Stick」という構成を初めて知り、その仕組みと実装方法をまとめます。
2026.07.09

はじめに

Cisco Packet Tracer でのネットワーク構築を練習するにあたり、Claude に要件定義書を作成してもらい、それをもとに自分で設計・構築してみました。

要件定義書を自分で考えるのは難しいですが、Claude にネットワーク構築の要件定義書を依頼することで、リアルな練習課題を手軽に用意できます。今回はこの方法で学習を進めました。

設計を始める際、VLAN 間ルーティングの方法として「L3 スイッチで ip routing を有効にする方法」か「ルーターの物理インターフェースを複数使う方法」を考えていました。Claude にどちらが良いか相談したところ、Router-on-a-Stick(ルーターオンアスティック) という第 3 の方法を提案されました。今まで聞いたことがない構成だったので、実際に構築しながら「なぜこの方法が存在するのか」を調べてまとめました。


環境

  • Cisco Packet Tracer 9.0
  • ルーター:Cisco 2911
  • スイッチ:Cisco 2960

要件定義書から読み解いた設計方針

今回 Claude に作成してもらった要件定義書には、以下のような要件が含まれていました。

  • 総務部・営業部・サーバー室の 3 部署をネットワーク上で分離すること
  • DHCP で端末に自動的に IP アドレスを割り当てること
  • インターネット接続が必要

「部署ごとにネットワークを分離する」という要件から、VLAN を使った設計が必要だと判断しました。


VLAN 間ルーティングの方法を整理する

VLAN を切るのはすぐに決まりましたが、どうやって VLAN 間のルーティングを実現するかで迷いました。最初は方法①・方法②の 2 つを候補として考えていましたが、Claude に相談したところ方法③を提案されたため、最終的に 3 つを比較することにしました。

方法① L3 スイッチ(3560)+ ip routing

L3SW

L3 スイッチが VLAN 間のルーティングを直接担う構成です。スイッチ内部で処理が完結するため高速ですが、L3 スイッチは L2 スイッチより高価です。

方法② ルーターの物理インターフェースを VLAN ごとに用意する構成

L2SW

この方式では、VLAN ごとにルーターの物理インターフェースを消費します。L2 スイッチ自体は 1 台でも複数 VLAN を収容できますが、ルーター側の物理ポート数が VLAN 数に比例して必要になるため、VLAN が増えるとスケールしにくい構成です。

今回検討した構成ではルーターやスイッチの台数が増え、ポート数・機器台数の面で非効率だと判断し早い段階で却下しました。

方法③ Router-on-a-Stick(2911 + 2960)

L2_now

Claude に提案されて初めて知った構成です。ルーターの物理インターフェース 1 つサブインターフェースを作り、複数の VLAN を通します。サブインターフェースとは、1 つの物理インターフェースを論理的に複数に分割したもので、ルーター側ではサブインターフェースごとに encapsulation dot1Q <VLAN ID> を設定します。これにより、スイッチからトランクポート経由で届いた 802.1Q タグ付きフレームを、VLAN ID に応じて対応するサブインターフェースで処理できます。スイッチとルーター間はトランクポートで接続します。方法②と異なり、ルーターは 1 台で済むため、コストを抑えつつ VLAN 間ルーティングを実現できます。


「結局 L3 スイッチでよくない?」という疑問

構築を終えた後、率直にこう感じました。

「L3 スイッチの方がシンプルだし、トラフィックも速いのでは?」

調べた結果、L3 スイッチと Router-on-a-Stick にはそれぞれメリット・デメリットがありました。

方法 コスト 処理速度 向いている場面
L3 スイッチ(3560)+ ip routing ◎(スイッチ内部で完結) 予算に余裕がある・トラフィックが多い本番環境
ルーターの物理インターフェースを VLAN ごとに用意 中〜高(ルーターの物理ポートを消費) VLAN 数が少ない小規模構成
Router-on-a-Stick(2911 + 2960) △(トランクリンクに集中) 予算を抑えたい・既存の L2 スイッチを活かしたい環境

社内 LAN 内で VLAN 間通信が多い環境では、L3 スイッチでルーティングする構成が一般的です。スイッチ内部で処理できるため高速で、トランクリンク 1 本に VLAN 間通信が集中しにくいメリットがあります。

一方で、小規模環境や既存の L2 スイッチを活用したい場合、またはルーターやファイアウォール側で VLAN 間通信・NAT・セキュリティポリシーを集約したい場合は、Router-on-a-Stick 型の構成も選択肢になります。


Packet Tracer での構築手順

疑問が解消したところで、実際の構築手順を紹介します。

Step1. 機器の配置と接続

Packet Tracer 上に以下の機器を配置しケーブルで接続します。構成は方法③(Router-on-a-Stick)の図と同じです。

今回のポート割り当ては以下の通りです。

  • スイッチ Fa0/1 〜 Fa0/10:総務部 PC(VLAN10・DHCP)
  • スイッチ Fa0/11 〜 Fa0/20:営業部 PC(VLAN20・DHCP)
  • スイッチ Fa0/21:サーバー室(VLAN30・固定 IP)
  • スイッチ Gi0/1:ルーターへのトランクポート

Step2. スイッチの VLAN 設定

SW1> enable
SW1# configure terminal

! VLAN の作成
SW1(config)# vlan 10
SW1(config)# vlan 20
SW1(config)# vlan 30

Step3. スイッチのポート設定

! 総務部 PC(Fa0/1〜Fa0/10)を VLAN10 に割り当て
SW1(config)# interface range fa0/1 - 10
SW1(config-if-range)# switchport mode access
SW1(config-if-range)# switchport access vlan 10

! 営業部 PC(Fa0/11〜Fa0/20)を VLAN20 に割り当て
SW1(config)# interface range fa0/11 - 20
SW1(config-if-range)# switchport mode access
SW1(config-if-range)# switchport access vlan 20

! サーバー室(Fa0/21)を VLAN30 に割り当て
SW1(config)# interface fa0/21
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 30

! ルーターへの接続ポートをトランクポートに設定
SW1(config)# interface gi0/1
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk allowed vlan 10,20,30

interface range コマンドを使うことで、複数ポートをまとめて設定できます。

Step4. ルーターのサブインターフェース設定

ここが Router-on-a-Stick の核心部分です。物理インターフェース Gi0/0 に対してサブインターフェースを VLAN ごとに作成します。端末のデフォルトゲートウェイはこのサブインターフェースの IP アドレスになります。

R1> enable
R1# configure terminal

! 物理インターフェースを有効化(IP は付けない)
R1(config)# interface gi0/0
R1(config-if)# no shutdown

! VLAN10 用サブインターフェース(総務部のゲートウェイ)
R1(config)# interface gi0/0.10
R1(config-subif)# encapsulation dot1Q 10
R1(config-subif)# ip address 192.168.10.1 255.255.255.0
R1(config-subif)# ip nat inside

! VLAN20 用サブインターフェース(営業部のゲートウェイ)
R1(config)# interface gi0/0.20
R1(config-subif)# encapsulation dot1Q 20
R1(config-subif)# ip address 192.168.20.1 255.255.255.0
R1(config-subif)# ip nat inside

! VLAN30 用サブインターフェース(サーバー室のゲートウェイ)
R1(config)# interface gi0/0.30
R1(config-subif)# encapsulation dot1Q 30
R1(config-subif)# ip address 192.168.30.1 255.255.255.0
R1(config-subif)# ip nat inside

Step5. DHCP の設定

VLAN10(総務部)と VLAN20(営業部)は DHCP で自動割り当て、VLAN30(サーバー室)は固定 IP のため DHCP 設定は不要です。

! .1〜.9 はゲートウェイ等に予約。DHCP の払い出しは .10 以降になる
! VLAN10 向け DHCP プール(総務部・自動割り当て)
R1(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.9
R1(config)# ip dhcp pool VLAN10
R1(dhcp-config)# network 192.168.10.0 255.255.255.0
R1(dhcp-config)# default-router 192.168.10.1
! 本記事では DNS サーバーの構築および名前解決の確認は対象外
R1(dhcp-config)# dns-server 8.8.8.8

! VLAN20 向け DHCP プール(営業部・自動割り当て)
R1(config)# ip dhcp excluded-address 192.168.20.1 192.168.20.9
R1(config)# ip dhcp pool VLAN20
R1(dhcp-config)# network 192.168.20.0 255.255.255.0
R1(dhcp-config)# default-router 192.168.20.1
! 本記事では DNS サーバーの構築および名前解決の確認は対象外
R1(dhcp-config)# dns-server 8.8.8.8

! VLAN30(サーバー室)は固定 IP のため DHCP 設定なし
! サーバー側で IP アドレス・サブネットマスク・デフォルトゲートウェイを手動設定する

Step6. NAT・デフォルトルートの設定

! WAN 側インターフェース
! 203.0.113.0/24 は RFC 5737 で定められたドキュメント用アドレス(TEST-NET-3)
! 実環境では ISP などから割り当てられたアドレスを使用する
R1(config)# interface gi0/1
R1(config-if)# ip address 203.0.113.1 255.255.255.252
R1(config-if)# ip nat outside
R1(config-if)# no shutdown

! NAT 設定(名前付きアクセスリストを使用)
R1(config)# ip access-list standard NAT_SOURCE
R1(config-std-nacl)# permit 192.168.0.0 0.0.255.255
R1(config)# ip nat inside source list NAT_SOURCE interface gi0/1 overload

! デフォルトルート
R1(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.2

動作確認

構築完了後、PC1 から以下の 3 パターンで疎通確認を行いました。なお、すべて Packet Tracer 上のシミュレーション結果です。

VLAN 間通信(VLAN10 → VLAN20)

PC1(VLAN10)から PC2(VLAN20・DHCP で割り当てられた IP)への ping です。

ping-pc

サーバーへの通信(VLAN10 → VLAN30)

PC1(VLAN10)からサーバー(VLAN30・192.168.30.10・固定 IP)への ping です。

ping-server

外部ネットワーク接続確認

PC1 から、Packet Tracer 上に用意した外部ネットワーク側の 8.8.8.8 へ ping を実行しました。この確認により、内部ネットワークから外部ネットワークへの通信と NAT の動作を確認しました。

なお、これは Packet Tracer 上の疑似外部ネットワークへの疎通確認であり、実インターネット上の Google Public DNS に到達しているわけではありません。

ping-dns

NAT が正しく動作していることは show ip nat translations でも確認できます。ping 直後に実行することで NAT の変換テーブルを確認できます。

スクリーンショット 2026-07-08 16.23.29

項目 意味
Inside global NAT 後のアドレス(203.0.113.1 = WAN 側 IP)
Inside local NAT 前のアドレス(192.168.10.10 = PC1 の実際の IP)
Outside local / global 宛先アドレス(8.8.8.8)

PC1(192.168.10.10)が WAN 側 IP(203.0.113.1)に変換されて外部ネットワークに出ていることが確認できます。

3 パターンすべてで疎通確認ができました。


詰まったポイント

encapsulation dot1Q の設定漏れ

サブインターフェースを作成しただけでは動きません。encapsulation dot1Q <VLAN番号> を設定して初めて、そのサブインターフェースがどの VLAN ID の 802.1Q タグ付きフレームを処理するのかを判断できるようになります。

② 物理インターフェースに IP を付けてしまった

Gi0/0 自体に IP アドレスを付けてしまうと、サブインターフェースとの競合が起きます。物理インターフェースは no shutdown だけで、IP アドレスはサブインターフェース側に付けるのが正しい設定です。

③ NAT の ip nat inside をサブインターフェースに設定し忘れた

今回のように VLAN ごとにサブインターフェースを作成している場合、ip nat inside は NAT 対象となる各サブインターフェースに設定する必要があります。親インターフェース Gi0/0 に設定しても、サブインターフェース側には適用されません。

! ❌ 今回のサブインターフェース構成では不十分な例
! 親インターフェースに設定しても、各サブインターフェースには適用されない
R1(config)# interface gi0/0
R1(config-if)# ip nat inside

! ✅ 正しい書き方:NAT 対象となるサブインターフェースごとに設定する
R1(config)# interface gi0/0.10
R1(config-subif)# ip nat inside
R1(config)# interface gi0/0.20
R1(config-subif)# ip nat inside
R1(config)# interface gi0/0.30
R1(config-subif)# ip nat inside

この設定が漏れると、VLAN 間の通信は問題なくできるのにインターネットへの通信だけ失敗するという状況になります。ping の結果を確認しながら原因を特定するまでに時間がかかりました。


まとめ

方法 コスト 処理速度 向いている場面
L3 スイッチ(3560)+ ip routing 本番環境・トラフィックが多い環境
ルーターの物理インターフェースを VLAN ごとに用意 中〜高(ルーターの物理ポートを消費) VLAN 数が少ない小規模構成
Router-on-a-Stick(2911 + 2960) 低予算環境・既存機器を活かしたい場合・学習用途

Router-on-a-Stick は「なぜこの構成が存在するのか」を最初は理解できませんでしたが、調べることでコスト・ポート数・トラフィック量の観点での使い分けが見えてきました。VLAN とトランクの仕組みを理解するという意味では、Router-on-a-Stick を一度手を動かして構築してみることに価値があると感じました。


クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイトをぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました。

この記事をシェアする

関連記事