RTX830 3台でNGN折り返しVPNとRAによるIPv6アドレスの配布を実現する方法

1. はじめに

 NTT東西が提供するNGN網[1] (フレッツ光の加入者収容網) は巨大なL3ネットワークになっており、加入者収容ルータが各端末に割り当てるIPv6アドレスを利用した端末同士での直接通信 (NGN網に閉じた通信) が可能になっています。
 この特徴を利用し、NGN網内に閉じたVPN (NGN折り返しVPN) を張ることで、インターネットを経由しない低遅延の拠点間通信が可能となります[2]。仕組み上ベストエフォートであることに変わりはありませんが、インターネットに抜ける必要がないため、速度的にも非常に有利です。一般に専用線や閉域VPNは非常に高価であるため、インターネットVPNと閉域網系サービスの中間として大いに利用価値のある方式だと思います。

方式による経路の違い

 なお、残念なことにNGNは東西で網が分かれているため、網を跨るような直接通信はできません。西日本の拠点と東日本の拠点でNGN折り返しVPNを張ることは不可能となります。

東西を跨るNGN折り返しVPNは構築不可

2. 実現したいこと

 本稿では以下を実現します。
  ①ヤマハルータを使用し、2拠点間 (拠点A/拠点B) でNGN折り返しVPNを張る (L2TPv3)
  ②VPN内の通信は暗号化する (IPsec)
  ③LANの各機器にRA方式でIPv6アドレス (プレフィックス) を配布する
 その他条件は下記の通りです。
  ①拠点Aのルータで拠点Bに対してIPアドレスを付与する (拠点A/拠点Bは同一LAN)
  ②拠点Bの全通信は拠点Aを経由する (インターネット含む)

実現したいネットワークの概要

3. 課題

 NGN折り返しVPNの構築方法は様々なWebサイト[3][4]で紹介されています。
 概要は以下の通りです。
  ①WAN (LAN2) にRA方式でIPv6アドレスを割り当てる
  ②L2TPトンネルを作成する
  ③LAN (LAN1) とトンネルをBridgeインターフェイスに収容する
 基本的は両拠点で①~③を設定すれば良く、インターネットに抜ける拠点A側についてはLAN2にIPoEの設定を追加すればインターネット接続も確保できます。
 ここで問題になるのが、実現したいことの「③LANの各機器にRA方式でIPv6アドレス (プレフィックス) を配布する」です。今回NGN折り返しVPNを構築するにあたり、LAN側インターフェイスをBridgeに収容することになりますが、ヤマハルータのBridgeはRAによるIPv6プレフィックス配布機能に対応していません[5]。よって、親となる拠点AのルータでIPoE設定+NGN折り返しVPN設定を実施した場合、LAN側端末にグローバルなIPv6アドレスが自動で振られず、IPv6でのインターネット接続ができません。

3. 解決策

 @earis (Qiita) 氏により、NGN折り返しVPNを張ったルータとは別のルータからIPv6アドレス (プレフィクス) をRAする方式[6]が提案されています。力業ではありますが、ルータの役割分担がはっきりしているので、分かりやすい構成です。氏の記事[6]はNGN折り返しVPN用のルータでPPPoEを張っていたり、IPsecを除いていたりするため、本稿では当該記事を参考にしたより簡易なConfigを紹介します。

4. 手法

 拠点Aはひかり電話無し (ONU単体)、拠点Bはひかり電話有り (HGW) とします (L2SWを置くかどうか程度の差しかありません)。拠点AのONU直下にL2SWを置き、その配下にRTX830-a1 (IPoE用)、RTX830-a2 (VPN用)を接続します。拠点BのRTX830-bはHGWのLANポートに接続します。RTX830-a2、RTX830-bはVPN機能のみを提供し、インターネット接続やDHCP機能は全てRTX830-a1が担当します。
 なお、IPv6アドレスの指定が必要な個所はソフトイーサ株式会社が提供する「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクストサービス[7]」を利用し、FQDNで指定します。

●RTX830-a1 Config
 一般的なIPoE設定 (当方の環境ではOCNバーチャルコネクトを利用) になるため、本稿では割愛します。ヤマハ公式サイトに設定例が掲載されています[8]。本ルータが親となるため、DHCPの設定も実施します。

●RTX830-a2 Config
 ログイン設定等の初期設定は済んでいることを前提に、関連する部分のみ記載します。

ip route default gateway 192.168.10.1
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 source address selection rule lifetime
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.10.253/24
ipv6 lan2 address auto
ipv6 lan2 secure filter in 1 2 3 4 5 100
ipv6 lan2 secure filter out 200 dynamic 81 98 99
ipv6 lan2 dhcp service client ir=on
tunnel select 1
 tunnel encapsulation l2tpv3
 tunnel endpoint name <拠点B>.i.open.ad.jp fqdn
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes256-cbc sha256-hmac
  ipsec ike keepalive log 1 on
  ipsec ike keepalive use 1 on
  ipsec ike pre-shared-key 1 text <事前共有キー>
  ipsec ike remote address 1 <拠点B>.i.open.ad.jp
 l2tp always-on on
 l2tp hostname rtx830-a2
 l2tp tunnel auth on <パスワード>
 l2tp tunnel disconnect time off
 l2tp keepalive use on 60 3
 l2tp keepalive log on
 l2tp syslog on
 l2tp local router-id <192.168.10.253>
 l2tp remote router-id <192.168.10.254>
 l2tp remote end-id <ENDID>
 ip tunnel tcp mss limit auto
 tunnel enable 1
ipsec auto refresh on
ipsec transport 1 101 udp 1701
ipv6 filter 1 pass * * icmp6 * *
ipv6 filter 2 pass * * esp
ipv6 filter 3 pass * * udp * 500
ipv6 filter 4 pass * * udp * 1701
ipv6 filter 5 pass * * udp * 546
ipv6 filter 100 reject * * * * *
ipv6 filter 200 pass * * * * *
ipv6 filter dynamic 81 * * domain
ipv6 filter dynamic 98 * * tcp
ipv6 filter dynamic 99 * * udp
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 -c 1 update-<拠点A>.i.open.ad.jp.i.open.ad.jp\")"
l2tp service on l2tpv3

●RTX830-b Config
 ログイン設定等の初期設定は済んでいることを前提に、関連する部分のみ記載します。

ip route default gateway 192.168.10.1
ipv6 routing on
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 source address selection rule lifetime
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.10.254/24
ipv6 lan2 address auto
ipv6 lan2 secure filter in 1 2 3 4 5 100
ipv6 lan2 secure filter out 200 dynamic 81 98 99
ipv6 lan2 dhcp service client ir=on
tunnel select 1
 tunnel encapsulation l2tpv3
 tunnel endpoint name <拠点A>.i.open.ad.jp fqdn
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes256-cbc sha256-hmac
  ipsec ike keepalive log 1 on
  ipsec ike keepalive use 1 on
  ipsec ike pre-shared-key 1 text <事前共有キー>
  ipsec ike remote address 1 <拠点A>.i.open.ad.jp
 l2tp always-on on
 l2tp hostname rtx830-b
 l2tp tunnel auth on <パスワード>
 l2tp tunnel disconnect time off
 l2tp keepalive use on 60 3
 l2tp keepalive log on
 l2tp syslog on
 l2tp local router-id 192.168.10.254
 l2tp remote router-id 192.168.10.253
 l2tp remote end-id <END ID>
 ip tunnel tcp mss limit auto
 tunnel enable 1
ipsec auto refresh on
ipsec transport 1 101 udp 1701
ipv6 filter 1 pass * * icmp6 * *
ipv6 filter 2 pass * * esp
ipv6 filter 3 pass * * udp * 500
ipv6 filter 4 pass * * udp * 1701
ipv6 filter 5 pass * * udp * 546
ipv6 filter 100 reject * * * * *
ipv6 filter 200 pass * * * * *
ipv6 filter dynamic 81 * * domain
ipv6 filter dynamic 98 * * tcp
ipv6 filter dynamic 99 * * udp
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 -c 5 update-<拠点B>.i.open.ad.jp\")"
l2tp service on l2tpv3

 設定完了後、RTX830-a2 <—> RTX830-b間でVPNが確立できているかを確認します。RTX830 -a2、RTX830 -bどちらのルータから打っても構いません。「トンネルの状態: established」となっており、両拠点の接続情報が表示されていれば確立完了です。

show status l2tp

 VPN接続が完了したら、RTX830-a1のLAN1 (任意ポート) とRTX830-a2のLAN1 (任意ポート) を物理接続します。RTX830-a1からRTX830-a2、及びRTX830-b配下の機器にIPv4アドレスとIPv6アドレス (プレフィックス) が配布されます。

5. ポイント解説

●L2TP設定

#RTX830-a1
tunnel endpoint name <拠点B>.i.open.ad.jp fqdn
#RTX830-b
tunnel endpoint name <拠点A>.i.open.ad.jp fqdn

 それぞれ対向ルータのIPv6アドレスをFQDNで設定します。
 IPアドレスで指定することもできますが、DDNSサービスを利用し、FQDN指定するとIPアドレスの変更に追従できるため美しいと思います。

l2tp always-on on
l2tp tunnel disconnect time off

 常時VPNをONにする設定です。通信が無い場合もL2TPが切断されないので、安定して拠点間通信が可能となります。

●IPsec設定

#RTX830-a1ipsec ike remote address 1 <拠点B>.i.open.ad.jp
#RTX830-bipsec ike remote address 1 <拠点A>.i.open.ad.jp

 それぞれ対向ルータのIPv6アドレスをFQDNで設定します。
 CLIリファレンス的には自局側 (local) の設定もありましたが、特に設定不要で動作しました。

●IPv6アドレス更新

#RTX830-a1
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 -c 5 update-<拠点A>.i.open.ad.jp\")"
#RTX830-b
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 -c 5 update-<拠点B>.i.open.ad.jp\")"

 ソフトイーサ株式会社が提供するDDNSサービスを利用する場合のIPv6アドレス更新用の設定です。毎分1回、Pingを飛ばすことで最新化します。
 注意点ですが、本稿のようにL2TPv3/IPsecをFQDNで設定する場合、使用するIPv6アドレスはLAN2 (WAN) 側である必要があるようです。よって本設定でIPv6アドレスの更新を通知する場合はLAN2に付与されたアドレスを送る必要があります。
 紹介しているConfig上はありませんが「ipv6 bridge1 address auto」等を追加し、LAN側ポートにIPv6アドレスを付与すると、ping6を実行したときにこのアドレスが送られてしまうようです。検証時にこの設定を使いしてしまっており、VPNが確立できず嵌ってしまいました。LAN側ポートにIPv6アドレスを付与しないようご注意ください。
※LAN側ポートにIPv6アドレスを付与せずとも、接続する端末には影響ありません (RAでプレフィックスが広告されるため)。端末は別途IPv6アドレスが付き、IPv6での通信が可能となります。

6. まとめ

 RTX830を3台使用し、NGN折り返しVPN+RA方式によるIPv6アドレス配布を実現する方法をご紹介しました。インターネットを含めた全通信を親拠点経由にする方式ですが、NGN折り返しVPNが低遅延かつ高速であるため、体感的にはそう変わりありません。
 拠点間VPN構築の参考になれば幸いです。

参考文献

[1]総務省総合通信基盤局電気通信事業部料金サービス課, “次世代ネットワーク(NGN)について”, 総務省, https://www.soumu.go.jp/main_content/000486115.pdf, 平成29年5月
[2]ソフトイーサ株式会社, “5. NTT のフレッツサービスの IPv6 網内通信のサポート”, https://www.softether.jp/1-product/11-vpn/41-new/5, 2026年2月参照
[3]ソフトイーサ株式会社, “OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト OS / 機器ごとの設定例 YAMAHA ルータでの使用方法 3.YAMAHA ルータを用いてフレッツ網内で拠点間仮想広域イーサネット VPN (Ethernet over IPv6, L2TPv3) を構築する設定例”, https://i.open.ad.jp/config/yamaha.aspx, 2026年2月参照
[4]@brbrbe, “NGN網内折り返しのL2TPv3/IPsecをYamaha RTXで構築してみた”, Qiita, https://qiita.com/brbrbr/items/0aea802a48da4e977a7e, 2025年4月2日
[5]ヤマハネットワーク周辺機器技術情報ページ, “ブリッジインタフェース(ブリッジ機能)”, ヤマハ株式会社, https://www.rtpro.yamaha.co.jp/RT/docs/bridge/index.html, 2025/08/18
[6]@earis, “RTX1200によるNGN網L2TPv3トンネル”, Qiita, https://qiita.com/earis/items/87f6e660a7d51de1e5cc, 2023年6月20日
[7]ソフトイーサ株式会社, “OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト”, https://i.open.ad.jp/, 2026年2月参照
[8]ヤマハ株式会社, “OCNバーチャルコネクトでインターネット接続”, https://network.yamaha.com/setting/router_firewall/ipv6/virtual_connect, 2025年7月24日

コメントを残す