
YAMAHA RTX1200 で VLAN 間ルーティング(router on a stick)を構成してみた
こんにちは。リテールアプリ共創部のきんじょーです。
案件で Direct Connect 接続を構築する必要があり、オンプレミス側の解像度を深めるために、L2 スイッチと業務用ルーターで家庭内ネットワークを AWS に接続していきます。
前回の記事では、L2 スイッチ TL-SG108E で VLAN を作り、同じスイッチ・同じサブネットの端末が L2 のレベルで分離されることを確認しました。
今回は業務用ルーター YAMAHA RTX1200 を接続し、分離したセグメント間をルーティングで繋いで「店舗 LAN の縮小モデル」を完成させます。AWS への接続は次回以降です。
使用する機器
YAMAHA RTX1200 を使用します。3 つの LAN インターフェースを持つ業務用ルーターで、中古で 3,000〜4,000 円ほどで入手できます。生産終了品ですが、VLAN サブインターフェース・DHCP サーバー・フィルタリングなど、今回の検証に必要な機能は一通り揃っています。
次回の記事に記載しますが、Site-to-Site VPN を BGP で構成するためには、手元のRTX1200では機能不足でした。
設定はシリアルコンソールから行います。
シリアルコンソールのコネクタはRJ-45ではなくD-sub 9ピンになっているためその点も注意が必要です。
# シリアルアダプタの識別子を確認
$ ls /dev/tty.usb*
/dev/tty.usbserial-A50285BI
# シリアルコンソールに接続
$ screen /dev/tty.usbserial-A50285BI 9600
設計
前提: 自宅の回線構成
先に、検証環境を受け入れる側の自宅回線について触れておきます。自宅は NURO 光で、ONU 一体型ルーター(ZTE 製)が設置されています。この回線は PPPoE や MAP-E のような方式ではなく、ONU 一体型ルーターの WAN 側にグローバル IP アドレスが直接付与され、ONU 一体型ルーターがルーターモード(NAT あり)で動作する構成です。
このため RTX1200 は ONU 一体型ルーターの LAN 側(192.168.1.0/24)に接続する形になり、RTX の lan2 にはプライベート IP アドレスが DHCP で付与されます。検証セグメントからインターネットへの通信は RTX と ONU 一体型ルーターで 2 回 NAT される二重 NAT 構成です。家族が使うネットワークを止めないため、既設の ONU 一体型ルーターと WiFi ルーターには一切手を加えず、この前提で進めます。
物理・論理構成図
構成図を物理と論理に分けて描きます。物理図にはケーブルとポートだけを、論理図にはセグメントとアドレスだけを描き、両者の対応は表で持ちます。
物理構成図
結線表:
| # | From(機器/ポート) | To(機器/ポート) | 媒体 | 備考 |
|---|---|---|---|---|
| ① | ONU一体型ルーター LAN | RTX1200 LAN2 | UTP | WAN 上流 |
| ② | RTX1200 LAN1 port1 | TL-SG108E port1 | UTP | トランク(論理は別表) |
| ③ | TL-SG108E port8 | Mac② en8 | UTP | Mac② の定位置(保守セグメントに入る) |
| ④ | TL-SG108E port2 | iPad | UTP | 端末ブロック(port2-4)のどこでも可 |
| ③′ | TL-SG108E port5 | Mac② en8 | UTP | VLAN20 の検証時だけ③から挿し替え |
| ⑤ | Mac① USB | RTX1200 CONSOLE | RS-232C | 帯域外管理 |
論理構成図
実務に見立てて、保守用、店舗端末用、社内システム用のセグメントに分けています。
IP アドレス・VLAN 設計表:
| セグメント | VLAN | CIDR | GW(IF) | DHCP | 外部への経路 | 用途 |
|---|---|---|---|---|---|---|
| 保守 | 1 (native) | 192.168.100.0/24 | 192.168.100.1(lan1) | scope 1 | 家庭回線経由で自由 | Mac②・スイッチ管理画面 |
| 端末 | 10 | 10.100.10.0/24 | 10.100.10.1(lan1/1) | scope 2 | 閉鎖 | iPad |
| 社内システム | 20 | 10.100.20.0/24 | 10.100.20.1(lan1/2) | scope 3 | 閉鎖 | Mac②(挿し替え時) |
| WAN | − | 192.168.1.0/24 | ONU一体型ルーター | 上流から配布 | − | 上流 |
VLAN10/20 の 2 セグメントを分けているのは、次回以降の AWS 接続で「AWS に経路を広報するセグメント」と「広報しないセグメント」を作り分けるための準備です。
やってみる
RTX1200 の基礎設定
工場出荷状態に初期化した直後、show environment を打つと日本語メッセージが文字化けしていました。RTX のコンソール出力のデフォルトが Shift_JIS で、ターミナル側の文字コードが UTF-8 のためです。最初に ASCII 出力へ変更しておきます。
# console character ascii
# save
まず VLAN の前に、RTX を「保守セグメントのゲートウェイ 兼 インターネットへの出口」として動く状態にします。
# ip lan1 address 192.168.100.1/24
# dhcp service server
# dhcp scope 1 192.168.100.2-192.168.100.191/24
# ip lan2 address dhcp
# ip route default gateway dhcp lan2
# save
lan1 に保守セグメントのゲートウェイアドレスと DHCP スコープ(scope 1)を設定し、lan2 は ONU 一体型ルーターから DHCP でアドレスを受け取ります。デフォルトルートの gateway dhcp lan2 は「lan2 の DHCP で通知されたゲートウェイを使う」という指定で、上流のアドレスが変わっても追従します。インターネットへ出るための NAT(masquerade)はこの後の動作確認④で触れます。
RTX1200 に VLAN サブインターフェースを生やす
RTX1200 の LAN1(内蔵 8 ポートスイッチ)に、VLAN ごとの論理インターフェースを作成します。1 台のルーターの 1 本の物理リンクで複数 VLAN のルーティングを担うこの構成は router on a stick と呼ばれます。
# vlan lan1/1 802.1q vid=10
# ip lan1/1 address 10.100.10.1/24
# dhcp scope 2 10.100.10.50-10.100.10.99/24
# vlan lan1/2 802.1q vid=20
# ip lan1/2 address 10.100.20.1/24
# dhcp scope 3 10.100.20.50-10.100.20.99/24
# save
lan1/1 は物理インターフェース lan1 の上に載る論理インターフェースです。タグ付きフレームは、対応する VID の論理インターフェースがないと受取先がなく破棄されます。この 2 行で「VID=10 のタグ付きフレームの受け口」と「そのセグメントのゲートウェイアドレス」を同時に作成します。
なお、1 本の物理接続の上に VLAN ID で区別された論理インターフェースが複数載るこの構造は、Direct Connect で物理接続の上に VIF(Virtual Interface)を複数収容する構造と同じです。VIF 作成時に指定する VLAN ID の実体は、前回目視した 802.1Q タグそのものです。
TL-SG108E 側のポート設定
スイッチ側は前回の 802.1Q 設定を、用途別のポートブロック配置に組み直します。
(U: untagged, T: tagged)
| VLAN ID | port1 (→RTX) | port2-4 (端末) | port5-7 (社内システム) | port8 (保守) |
|---|---|---|---|---|
| 1 | U | − | − | U |
| 10 | T | U | − | − |
| 20 | T | − | U | − |
| port1 | port2-4 | port5-7 | port8 | |
|---|---|---|---|---|
| PVID | 1 | 10 | 20 | 1 |
- port1 は RTX へのトランクポートです。トランクは両端で「運ぶ VLAN の一覧」と「タグなしで流す VLAN」が一致して初めて成立します。RTX 側では lan1(タグなし)+ lan1/1 + lan1/2 という 3 つのインターフェース、スイッチ側では 1 ポートの U/T/PVID 設定として表現が分かれますが、中身は同じ対応関係です。
- port8 を「保守」としていますが、前回確認したとおり Easy Smart の管理インターフェースは VLAN で分離されないため、管理画面への到達自体は他のポートからも可能です。
- スイッチを RTX に接続した直後、管理画面が RTX の DHCP から IP を取得して
192.168.0.1から10.100.10.xに変わってしまいました。 - 不便なので、TL-SG108E の管理画面の IP は保守セグメント内の
192.168.100.254に静的固定しました。
- スイッチを RTX に接続した直後、管理画面が RTX の DHCP から IP を取得して
実際の設定値です。


動作確認①: 挿すポートで配布される IP が変わる
各端末は DHCP 設定のまま、ポートに挿すだけです。配布される IP アドレスの帯を決めるのは「どの端末か」ではなく「どのポートに挿したか」なので、試しに Mac② を端末ブロック(port2-4)、iPad を社内システムブロック(port5-7)に挿してリース台帳を見てみます。
- port2-4 に挿した Mac② → scope 2 から
10.100.10.51 - port5-7 に挿した iPad → scope 3 から
10.100.20.51 - port8(保守)には誰も居ないため、scope 1 の Leased は 0
# show status dhcp
DHCP Scope number: 1
Network address: 192.168.100.0
All: 190
Except: 0
Leased: 0
Usable: 190
DHCP Scope number: 2
Network address: 10.100.10.0
Leased address: 10.100.10.51
(type) Client ID: (01) 00 e0 4c xx xx xx
Host Name: MacBook-Pro
Remaining lease: 2days 23hours 46min. 39secs.
All: 50
Except: 0
Leased: 1
Usable: 49
DHCP Scope number: 3
Network address: 10.100.20.0
Leased address: 10.100.20.51
(type) Client ID: (01) 34 3d c4 xx xx xx
Host Name: iPad
Remaining lease: 2days 23hours 59min. 37secs.
All: 50
Except: 0
Leased: 1
Usable: 49
DHCPにより挿すポートで貰える IP アドレスの帯が変わります。DHCP サーバーは RTX 上の 1 サービスですが、リクエストが到着した論理インターフェースによって応答するスコープを選んでいるためです。
動作確認②: 経路表を見る
# show ip route
Destination Gateway Interface Kind Additional Info.
default 192.168.1.1 LAN2(DHCP) static
10.100.10.0/24 10.100.10.1 LAN1/1 implicit
10.100.20.0/24 10.100.20.1 LAN1/2 implicit
192.168.1.0/24 192.168.1.27 LAN2 implicit
192.168.100.0/24 192.168.100.1 LAN1 implicit
読みどころが 3 つあります。
- Kind 列は「この経路を誰が書いたか」を表します。
implicitはインターフェースに IP アドレスを設定したことで暗黙に生えた経路、staticは手動または DHCP 供給の静的経路です。次回以降、ここに BGP 由来の経路が並ぶ予定です - Interface 列に論理インターフェース(LAN1/1・LAN1/2)が物理と同格で並んでいます。経路表の 1 行は必ず「宛先 → どの出口インターフェースへ」の形なので、論理インターフェースを作ることは経路表に出口の選択肢を増やすことでもあります
- implicit 行の Gateway 列は自分自身( RTX1200 )のアドレスです。次ホップがない直結経路の Gateway
列をヤマハはこう表記するようです
動作確認③: VLAN 間ルーティング
Mac② を port5(VLAN20)に挿した状態で、Mac②(10.100.20.x)から iPad(10.100.10.x)へ ping を打ちます。
前回、VLAN を跨いだ瞬間に ARP から失敗していた 2 台が、RTX を経由して疎通するようになりました。
$ ping 10.100.10.50
PING 10.100.10.50 (10.100.10.50): 56 data bytes
64 bytes from 10.100.10.50: icmp_seq=0 ttl=63 time=2.021 ms
64 bytes from 10.100.10.50: icmp_seq=1 ttl=63 time=1.431 ms
64 bytes from 10.100.10.50: icmp_seq=2 ttl=63 time=1.769 ms
64 bytes from 10.100.10.50: icmp_seq=3 ttl=63 time=1.051 ms
64 bytes from 10.100.10.50: icmp_seq=4 ttl=63 time=1.884 ms
^C
--- 10.100.10.50 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.051/1.631/2.021/0.350 ms
TTL が 1 減っていることから、L2 のスイッチングではなくルーターを 1 ホップ経由したことが確認できます。
動作確認④: NAT の変換テーブルを覗く
lan2 に IP マスカレード(NAPT)を設定すると、各セグメントの端末はインターネットへ出られるようになります。
# nat descriptor type 1 masquerade
# nat descriptor address outer 1 primary
# ip lan2 nat descriptor 1
# save
nat descriptor は「変換ルールを定義して、インターフェースに貼る」という 2 段構えの構文です。address outer 1 primary は「変換後に名乗る外側アドレスは、貼ったインターフェースの主アドレス」の意味で、lan2 が DHCP でアドレスを受け取る構成でも動的に追従します。
せっかくルーターが手元にあるので、普段は見えない NAT の変換テーブルを覗いてみます。
# show nat descriptor address detail
Reference Descriptor : 1, Assigned Interface : LAN2(1)
Masquerade Table
Outer address: primary/192.168.1.27
Port range: 60000-64095, 49152-59999, 44096-49151 24 used.
Protocol Inner Destination Masquerade TTL(second)
UDP 192.168.100.1.10199 192.168.1.1.53 60003 3
UDP 192.168.100.1.10444 192.168.1.1.53 60002 3
TCP 10.100.10.50.62718 172.224.110.20.443 60001 53
TCP 10.100.10.50.62721 17.248.225.44.443 60005 56
UDP 10.100.10.50.56254 172.224.110.16.443 60000 893
UDP 10.100.10.50.50941 17.248.225.44.443 60004 897
TCP 10.100.10.51.59898 40.99.36.66.585 60009 893
UDP 10.100.10.51.57714 142.251.24.94.443 60008 894
UDP 10.100.10.51.51146 142.251.24.94.443 60012 894
TCP 10.100.10.51.59959 142.251.24.94.443 60013 894
TCP 10.100.10.51.59937 40.99.78.146.585 60010 897
TCP 10.100.10.51.59938 40.99.57.66.585 60011 898
TCP 10.100.10.51.59939 40.104.115.146.585 60007 899
TCP 10.100.10.51.59946 40.99.58.130.585 60006 900
...
以下が観測できました。
- NAPT の「多対 1」の実体がポートの割り当て管理であることが見えます
- 宛先 443 の UDP、つまり QUIC(HTTP/3)の通信が複数見られ、HTTP/3 への移行が進んでいることが変換テーブルからも観測できます
検証セグメントの出口を閉じる
このままでは VLAN10/20 の端末も RTX の NAT(masquerade)経由で自由にインターネットへ出られます。実際の店舗端末は自由にインターネットへ出られない前提の設計が多く、次回以降その状態を作るため、VLAN10/20 だけ家庭回線経由の出口を閉じます。
# ip filter 300 reject 10.100.10.0/24 * * * *
# ip filter 301 reject 10.100.20.0/24 * * * *
# ip filter 399 pass * * * * *
# ip lan2 secure filter out 300 301 399
# save
lan2 の out 方向は「フィルタ → NAT」の順で評価されるため、NAT で送信元が変換される前のアドレスで判定できます。
iPad(VLAN10)と Mac②(VLAN20)から ping 8.8.8.8 を叩くと不通で、port8 の保守セグメントからはインターネットに疎通できることを確認しました。
最後に
ここまでで RTX1200 で確認できたことをまとめます。
- router on a stick は、1 本の物理リンクに VLAN ごとの論理インターフェースを載せてルーティングする構成。論理インターフェースが 802.1Q タグの受け口とセグメントのゲートウェイを兼ねる
- L3 側(ルーター)は VLAN ID にサブネットと DHCP スコープを対応づけ、L2 側(スイッチ)はポートに VLAN ID を対応づける。2 枚の対応表が VLAN ID をキーに結合されることで、「端末を挿すだけで正しいセグメントに入る」が成立する
- 経路表の 1 行は必ず出口インターフェースを指す。論理インターフェースを作ることは、経路表に出口の選択肢を増やすこと
- NAPT の実体は外側ポートの割り当て管理。変換テーブルを覗くと、Web 通信の QUIC(UDP 443)への移行が進んでいることも観測できる
普段 AWS の VPC を作成すると、サブネットを作るだけで VLAN、DHCP サービス、ルートテーブルなどが払い出されていましたが、実機で 1 から構築することでより解像度が上がりました。
次回はこの LAN を AWS に接続します。
この記事が誰かの役に立つと幸いです。以上。リテールアプリ共創部のきんじょーでした。





