別の記事「YAMAHA RTX1300 でtransixのDS-LiteとZOOT NATIVEの固定IPv4アドレスを併用する」のMAP-E版です。
前回はインターリンクのZOOT NATIVEを契約し、transixのDS-Liteと固定IPを併用する解説をしました。
しばらくそのまま利用していたのですが、ZOOT NATIVEの転送料制限にかかってしまったのでプロバイダを変えてみることにしました。
今回はCyberBBの「光クロス+IPv4固定IP」を契約します。こちらはインターネットマルチフィードのtransixではなく、JPNEのv6プラスを利用したサービスになります。
transixではIPv4 over IPv6はDS-Lite方式(IPIPトンネル)でしたが、v6プラスではMAP-E方式になります。
固定IPについては違いはなくどちらもIPIPトンネル方式です。
この記事では、フレッツ光 クロスをRTX1300で収容し、IPv6とIPv4の通信、およびL2TP/IPsecを利用した外部からのリモートアクセスVPNを利用する設定を紹介します。
RTX1300とフレッツ 光クロスを利用していますが、RTX1220やフレッツ 光ネクストでも同様に利用可能と思われます。
MAP-Eに対応しているのは 一部機種 だけなので注意してください。
固定IPだけを利用するにはこれらの機種でない (MAP-Eに対応対応していない) 機種でも動作します。
今回やること
改めて本記事で紹介する内容を以下に整理します。
- フレッツ 光クロスのONUはLAN3、端末はLAN1に接続されていることとする
- ルーターのIPアドレスは192.168.100.1/24とする
- RTX1300でフレッツ光 クロスを収容し、CyberBBの固定IPv4を利用する
- 外からのL2TP/IPsec VPNの終端には割り当てられた固定IPv4アドレスを利用する
- 宅内からのインターネット接続は固定IPv4アドレスを利用せずにv6プラス MAP-Eを利用する
この構成を実現するためにRTXに設定することは以下の通りです。
- IPv6のプレフィックスをフレッツからDHCPv6で受け取りLAN1で使えるようにする
- フレッツからは
/56
のプレフィックスが割り当てられるため、そのうちの/64
を一つ使う
- フレッツからは
- tunnel1 にMAP-Eの設定を行う
- tunnel2 に固定IPv4アドレスの設定を行う
- 合わせてIPv6アドレスをJPNEに通知するためのLuaスクリプトも設置する
- IPv4ルーティングテーブルの設定
- 固定IPv4を発信元とするパケットはtunnel2、それ以外はtunnel1をデフォルトゲートウェイとする
- L2TP/IPsecの設定を行う
設定を行う
IPv6アドレスの設定
LAN3でDHCPv6を受け取り、宅内の端末で使うIPv6アドレスとしてLAN1には dhcp-prefix@lan3::1:0:0:0:1/64
を割り当て、LAN3には固定IPv4アドレスのIPIPトンネル終端用として dhcp-prefix@lan3::006f:6d48:d100:0000/64
を割り当てます。
LAN3に割り当てるIPv6アドレスはCyberBBからの開通メールに記載されている「インターフェースID」である必要があります。
ngn type lan3 ntt
ipv6 route default gateway dhcp lan3
ipv6 lan3 address dhcp-prefix@lan3::006f:6d48:d100:0000/64
ipv6 lan3 dhcp service client
dns server dhcp lan3
ipv6 prefix 1 dhcp-prefix@lan3::1:0:0:0:1/64
ipv6 lan1 address dhcp-prefix@lan3::1:0:0:0:1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
tunne1 の設定
MAP-Eの場合には tunnel encupsulation map-e
を指定します。
tunnel endpoint address
の指定は不要です。
transixと異なり、NATの設定も必要です。
参考 : v6プラス対応機能 | 設定例 2 : IPv6/IPv4 インターネットサービス DHCPv6-PD
tunnel select 1
description tunnel v6Plus
tunnel encapsulation map-e
ip tunnel mtu 1460
ip tunnel nat descriptor 100
ip tunnel tcp mss limit 1420
nat descriptor type 100 masquerade
nat descriptor address outer 100 map-e
tunnel2 の設定
2404:9200:225:100::65
はCyberBBからの開通メールに記載されている「BRアドレス」(Border Relay アドレス) です。
tunnel select 2
description tunnel "Static IPv4"
tunnel encapsulation ipip
tunnel endpoint address 2404:9200:225:100::65
ip tunnel mtu 1460
ip tunnel nat descriptor 1
ip tunnel tcp mss limit auto
tunnel enable 2
固定IPアドレスについてはNATをルーターで行う必要があるため、こちらもNATディスクリプタを設定しています。
割り当てられた固定IPv4アドレスはここで指定します。 111.109.XXX.XXX
の部分にはCyberBBのメールに記載された「IPアドレス」を指定してください。
nat descriptor type 1 masquerade
nat descriptor address outer 1 111.109.XXX.XXX
JPNEにIPv6アドレスを通知するluaスクリプト
以下のスクリプトを手元のPCに v6plus.lua
として保存します。
この時、アップデートサーバのURLやユーザー名、パスワードはCyberBBからの開通メールに記載された情報を利用してください。
----------------------------------------
-- 設定値 --
----------------------------------------
-- アップデートサーバーのURL
UPD_SV = "http://fcs.enabler.ne.jp/update"
-- ユーザー名
USERNAME = "XXXXXXXXX"
-- パスワード
PASSWORD = "YYYYYYYYY"
-- SYSLOGのレベル
LOG_LEVEL = "info"
-- SYSLOGのプレフィックス
LOG_PFX = "[v6plus]"
-- ステートレスDHCPv6でDNS情報を取得するコマンド
DHCPv6_IR_CMD = "ipv6 lan3 dhcp service client"
----------------------------------------
-- SYSLOGを出力する関数 --
----------------------------------------
function logger(msg)
rt.syslog(LOG_LEVEL, string.format("%s %s", LOG_PFX, msg))
end
----------------------------------------
-- メインルーチン --
----------------------------------------
local log, result
local req_t = {}
local res_t
-- HTTPリクエストの準備
req_t.url = string.format("%s?user=%s&pass=%s", UPD_SV,
USERNAME, PASSWORD)
req_t.method = "GET"
-- HTTPリクエストを実行
res_t = rt.httprequest(req_t)
if res_t.rtn1 then
-- アップデートの結果をログに出力する
if res_t.code == 200 then
result = "successfully"
else
result = "failed"
end
log = string.format("Update %s (code=%d)", result, res_t.code)
logger(log)
else
-- リクエストの応答がない場合、DNS情報が取得できていない可能性があるため
-- DNS情報を再取得する
rt.command(DHCPv6_IR_CMD)
logger("Update failed")
end
これをSFTPでRTXの /scripts/transix.lua
としてアップロードします。
sftp 192.168.100.1
mkdir scripts
cd scripts
put v6plus.lua
このLuaスクリプトを毎分実行するように設定しておきます。
schedule at 1 */* *:*:10 * lua -- /scripts/v6plus.lua
IPv4ルーティングテーブルの設定
通常のパケットは tunnel1 をデフォルトゲートウェイとして利用しますが、 ルーター自身 (192.168.100.1) が発信元となるパケットは 111.109.XXX.XXX
を利用するためにtunnel2を経由するように設定します。
これを実現するためにポリシーベースルーティングを設定します。
ip filter 1001 pass 192.168.100.1 * * * *
ip route default gateway tunnel 2 filter 1001 gateway tunnel 1
L2TP/IPsecの設定を行う
L2TP/IPsecの設定については通常通りです。
参考 : L2TP/IPsecを使用したリモートアクセス : ルーター コマンド設定
pp select anonymous
pp bind tunnel100
pp auth request mschap-v2
pp auth username hoge hogepassword
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp remote address pool dhcp
ip pp mtu 1258
pp enable anonymous
tunneua select 100
tunnel encapsulation l2tp
ipsec tunnel 100
ipsec sa policy 100 100 esp aes-cbc sha-hmac
ipsec ike keepalive use 100 off
ipsec ike local address 100 192.168.100.1
ipsec ike log 100 key-info message-info payload-info
ipsec ike nat-traversal 100 on
ipsec ike pre-shared-key 100 text examplepsk
ipsec ike remote address 100 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 6
ip tunnel tcp mss limit auto
tunnel enable 100
l2tp service on
ipsec auto refresh on
ipsec transport 100 100 udp 1701
nat descriptor masquerade static 1 11 192.168.100.1 esp
nat descriptor masquerade static 1 12 192.168.100.1 udp 500
nat descriptor masquerade static 1 13 192.168.100.1 udp 4500
nat descriptor masquerade static 1 14 192.168.100.1 udp 1701
ip lan1 proxyarp on
まとめ
CyberBBの「光クロス+IPv4固定IP」を利用することで、フレッツ光 クロスでもIPv6、IPv4、リモートアクセスVPNをつかうことができました。