ひかり電話ホームゲートウェイ(PR-600MI)の配下にヤマハNVR510を接続し、ぷららのIPv4 PPPoE接続とTransix DS-Liteでインターネット接続している。
DS-Liteの設定は、「ヤマハNVR500で「ぷらら」IPv6 IPoE接続 Transix DS-Lite」のconfigを「ヤマハ NVR500からNVR510へ更新」で移行した。移行後、「ひかり電話 HGW PR-600MI のハングアップと勝手に再起動する不具合について」の発生でDS-Liteが停止し、IPv4 PPPoE経由でのインターネットアクセスが出来るはずだった。
NVR510/500がDS-Liteで使う「TUNNEL」インターフェースは、エンドポイント(DS-Lite AFTR)が無応答になってもインターフェースダウンにならない。NVR510には、「ipip keepalive use」コマンドがあるが「独自仕様の記載」。「ipip keep alive use on」をTUNNEに設定すると、DS-Lite AFTRからのheart beat応答が無いためTUNNEL downと認識され、DS-Liteへの接続が出来ず利用出来ない。TUNNELインターフェースがアップダウンしないとdefaultゲートウェイに設定したポリシールーティングが機能しない。MAP-E等も同様と推定される。「ipip keepalive use」に相当するLUAスクリプトで対応してみる。
(1)LUAスクリプトでkeepalive機能
DS-Lite AFTRにping6によるecho応答を確認してTUNNELのアップ・ダウンを行うTUNNELのアップ・ダウンを1分ごとに1秒間隔で3回echo応答を確認。3回共応答が無い場合、TUNNELダウンと判断し、TUNNELのダウン設定とメール通知を行う。echo応答が3回ある場合、TUNNELアップと判断し、TUNNELのアップ設定とメール通知を行う。
ヤマハLUA仕様によれば、メールテーブルの「text」内で「¥n」が改行として扱われるような記載があるが「¥n」は、改行文字として処理されない。「string.char(13,10)」で記述する必要がある。
「show config」「less config」で「tunnel」の設定を表示させると「tunnel disable 1」が表示されない。「show config tunnel 1」で表示させると「tunnel disable 1」が表示される。何故?
メールサーバーは、IPv4メールサーバーを指定する。DNSリゾルバがIPv4アドレスだけ返答することを確認する。IPv6アドレスも応答される場合は、TUNNELダウン時に動作しないので注意が必要。DS-Lite経由のメールサーバー接続は、インターネット経由になるので「サブミッションポート(port 587)経由」の接続にする必要がある。ぷららのメールサーバー(port 587)は、smtpとstartTLS接続が可能。SSL(port 465)接続も提供されている。スクリプトは、SSL(port 465)を選択してみた。startTLSで接続するには、「smtp_port=587,smtps=true」で接続する。
(2)切り替えの確認
ping6パケットが送出されるLAN2インターフェースにパケットフィルタを挿入し「ckDSLITE.lua」の動作状態を確認する。
通常運用時は、パケットがフィルタされないよう「pass」指定しておく。
パケットの送出を確認するため「pass-log」でping6パケットを記録して確認する。1分毎に1秒間隔で3回記録されるのを確認する。
パケットフィルタを「reject-log」に変更してTUNNELがdisableに変更されIPv4 PPPoEに経路が変更されるのを確認する。TUNNELがdisableされメール通知が発行される。切替後にtracerouteでIPv4 PPPoE経由を確認する。
IPv4 over IPv6(DS-Lite)へ切替後、tracerouteでtransix経由となることを確認する。
DS-Liteの設定は、「ヤマハNVR500で「ぷらら」IPv6 IPoE接続 Transix DS-Lite」のconfigを「ヤマハ NVR500からNVR510へ更新」で移行した。移行後、「ひかり電話 HGW PR-600MI のハングアップと勝手に再起動する不具合について」の発生でDS-Liteが停止し、IPv4 PPPoE経由でのインターネットアクセスが出来るはずだった。
NVR510/500がDS-Liteで使う「TUNNEL」インターフェースは、エンドポイント(DS-Lite AFTR)が無応答になってもインターフェースダウンにならない。NVR510には、「ipip keepalive use」コマンドがあるが「独自仕様の記載」。「ipip keep alive use on」をTUNNEに設定すると、DS-Lite AFTRからのheart beat応答が無いためTUNNEL downと認識され、DS-Liteへの接続が出来ず利用出来ない。TUNNELインターフェースがアップダウンしないとdefaultゲートウェイに設定したポリシールーティングが機能しない。MAP-E等も同様と推定される。
NVR510/500 config
ip route default gateway pp 1 filter 10 11 12 gateway tunnel 1 weight 1000 hide gateway pp 1 weight 1 hide
ip filter 10 pass 192.168.11.250 * udp 500,4500 *
ip filter 11 pass 192.168.11.250 * esp
ip filter 12 pass 192.168.11.241 * tcp 1080,1443 *
tunnel select 1
tunnel name "Plala Transix DS-Lite"
tunnel encapsulation ipip
tunnel endpoint address 2404:8e00::feed:100 #for NVR500
tunnel endpoint name gw.transix.jp fqdn
tunnel enable 1
(1)LUAスクリプトでkeepalive機能
DS-Lite AFTRにping6によるecho応答を確認してTUNNELのアップ・ダウンを行う
ckDSLITE.lua
mail_table = {
smtp_address = "secure.plala.or.jp",
smtps = true,
smtp_port = 465,
smtp_auth_name = "someone@somewhere.plala.or.jp",
smtp_auth_password = "FUSHIGINAKOTOBA",
smtp_auth_protocol = "cram-md5",
from = "someone@somewhere.plala.or.jp",
to = "someone@somewhere.plala.or.jp",
subject = "DS-Lite tunnel down"
}
dslitegwadr="2404:8e00::feed:100" #transix DS-Lite AFTR
cnt=0
function getdsliteadr ()
rtn,str = rt.command("show config tunnel 1")
if rtn ~= nil then
adr = string.match(str, "address (%x+%:%x+%:%:%x+%:%x+)")
if adr == nil then adr = dslitegwadr end
flag = string.match(str,"tunnel (%w+able) 1")
if flag == nil then rt.syslog("info","No TUNNEL 1 for the DS-LITE") end
end
return adr,flag
end
function ckdslitegw (adr)
rtn,str = rt.command("ping6 -c 3 -w 1 " .. adr)
if rtn ~= nil then
loss = string.match(str, "(%d+)%.%d+%%")
if (loss ~= nil) then
return tonumber(loss)
end
end
end
while true do
address,flag = getdsliteadr()
conn = ckdslitegw( address )
if ( conn ~= nil and conn == 100 ) then
if flag == "enable" then
rtn,str = rt.command("tunnel disable 1")
rt.syslog("info","Unreachable to DS-Lite GW" .. " (" .. adr .. " " .. flag .. ")")
mail_table.subject = "DS-Lite tunnel down"
mail_table.text = "DS-Lite tunnel down" .. string.char(13,10) .. address .. string.char(13,10)
rt.mail(mail_table)
end
elseif ( conn ~= nil and conn == 0 ) then
if flag == "disable" then
rtn,str = rt.command("tunnel enable 1")
rt.syslog("info","Reachable to DS-Lite GW" .. " (" .. adr .. " " .. flag .. ")")
mail_table.subject = "DS-Lite tunnel up"
mail_table.text = "DS-Lite tunnel up" .. string.char(13,10) .. address .. string.char(13,10)
rt.mail(mail_table)
end
end
rt.sleep(60)
cnt = cnt + 1
end
ヤマハLUA仕様によれば、メールテーブルの「text」内で「¥n」が改行として扱われるような記載があるが「¥n」は、改行文字として処理されない。「string.char(13,10)」で記述する必要がある。
「show config」「less config」で「tunnel」の設定を表示させると「tunnel disable 1」が表示されない。「show config tunnel 1」で表示させると「tunnel disable 1」が表示される。何故?
メールサーバーは、IPv4メールサーバーを指定する。DNSリゾルバがIPv4アドレスだけ返答することを確認する。IPv6アドレスも応答される場合は、TUNNELダウン時に動作しないので注意が必要。DS-Lite経由のメールサーバー接続は、インターネット経由になるので「サブミッションポート(port 587)経由」の接続にする必要がある。ぷららのメールサーバー(port 587)は、smtpとstartTLS接続が可能。SSL(port 465)接続も提供されている。スクリプトは、SSL(port 465)を選択してみた。startTLSで接続するには、「smtp_port=587,smtps=true」で接続する。
(2)切り替えの確認
ping6パケットが送出されるLAN2インターフェースにパケットフィルタを挿入し「ckDSLITE.lua」の動作状態を確認する。
通常運用状態
ipv6 lan2 secure filter out 1 100
ipv6 filter 1 pass * 2404:8e00::feed:0/112 icmp6 128
ipv6 filter 100 pass * * *
no syslog notice on
パケットの送出を確認するため「pass-log」でping6パケットを記録して確認する。1分毎に1秒間隔で3回記録されるのを確認する。
動作確認(DS-Lite)
ipv6 filter 1 pass-log * 2404:8e00::feed:0/112 icmp6 128
syslog notice on
nvr510 log
# ipv6 filter 1 pass-log * 2404:8e00::feed:0/112 icmp6 128
# syslog notice on
Apr 10 09:58:55 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 09:58:56 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 09:58:57 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 09:59:58 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 09:59:59 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 10:00:00 LAN2 Passed at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
パケットフィルタを「reject-log」に変更してTUNNELがdisableに変更されIPv4 PPPoEに経路が変更されるのを確認する。
動作確認(IPv4 PPPoE)
ipv6 filter 1 rejct-log * 2404:8e00::feed:0/112 icmp6 128
syslog notice on
nvr510 log
# ipv6 filter 1 reject-log * 2404:8e00::feed:0/112 icmp6 128
Apr 10 10:01:01 LAN2 Rejected at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 10:01:02 LAN2 Rejected at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
Apr 10 10:01:03 LAN2 Rejected at OUT(1) filter: ICMP 2409:10:XXXX:YY00:ae44:f2ff:feAA:BBCC > 2404:8e00::feed:100 : echo request
info,user Apr 10 10:01:04 IP Tunnel[1] Down
info,user Apr 10 10:01:04 Unreachable to DS-Lite GW (2404:8e00::feed:100 enable)
info,user Apr 10 10:01:05 nvr510-lan2.familyname [MAIL] [14]Mail Wait Service Is Timeout(mail: 1 sec)
info,user Apr 10 10:01:20 nvr510-lan2. familyname [MAIL] DNS resolve error(secure.plala.or.jp)
info,user Apr 10 10:01:20 nvr510-lan2. familyname [MAIL] [14]Mail Service Retry(mail: count = 2)
info,user Apr 10 10:01:21 nvr510-lan2. familyname [MAIL] [14]Mail Wait Service Is Timeout(mail: 1 sec)
info,user Apr 10 10:01:31 nvr510-lan2. familyname [MAIL] DNS resolve error(secure.plala.or.jp)
info,user Apr 10 10:01:31 nvr510-lan2. familyname [MAIL] [14]Mail Service Retry(mail: count = 1)
info,user Apr 10 10:01:32 nvr510-lan2. familyname [MAIL] [14]Mail Wait Service Is Timeout(mail: 1 sec)
info,user Apr 10 10:01:34 nvr510-lan2. familyname [MAIL] [14]End Mail SMTP Process
IPv4 PPPoE経由接続確認
# show config tunnel 1
tunnel select 1
tunnel name "Plala Transix DS-Lite"
tunnel encapsulation ipip
tunnel endpoint name gw.transix.jp fqdn
tunnel disable 1
# traceroute cafe.jilis.org
1 i60-47-172-140.s99.a049.ap.plala.or.jp (60.47.172.140) 2.585 ms 2.943 ms 2.643 ms
2 60.47.172.213 (60.47.172.213) 3.165 ms 2.944 ms 2.668 ms
3 118.21.177.117 (118.21.177.117) 5.215 ms 5.091 ms 4.837 ms
4 i118-21-178-9.s99.a049.ap.plala.or.jp (118.21.178.9) 6.398 ms 7.944 ms 4.463 ms
5 211.6.91.173 (211.6.91.173) 5.312 ms 211.6.91.169 (211.6.91.169) 6.174 m7.915 ms
6 122.1.245.65 (122.1.245.65) 4.381 ms 60.37.54.165 (60.37.54.165) 7.548 m8.118 ms
7 ae-6.r03.tokyjp05.jp.bb.gin.ntt.net (120.88.53.29) 11.732 ms 6.286 ms ae-5.r02.tokyjp05.jp.bb.gin.ntt.net (120.88.53.17) 7.200 ms
8 ae-3.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.29) 5.282 ms ae-4.r30.tokyjp05.jp.bb.gin.ntt.net (129.250.3.34) 5.805 ms ae-4.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.57) 35.653 ms
9 ae-1.a00.tokyjp09.jp.bb.gin.ntt.net (129.250.7.38) 9.343 ms ae-2.r02.tokyjp08.jp.bb.gin.ntt.net (129.250.2.131) 6.403 ms ae-1.r02.tokyjp08.jp.bb.gin.ntt.net (129.250.2.101) 9.043 ms
10 61.120.144.42 (61.120.144.42) 7.649 ms 7.939 ms 8.764 ms
11 172.68.116.2 (172.68.116.2) 8.622 ms 172.70.120.2 (172.70.120.2) 8.373 ms 103.22.201.38 (103.22.201.38) 9.427 ms
12 162.159.135.42 (162.159.135.42) 7.513 ms 6.412 ms 9.054 ms
#
通常状態へ復帰
ipv6 filter 1 pass * 2404:8e00::feed:0/112 icmp6 128
no syslog notice on
nvr510 log
# ipv6 filter 1 pass * 2404:8e00::feed:0/112 icmp6 128
info,user Apr 10 10:04:43 Reachable to DS-Lite GW (2404:8e00::feed:100 disable)
info,user Apr 10 10:04:44 nvr510-lan2. familyname [MAIL] [14]Mail Wait Service Is Timeout(mail: 1 sec)
info,user Apr 10 10:04:47 nvr510-lan2. familyname [MAIL] [14]End Mail SMTP Process
info,user Apr 10 10:04:53 IP Tunnel[1] Up
DS-Lite経由接続確認
# show config tunnel 1
tunnel select 1
tunnel name "Plala Transix DS-Lite"
tunnel encapsulation ipip
tunnel endpoint name gw.transix.jp fqdn
tunnel enable 1
# traceroute cafe.jilis.org
1 ike-gw11.transix.jp (14.0.9.70) 5.513 ms 4.843 ms 3.804 ms
2 ike-bbrt10.transix.jp (14.0.9.69) 7.768 ms 6.530 ms 3.569 ms
3 210.173.176.127 (210.173.176.127) 7.641 ms 7.247 ms 7.703 ms
4 172.70.220.2 (172.70.220.2) 8.130 ms 172.70.120.2 (172.70.120.2) 8.985 m4.321 ms
5 162.159.135.42 (162.159.135.42) 5.951 ms 7.074 ms 4.707 ms
#