管理番号:YMHRT-4600
(最終更新日: 2023/7/26)
本設定例では、Luaスクリプト機能とIPsecトンネル機能を使用しています。
Luaスクリプト機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX1200(Rev.10.01.16以降)、RTX830、RTX810、NVR700W、NVR510、NVR500、FWX120、SRT100(Rev.10.00.52以降)、vRXです。
IPsecトンネル機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX1200、RTX830、RTX810、NVR700W、FWX120、SRT100、vRXです。
IPv6のインターネット回線の繋ぎ替えによってルーターに割り振られるIPv6アドレスの変更を監視し、設定を変更する設定例です。
対向ルーターのIPv6アドレスは、生存通知2パケットを受信した際に出力されるログから取得し、IPv6アドレスに変更があった場合、設定に反映します。
ゲートウェイの設定 | ip route default gateway pp 1 |
---|---|
LANインターフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.100.1/24 |
WANインターフェースの設定 (LAN2ポートを使用) |
ipv6 lan2 address ra-prefix@lan2::10/64 ipv6 lan2 prefix change log on |
WANインターフェースの設定 (LAN3ポートを使用) |
pp select 1 pp always-on on pppoe use lan3 pppoe auto connect on pppoe auto disconnect off pp auth accept pap chap pp auth myname (ISPへ接続するID) (ISPへ接続するパスワード) ppp lcp mru on 1454 ppp ipcp ipaddress on ppp ipcp msext on ip pp mtu 1454 ip pp nat descriptor 1 netvolante-dns hostname host pp server=1 (NetvolanteDNSに設定された名前) # 注釈1 pp enable 1 |
VPN(IPsec)の設定 | tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp aes256-cbc sha256-hmac ipsec ike local address 1 (RTX1200(1)に割り振られたIPv6アドレス) ipsec ike pre-shared-key 1 text himitsu ipsec ike remote address 1 (RTX1200(2)に割り振られたIPv6アドレス) tunnel enable 1 ipsec auto refresh on |
NATの設定 | nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.100.1 udp 8512 |
DHCPの設定 | dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.2-192.168.100.191/24 |
DNSの設定 | dns host lan1 dns server pp 1 |
Luaスクリプトの スケジュール設定 |
schedule at 1 startup * lua (Luaスクリプト(1)ファイル名) schedule at 2 startup * lua (Luaスクリプト(2)ファイル名) |
生存通知2の設定 | heartbeat2 myname (RTX1200(1)に割り振られたIPv6アドレス) heartbeat2 transmit 1 crypto CRPT_KEY_a auth AYTH_KEY_a (RTX1200(2)のNetvolanteDNSに設定された名前) heartbeat2 transmit interval 1 30 heartbeat2 transmit log 1 on heartbeat2 transmit enable 1 heartbeat2 receive 1 crypto CRPT_KEY_b auth AYTH_KEY_b heartbeat2 receive monitor 1 300 heartbeat2 receive log on heartbeat2 receive enable 1 heartbeat2 receive record limit 128 |
ゲートウェイの設定 | ip route default gateway pp 1 |
---|---|
LANインターフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.200.1/24 |
WANインターフェースの設定 (LAN2ポートを使用) |
ipv6 lan2 address ra-prefix@lan2::11/64 ipv6 lan2 prefix change log on |
WANインターフェースの設定 (LAN3ポートを使用) |
pp select 1 pp always-on on pppoe use lan3 pppoe auto connect on pppoe auto disconnect off pp auth accept pap chap pp auth myname (ISPへ接続するID) (ISPへ接続するパスワード) ppp lcp mru on 1454 ppp ipcp ipaddress on ppp ipcp msext on ip pp mtu 1454 ip pp nat descriptor 1 netvolante-dns hostname host pp server=1 (NetvolanteDNSに設定された名前) # 注釈1 pp enable 1 |
VPN(IPsec)の設定 | tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp aes256-cbc sha256-hmac ipsec ike local address 1 (RTX1200(2)に割り振られたIPv6アドレス) ipsec ike pre-shared-key 1 text himitsu ipsec ike remote address 1 (RTX1200(1)に割り振られたIPv6アドレス) tunnel enable 1 ipsec auto refresh on |
NATの設定 | nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.200.1 udp 8512 |
DHCPの設定 | dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.200.2-192.168.200.191/24 |
DNSの設定 | dns host lan1 dns server pp 1 |
Luaスクリプトの スケジュール設定 |
schedule at 1 startup * lua (Luaスクリプト(1)ファイル名) schedule at 2 startup * lua (Luaスクリプト(2)ファイル名) |
生存通知2の設定 | heartbeat2 myname (RTX1200(2)に割り振られたIPv6アドレス) heartbeat2 transmit 1 crypto CRPT_KEY_b auth AYTH_KEY_b (RTX1200(1)のNetvolanteDNSに設定された名前) heartbeat2 transmit interval 1 30 heartbeat2 transmit log 1 on heartbeat2 transmit enable 1 heartbeat2 receive 1 crypto CRPT_KEY_a auth AYTH_KEY_a heartbeat2 receive monitor 1 300 heartbeat2 receive log on heartbeat2 receive enable 1 heartbeat2 receive record limit 128 |
設定値 | -- 出力する SYSLOG のレベル(info, debug, notice) log_level = "(SYSLOGレベル)" |
---|---|
show ipv6 address の結果から 現在のIPv6アドレスを返す関数 |
function get_ipv6_address(lan) -- コマンド実行 -- t[i] = {a = adr, time = p_time} -- 最大寿命のIPv6アドレスの検出 -- |
show ipv6 addressの結果と prefixからIPv6アドレスを返す関数 |
function get_address(lan, prefix) rtn, str = rt.command("show ipv6 address " .. lan) |
監視しているlogからprefixを 検出する関数 |
function get_prefix(str) s1, s = str:find(ptn_s) |
メインルーチン |
local adr1, adr2, prefix, pfx, err, rtn, str -- 検出するパターン -- 現在のIPv6アドレスを取得 rt.command("ipsec ike local address 1 " .. adr1) while true do if rtn and str then -- 今までのIPv6アドレスと現在のIPv6アドレスが異なる場合、設定の変更 adr1 = adr2 else else |
設定値 | -- 検出するパターン -- トンネル番号 -- 出力する SYSLOG のレベル(info, debug, notice) |
---|---|
設定されているIPv6アドレスを 取得する関数 |
function get_address_config(tunnel_num) rtn, str = rt.command("show config") |
hertbeat2ログからIPv6アドレスを 取得する関数 |
function get_remote_address(str) s, e, adr = str:find(ptn) end |
対向ルーターのIPv6アドレスが 変更されていた場合、 IPsec のリモートアドレスの 設定を変更する関数 |
function change_config(tunnel_num, chg_adr) rt.command("tunnel select " .. tunnel_num) rt.command("ipsec ike remote address " .. tunnel_num .. " " .. chg_adr) rt.command("tunnel select none") rt.command("save") rt.syslog(log_level, "TUNNEL[" .. tunnel_num .. "]のリモートアドレスを変更しました。") end |
メインルーチン | local rtn, log, rmt_adr_cfg, rmt_adr_hbt -- エラーメッセージ while true do if rtn > 0 then -- 対向ルーターの設定上のIPv6アドレスを取得 if rmt_adr_cfg then -- ログから対向ルーターの現在のIPv6アドレスを取得 -- IPv6アドレスが異なれば、設定を変更する if string.match(rmt_adr_cfg, rmt_adr_hbt) == nil then else end end |
注釈1:
Netvolante DNSへ名前を登録する手順
(1) 名前の設定
まず、次のコマンドを実行してください。
netvolante-dns hostname host pp [HOSTNAME]
HOSTNAMEには登録したい名前を設定してください。
(2) NetVolante DNSへの登録
次のコマンドを実行してください。
netvolante-dns go pp 1
このときに、ルーターはNetVolante DNSに対して登録を行います。
登録が成功すると、設定の変更を保存するかどうかを確認しますので、'y'と入力し、設定を確定してください。
名前はHOSTNAME.aa0.netvolante.jpと設定されます。
詳細は http://www.rtpro.yamaha.co.jp/RT/FAQ/NetVolanteDNS/netvolante-dns-use-command.html
を参照してください。
ご相談・お問い合わせ