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



