rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

ヤマハ NVR510/500 Transix DS-Lite(IPv4 over IPv6)とIPv4 PPPoEとの自動切替

2022-04-10 17:00:00 | NVR510
ひかり電話ホームゲートウェイ(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等も同様と推定される。
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
「ipip keepalive use」に相当するLUAスクリプトで対応してみる。

(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
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」の動作状態を確認する。
通常運用状態
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」指定しておく。
パケットの送出を確認するため「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
TUNNELがdisableされメール通知が発行される。
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
切替後にtracerouteでIPv4 PPPoE経由を確認する。
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
IPv4 over IPv6(DS-Lite)へ切替後、tracerouteでtransix経由となることを確認する。
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
# 



 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Buffalo WiFiルータ環境からY... | トップ | ひかり電話HGW PR-600MI LAN... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

NVR510」カテゴリの最新記事