rabbit51

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

ヤマハ NVR510/500 Recursive DNS設定用メモ

2022-05-09 11:00:00 | NVR510
ヤマハ NVR500の「簡単設定ページ」、NVR510の「簡単設定」共に便利なのだが、細かな設定はコマンド設定になる。しかし、簡単設定操作でコマンド設定内容が変化してしまう事がある(「NVR-500のかんたん設定とリカーシブDNS」「NVR-500 Rev11.00.20のリカーシブDNS」)。
DNS関連のコマンド機能についてもよく忘れる。メモを残しておく事にする。

DNSのコマンド詳細はコマンドリファレンス(NVR510 NVR500)が詳しい。

(1)NVR510/NVR500の差異
NVR510 Rev.15.01.21
NVR500 Rev.11.00.41
・「AAAAレコード」の問い合わせ制限
・「edns」対応
・「DHCPv6」でDNS サーバーの通知順序設定対応
・「NAT46/DNS46」対応
・nslookupのIPv6対応

(2)DNS機能設定
dns host any :DNSを利用できるホストの制限
dns syslog resolve off
dns domain familyname : ルーター上で「DNS search domain list
dns service aaaa filter off :「AAAAフィルタとはなんだったのか?
dns service fallback off :ルータが名前解決する時IPv6を優先。「フォールバックの問題について

(3)DNSキャッシュ機能
名前解決問い合わせ時に最初に検索される。
dns cache on
dns cache max entry 256
show dns cache
clear dns cache

(4)DNS機能
特定ドメインのレコードを設定し、DNSとして機能する。
dns private name ns.familyname :
「ip host ns.familyname ipv4アドレス@lan1」
「dns static aaaa ns.familyname ipv6アドレス@lan1」と同じ
ip host
dns static

(5)DNS問合せサーバー設定
キャッシュ、DNS機能で解決しない場合に問い合わせるサーバー設定。数字は、選定されるサーバーの順番。
1. dns server select
DNSレコードタイプと問合せ指定ドメインに一致すると選定される。サーバー応答が無くても以降の問合わせを行わない。「any .」で選択されるとサーバーダウンの場合でも2以降のサーバーに変更して問合わせる事は無い。セカンドサーバーやデフォルトサーバが指定されているとこれらのサーバーに問合わせが行われる。pp指定でrestrict指定が無い場合、選択条件が一致するとpp接続し、DNS情報を得てから名前解決する。
2. dns server
3. dns server pp
4. dns server pdp
5. dns server dhcp
1の検索条件に一致しない場合、2で指定されたサーバー、3, 4, 5で取得したサーバーに順番で問合わせを行う。
1,2,3,4,5のサーバー設定がされていない時は、dhcp取得のDNSサーバーに問い合わせる(取得出来ていれば)。
1,2,3,4,5のサーバー設定がされていなくとも「dns service recursive」がデフォルトなので「ひかり電話HGW」配下のDHCPv6-PD接続や「RA with o_flag=1」+DHCPv6 InformationでDNSサーバーアドレスが取得出来ていれば名前解決ができる。
2,3,4,5の設定で取得されるDNSサーバーアドレス情報は、端末のresolverに依存するが1番目のサーバ応答が無い時、優先順位2番目位までしか使用されない。
1, 2の設定で指定するIPアドレスは、IPv4, IPv6共に記載可能で混在してても可。
2で設定されたIPv4アドレスと3,4,5で取得されたDNSサーバーアドレスは、「dns notice order」のserver情報として使用される(2でIPv6アドレスを指定してもdhcpv6のserver情報に使用されない)。

「IPv4 over IPv6」で使用されるAFTRの名前解決は、NGNから通知されるDNSサーバーで検索する必要がある。
internet multifeed
$ host gw.transix.jp 2001:4860:4860::8888 Public DNS
Using domain server:
Name: 2001:4860:4860::8888
Address: 2001:4860:4860::8888#53
Aliases: 

Host gw.transix.jp not found: 3(NXDOMAIN)

$ host gw.transix.jp 2404:1a8:7f01:a::3 NGN網 DNS
Using domain server:
Name: 2404:1a8:7f01:a::3
Address: 2404:1a8:7f01:a::3#53
Aliases: 

gw.transix.jp has IPv6 address 2404:8e00::feed:102
gw.transix.jp has IPv6 address 2404:8e00::feed:100
gw.transix.jp has IPv6 address 2404:8e00::feed:101
Public DNSなどを使用する場合設定に注意が必要。
for using Public DNS service
dns server select 100 2404:1a8:7f01:a::3 2404:1a8:7f01:b::3 aaaa gw.transix.jp
dns server select 101 2001:4860:4860::8888 2001:4860:4860::8844 any .
NGN網のDNS指定にdhcpを使用せずIPv6アドレスを指定し、ひかり電話HGWのDHCPv6サーバー不具合に備える。

アルテリアネットワークス XPASSサービスのDS-Liteサーバーは、パブリックDNSで名前解決が出来るようだ。
arteria networks 
$ host dgw.xpass.jp 2001:4860:4860::8888 Public DNS
Using domain server:
Name: 2001:4860:4860::8888
Address: 2001:4860:4860::8888#53
Aliases: 

dgw.xpass.jp has IPv6 address 2001:f60:0:200::1:1

$ host dgw.xpass.jp 2404:1a8:7f01:a::3 NGN網 DNS
Using domain server:
Name: 2404:1a8:7f01:a::3
Address: 2404:1a8:7f01:a::3#53
Aliases: 

dgw.xpass.jp has IPv6 address 2001:f60:0:200::1:1
transixからxpassのDS-Lite AFTRへは疎通出来ない。

(6)DNS問合せ時の設定
dns private address spoof off
dns srcport 10000-10999

(7)DNSサーバー通知順序の設定
dns notice order dhcp me server
dns notice order msext me server
dns notice order dhcpv6 me
NVR500は、dhcpv6設定が無い。「dhcpv6 me」と同じ動作。
NVR510は、server指定でDHCPv6-PDやDHCPv6 Informationで得たサーバーアドレス


 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ヤマハ NVR510/500 LUA rt.mail() apiとぷららメールサーバー

2022-05-06 10:00:00 | NVR510
ヤマハ NVR510/500 Transix DS-Lite(IPv4 over IPv6)とIPv4 PPPoEとの自動切替」でrt.mail(LUA api)の挙動がおかしいのを感じていた。
ぷららのメールサーバーは、ぷらら網経由のsmtp(25), インターネット経由のサブミッションポートsmtp(587)共にstartTLS対応に加え、smtps(465)もサポートしている。ただ、インターネット経由のsmtp(587)やsmtps(465)は、「スパム対策」と称する接続制限が施されている。
ぷらら Transix DS-Lite経由のメールアクセス エラーは、「スパムメール対策のブロック!」???
ぷらら Transix DS-Lite経由のメールアクセス IP blocking解消
確か、Transix DS-Liteがシステム拡張でIPv4アドレスを増強した時「ヨーロッパ割り当てのIPv4アドレス」を使用した事により、ぷららのメールサーバーに接続出来なくなったと推定している。再び同様の事が発生したかと
「ぷらら」メールサーバをopenssl s_clientで確認する-WiresharkでstartTLSも確認した
で確認したが、問題なかった。NVR510とNVR500でrt.mail()のいくつかのパラメータを変更して確認してみた。

(1)NVR510/NVR500のrt.mail()とぷららメールサーバー接続結果

NVR510(Rev.15.01.21) / NVR500(Rev.11.00.41)

(2)テストLUAスクリプト
plalamailtest.lua
--[[ May.5 '2022 Rabbit51 plalamailtest.lua ]]
mail_table = {
    timeout = 10,
	smtp_address = "secure.plala.or.jp",
	smtps = true,
	smtp_port = 587,
	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 = "NVR510/NVR500 rt.mail() testing"
}
-- smtp w/ ssl on port 465 
mail_table.smtp_port = 465
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "1 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "2 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "3 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
-- smtps on port 587
mail_table.smtp_port = 587
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "4 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "5 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "6 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
-- smtp on port 587
mail_table.smtps = false
mail_table.smtp_port = 587
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "7 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "8 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "9 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
rt.mail(LUA api)仕様には、「port 587」でstartTLSに対応しているか不明なので、「smtps=true」と「smtps=false」の二通りで確認した。「smtps」「startTLS」は、wiresharkのパケットキャプチャで確認した。

(3)確認結果
・ぷららメールサーバは、「diget-md5」に対応していない。
・NVR500のrt.mail()は、smtps(465)に対応していない。smtpsが有効でない。
・NVR510は、startTLSに対応していない。仕様記載なしの通り。

NVR510とNVR500でrt.mail()スクリプトを共通にするには、
 if string.match(_RT_FIRM_REVISION,"(NVR%d+)") == "NVR510" then
    mail_table.smtp_port=465
else
    mail_table.smtp_port=587
end



 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ヤマハ 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ルータ環境からYAMAHA NVR500/510のL2TP/IPSec VPN接続不具合

2022-04-05 10:00:00 | NVR510
「フレッツひかり」環境でBuffalo WiFiルータ配下のPC(Macbook air)からL2TP/IPSec VPNで接続し、ファイルサーバからデータを取得させようとした。


L2TP/IPSec VPNサーバーは、YAMAHA NVR510(アドレスは、vpnsv.xx.netvolante.jp。plalaのIPv4 PPPoEでglobal address)。ファイルサーバーは、Synology DS-220JでSMB接続とした。VPN接続後、ファイルサーバに接続できない。

相手の接続環境とVPNサーバー側のネットワークが「192.168.11.0/24」で同じだったことが原因だった。こちらのネットワークも昔BuffaloのWZR-HP-G300NHを使っていた。この時から「192.168.11.0/24」を使用している。手持ち機器のデフォルトネットワークを確認してみると「ひかり電話Home GateWay」が 「192.168.1.0/24」、「Yamaha NVR500/NVR510」が「192.168.100.0/24」を使用している。メジャーなルータ配下の機器からVPN接続すると同じネットワークで接続される確率が高く、接続障害の原因になる。
最近のIPv4 over IPv6接続では、自分のネットワーク端末から自分のネットワークへのVPN接続が異なるglobal address経由で出来る。テスト接続に便利であるが、同様の問題が発生する。同一ネットワークからのVPN接続が可能となる対策をNVR510(Rev.15.01.21)/NVR500(Rev.11.00.41)で検討してみた。


(1)NVR510/500 L2TP/IPSecVPN環境
NVR-500 VPN( L2TP/IPSec )接続設定」から設定内容を抽出。静的NATやセキュリティフィルタを除いてある。接続してくるVPN端末は、DHCPサーバーから192.168.11.0/24ネットワークのIPアドレスを設定している。VPN端末のARP応答をLAN1側で代理応答するよう「ip lan1 proxyarp on」を加えている。IPv4 over IPv6に1個のTUNNELが使われるため、残り3個がVPN接続に使える。下記設定は、ipsec tunnelが1個なので1接続となる。
NVR500.config/NVR510.config 
ip lan1 address 192.168.11.250/24
ip lan1 proxyarp on
ip lan1 dhcp service server 
ip lan2 address 192.168.1.51/24

dhcp service server
dhcp scope 1 192.168.11.2-192.168.11.63/24

pp select anonymous
 pp bind tunnel2
 pp auth request mschap-v2
 pp auth username someone@somewhere xxxxxxxx
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp remote address pool dhcp
 ip pp mtu 1280
 pp enable anonymous

tunnel select 2
 tunnel encapsulation l2tp
 ipsec tunnel 2
  ipsec sa policy 2 2 esp aes-cbc sha-hmac
  ipsec ike keepalive use 2 off
  ipsec ike nat-traversal 2 on
  ipsec ike pre-shared-key 2 text COMMONKEY
  ipsec ike remote address 2 any
 tunnel enable 2

ipsec auto refresh on
ipsec transport 2 2 udp 1701

l2tp service on
L2TP/IPSecの同時接続数を増加するためには、TUNNELを増やす必要がある。NVR510/500は、最大4個までなのでtemplateを使わなくても負荷にならないが、修正や停止を考えるとtemplateを使用する方が良さそう。
templateで同時接続数を増やす記述
pp select anonymous
  pp bind tunnel2-tunnel4
  pp auth username someone2@somewhere2 xxxxxxxx
  pp auth username someone3@somewhere3 xxxxxxxx
  pp auth username someone4@somewhere4 xxxxxxxx
  pp auth username someone5@somewhere5 xxxxxxxx

tunnel select 2
  tunnel template 3-4

no tunnel select
ipsec transport template 2 3-4
template分のconfig詳細は、「show config tunnel 3 expand」で確認する(パラメータ部のid番号を注意深く設定しないとtemplate展開されないので注意が必要。正しく反映されるかexpandオプションで確認しておくのが良い。)。「tunnel 2」で「tunnel disable 2」とするとtemplateで反映し、tunnel 3、tunnel 4もdisableされるので便利。pp anonymousに複数ユーザアカウントを設定すれば、同時に3人まで接続することが出来るようになる。

(2)対応策検討
VPN接続時のIPアドレスを異なるネットワークアドレスに変更
VPN接続後にファイルサーバーからVPN経由でなく、直接パケットがVPN端末に送信されるのを防ぐ
no ip lan1 proxyarp on
pp select anonymous
no ip pp remote address pool dhcp
ip pp remote address pool 192.168.254.1-192.168.254.3
TUNNELが3個しか使えないので「192.168.254.1から192.168.254.3まで」の3個をVPN端末用に設定する。lan1インターフェースのproxy arpは不要になる。他のネットワークからルーターを介して192.168.254.0/24へのパケットがデフォルトルートあるいは静的経路情報で戻ってくる設定が必要になる。

192.168.11.0/24内のファイルサーバーアドレスをNATアドレスに変更する
NVR510は、MAP-E等に対応するため「ポートセービング」を標準とした。ポートセービング機能が動作していると「PP」インターフェースの「anonymous」でNATが動作しない。「nat descriptor backward-compatibility 1」でNVR500と同様にポートセービング機能をオフ可能。DS-Liteは、AFTRでNATされるのでポートセービング機能が無くても問題無い。
ポートセービング機能を使用する場合は、特定ユーザだけPPインターフェースでVPN接続させPPインターフェースでNATするかLAN1 and/or LAN2でNATする事が出来そう。ファイルサーバーに複数アドレス設定が可能であれば、LAN1にsecondary address「192.168.254.5/24」を設定し、ファイルサーバ(DS-220J)に「192.168.254.254/24」を設定する事も可能。PP anonymousと同じネットワークで設定するとLAN1にProxy arpが必要。DS-220Jはコンソール接続で一時的な設定が可能(再起動で消失する)。
「PP anonymousでNAT」と「LAN1 and/or LAN2でNAT」の設定を確認してみる。また、「PPでNAT」も検討してみる。

(3)PP anonymousでNAT

NVR510コマンドリファレンスNVR500)情報だけでNAT設定するのは困難なのでNATディスクリプタのヤマハ技術資料NATデスクリプタコマンド仕様)を参考にした(1995年のrt100i頃から続く情報)。L2TP/IPSec VPN接続すると192.168.254.1-3範囲の一つがpeerアドレスとして割り当てられる。(1)の設定で、VPN接続後「192.168.254.1」が割り当てられたとする。このアドレスからNAT変換で宛先アドレス192.168.254.240から192.168.11.240へ変換してファイルサーバーへ送信。ファイルサーバーからの応答パケットは、送信元アドレスを変換して192.168.254.1で受信する。VPN端末側アドレスが外側、ファイルサーバーアドレスが内側のNATディスクリプタでPP anonymousインターフェースに順方向に設定する。ファイルサーバーの外側アドレスに192.168.254.240(内側アドレスは、192.168.11.240)の静的NATとする。静的NATが設定されていてもaddress outerが必要。address outerは、静的NATの外側アドレスと同じIPとし、動的NATが発生しないようにする。address outerだけだとデフォルトでaddress innerがautoとなる。意図しない動的NAT変換を防ぐため、address innerに192.168.11.240を指定しておく。VPN接続時に「ppp ipcp msext on」でDNSアドレス192.168.11.250が渡される。同時にこのアドレスは、VPN端末のルートテーブルにホストルートでVPNサーバーに送信するよう設定される。pp anonymousインターフェースに設定された順方向NATディスクリプタで192.168.254.240以外のNAT policyが無いので宛先パケットが棄却される(コマンド仕様及び技術資料)。しかし、仕様と異なり192.168.11.250のDNSが使える。自己アドレスと同じだからか?NATディスクリプタにマッチしない宛先にもアクセス出来る。
NATディスクリプタ内向き設定に該当しないパケットの扱い設定「nat descriptor masquerade incoming nat_descriptor action」でスルーさせても「TCPポート0-1023までのパケットは、破棄されると仕様に記載されている。PPanonyousインターフェースでは、仕様と異なるので不具合かもしれない。本件対応上の問題は無い。
「nat descriptor backward-comptibility 1」は、NVR510に必要でNVR500は不要。
NVR510
pp select anonymous
ip pp nat descriptor 20

nat descriptor backward-compatibility 1
nat descriptor type 20 nat
nat descriptor address outer 20 192.168.254.240
nat descriptor address inner 20 192.168.11.240
nat descriptor static 20 1 192.168.254.240=192.168.11.240 1
「nat descriptor backward-compatibility」を変更すると再起動が必要となる。

(4)LAN1 and/or LAN2でNAT
ポートセービングが必要な場合、PP anonyous以外のLAN1やLAN2でNATする必要がある。LAN2側にネットワーク接続が無い場合(PPPoE接続だけ等の場合)、LAN1側だけで良い。ひかり電話HGWの配下にNVR510を配置しIPv4 PPPoEでインターネットに接続している。ひかり電話HGW設定のためLAN2を介して「192.168.1.1/24」に接続する必要があるため、LAN2側もNAT設定する。

L2TP/IPSec VPNで接続するVPN端末は、192.168.254.1が割り当てられたとする。LAN1は、192.168.11.0/24ネットワークにアドレス192.168.11.250で接続されている。ファイルサーバーは、アドレスを192.168.253.240とし、NATで192.168.11.240へ接続させる。LAN2は、192.168.1.0/24ネットワークにアドレス192.168.1.51で接続されている。ひかり電話HGWは、アドレス192.168.1.1である。192.168.1.0/24ネットワーク上のホストから192.168.11.0/24ネットワークのホストへは、LAN2で192.168.253.0/24ネットワークのホストへNAT変換し、LAN1で再度192.168.11.0/24ネットワークのホストへNAT変換させる。(技術資料のTwiceNATのような設定)
NVR510/NVR500
ip route 192.168.253.0/24 gateway 192.168.11.240

ip lan1 nat descriptor reverse 30
ip lan2 nat descriptor 40

no nat descriptor backward-compatibility 1
nat descriptor type 30 nat
nat descriptor address outer 30 192.168.253.254
nat descriptor address inner 30 192.168.11.254
nat descriptor static 30 1 192.168.253.2=192.168.11.2 253

nat descriptor type 40 nat
nat descriptor address outer 40 192.168.11.254
nat descriptor address inner 40 192.168.253.254
nat descriptor static 40 1 192.168.11.2=192.168.253.2 253
VPN端末の送信元アドレス192.168.254.1からファイルサーバーアドレス192.168.253.240宛へnat descriptor 30で192.168.11.240宛にNATする。ファイルサーバーからの戻りのパケットは、送信元192.168.11.240で宛先192.168.254.1をnat descriptor 30で送信元192.168.253.240へNATする。LAN1インターフェースにnat descriptor 30を逆方向で変換する。
nat descriptor 40は、LAN2側のネットワークからLAN1側の192.168.11.0/24ネットワークへ向かわせるため、宛先アドレスを192.168.253.0/24上のホストにNATする。戻りのパケットは、送信元アドレスが192.168.253.0/24のホストアドレスになるのでnat descriptor 40で送信元192.168.11.0/24のホストアドレスにNATする。
192.168.253.0/24宛のホストは、経路設定でLAN1インターフェースへ向かわせたいがgatewayは、IP指定する必要がある。LAN1インターフェースに設定された192.168.11.250とするとルータの自己アドレスとNATの関係で示されるようにnat descriptor 30でNATされない。192.168.11.0/24上の経路制御機能を持つホストを指定するかホストgatewayとして指定する必要がある(NVR510で経路エントリー数が約10,000なので192.168.11.0/24上のホスト全部をホストゲートウェイ設定しても大丈夫そう)。
例えば、192.168.11.5がファイルサーバーであれば、「192.168.253.5/32 gateway 192.168.11.5」と経路情報を設定しおく(WindowsOSのファイル共有であれば、firewall設定で許可しておく必要がある)。DS-220Jは、LinuxOSなので経路制御してくれる。

DHCP不具合の解決策
LAN1側に接続されるホストにDHCPサーバー機能でIP設定とネットワーク情報設定を行っている。NAT設定を行うとDHCP応答に時間が掛かるようになる。renewも出来なくなるようだ。nat descriptorの条件を変えテストしてみた結果、下記条件で発生する。
インターフェースに逆方向(reverse)でnat descriptorを設定
nat descriptorにinnnerアドレスが設定されている
複数のstatic設定がされている
NATをどのように設定したら解決するか判らなかった。
DHCP Relayを使用し、LAN2側へrelay(ルータの自己アドレスとNATの関係で示されるように内部的に DHCPアプリへrelayされると推定した)する事で回避した。
DHCP Relay
ip lan1 dhcp service relay 192.168.1.51

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.11.2-192.168.11.63/24
遅延もなくスムーズに動作する。

サブネットワーク接続の問題と解決
LAN1側の192.168.11.0/24ネットワークにゲートウェイ(192.168.11.251)を介してサブネットワーク(192.168.4.0/24)が接続された場合の問題
NVR510の経路情報
ip route 192.168.4.0/24 gateway 192.168.11.251
192.168.11.0/24ネットワークに接続されたホストは、default routeでNVR510(192.168.11.250)が設定されている。これらのホストから192.168.4.0/24ネットワークのホストへは、送信元192.168.11.nnnで宛先192.168.4.mmmのパケットがNVR510にLAN1インターフェースを介して渡される。NAT descriptor 30で送信元が192.168.253.nnnに変換され、経路情報に従いLAN1インターフェースから192.168.11.251ゲートウェイへ渡される(送信元192.168.253.nnnで宛先192.168.4.mmm)。ゲートウェイへ渡すパケットは、送信元192.168.11.nnnで宛先192.168.4.mmmとなるよう再度NAT変換する必要がある。
NAT descriptor 31
ip lan1 nat descriptor 31 reverse 30

nat descriptor type 31 nat
nat descriptor address outer 31 192.168.11.254
nat descriptor address inner 31 192.168.253.254
nat descriptor static 31 1 192.168.11.2=192.168.253.2 253
nat descriptor 31で送信元192.168.253.nnnを送信元192.168.11.nnnにNAT変換するようLAN1インターフェースで順方向に設定する。

順方向設定されたnat descriptorのouter addressがproxy arp応答する
LAN1/LAN2インターフェースに順方向で設定されたnat descriptorのouter addressがproxy arp応答する。nat descriptor 31でstatic設定しているouter側アドレス192.168.11.2-254のアドレスがproxy arp応答するため、192.168.11.0/24ネットワーク上のホストとIPの2重登録状態が発生する。LAN1/LAN2共に「ip interface proxyarp off」の設定であるがproxy arp応答する。このproxy arpを止める方法が無いのでLANインターフェースと同じネットワークのouter addressを順方向設定しないようにする必要がある(NAT設定されたLANインターフェースのネットワークにサブネットワークを構成出来ない)。
ホームネットワークでは、サブネットワークの必要性が少ないので大きな問題にはならないと思うが、、、
nat descriptor設定内でproxyarp on/offが設定できると良い。
回避策として
・インターフェースのネットワークと同じアドレスを順方向のNATディスクリプタに設定しない
・サブネットワークへdefault経路経由で転送されないようDHCP等で経路情報を指定する

重複IP設定状態時の問題
192.168.5.0/24ネットワークに192.168.5.3のホストとNVR500のLAN1に順方向でouter addressが192.168.5.2-254のstatic NATを設定してarping 192.168.5.3とした時のarp応答

nat descriptorが順方向に設定されたインターフェースのネットワークとouter addressが同じネットワークだとホスト間の通信がNVR500に誘導され予期しないNATや経路制御で通信がループしたり通信が出来なくなる事が発生する。

Windows OSのDHCPでは、重複IP設定エラーとなる

静的設定に変更すると

Automatic Private IP Addressingが動作し、静的設定が有効にならない。
APIPA機能を停止する
Disable APIPA
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
IPAutoconfigurationEnabled DWORD 0
設定後、再起動が必要。自動プライベートIP設定が停止するが、重複IP設定検出機能が働き、静的IP設定が有効にならない。
重複IP設定チェック機能を停止する
Disable Gratuitous ARP
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
ArpRetryCount DWORD 0
設定後、再起動が必要。これで、DHCPによるIPv4アドレス取得も、IPv4静的設定も上手くいく。重複IP設定状態になるので解決にはならない。

macOSでも重複IP設定検出でDHCPがAllocate/Declineを繰り返す。静的IP設定にすれば、重複IP設定であると警告されるが利用できる。

設定オフできるか不明。重複IP設定状態になるので解決にはならない。

Debian10+dhclientでは、重複IP設定チェックされていないようで問題無く利用できる。重複IP設定状態になるので解決にはならない。

NATディスクリプタ内向き設定に該当しないパケットの扱い
変換テーブルにマッチしないパケットは、「through」「reject」「discard」「forward」が選択出来、初期値は、rejectとなっている。インターフェースに順方向に設定されたnat descriptor内向きパケットは、policyにマッチしない場合、破棄される仕様。PP anonymousでもLAN1/LAN2でも破棄されなかったのでnat typeを変更して調べてみた。
nat descriptor typenat): pass
(nat-masquerade): pass
(masquerade): reject
基本rejectでnat type noneのディスクリプタでpassする仕様だと良いような気がする。

最終的な設定
LAN1 and/or LAN2 NAT for NVR500/NVR510
ip lan1 address 192.168.11.250/24
ip lan1 nat descriptor reverse 30
ip lan1 dhcp service relay 192.168.1.51
ip lan2 address 192.168.1.51/24
ip lan2 nat descriptor 40

ip route 192.168.253.240/32 gateway 192.168.11.240

nat descriptor type 30 nat
nat descriptor address outer 30 192.168.253.254
nat descriptor address inner 30 192.168.11.254
nat descriptor static 30 1 192.168.253.2=192.168.11.2 253
nat descriptor type 40 nat
nat descriptor address outer 40 192.168.11.254
nat descriptor address inner 40 192.168.253.254
nat descriptor static 40 1 192.168.11.2=192.168.253.2 253

dhcp service server
dhcp scope 1 192.168.11.2-192.168.11.63/24
dhcp scope bind 1 192.168.5.5 ethernet 00:30:f5:CC:DD:EE
dhcp scope option 1 classless_static_route=18,c0,a8,04,c0,a8,05,05,00,c0,a8,05,01
DHCPの静的経路情報配布を設定する。サブネットワークは、192.168.4.0/24(C0,A8,04,00/18)でゲートウェイが192.168.5.5(C0,A8,05,05)。デフォルトルート(00,C0,A8,05,01)も設定しておく。サブネットワークのルータは、子羊ルータでWAN側がDHCP。IP固定とするためscope bindで指定。ファイルサーバーは、VPN端末からVPN接続後、「192.168.253.240」で接続。VPN端末の接続ネットワークが「192.168.11.0/24」以外であれば、VPN接続後、「192.168.253.240」あるいは「192.168.11.240」で接続。

(5)PPでNAT
PPインターフェースで特定ユーザーをL2TP/IPSec接続させる設定が必要となる。サーバー側には、固定IPアドレスが必要となる。接続クライアントのIPが固定であれば「ipsec ike remote addres aaa.bbb.ccc.ddd」で指定すれば良いが、不特定なので「ipsec ike remote name special-host」「ipsec ike remote address any」のaggressiveモードでの接続を試みた。
PP NAT for NVR500/NVR510
pp select 2
 pp name L2TP-IPSec-Special
 pp bind tunnel4
 pp auth request mschap-v2
 pp auth username someone10@somewhere10 xxxxxxxx
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp remote address 192.168.254.10
 ip pp nat descriptor 20
 pp enable 2

tunnel select 4
ipsec ike remote address 4 any
ipsec ike remote name 4 special-host
Macbook pro(macOS Mojave-10.14.6)のL2TP/IPSec(raccoon)を使い「my_identifier keyid tag "special-host";」「exchange_mode aggressive;」で接続。
nvr500 aggressive mode
info,user Apr  3 10:51:33 nvr500-lan2.familyname  [IKE] respond ISAKMP phase to 192.168.11.8
debug,user Apr  3 10:51:33 nvr500-lan2. familyname  [IKE] add ISAKMP context [862] 67927e0791374f82 00000000
debug,user Apr  3 10:51:33 nvr500-lan2. familyname  [IKE] receive message from unknown gateway 192.168.11.8
debug,user Apr  3 10:51:34 nvr500-lan2. familyname  [IKE] inactivate context [862] 67927e0791374f82 00000000
debug,user Apr  3 10:51:34 nvr500-lan2. familyname  [IKE] delete ISAKMP context [862] 67927e0791374f82 00000000
aggressive modeでIdentificationデータがKEY-ID(11)で「specialーhost」が送付されている。しかし、nvr500では、認識しないようだ。

main modeへ設定変更
tunnel select 4
ipsec ike remote address 4 192.168.11.8
no ipsec ike remote name 4 special-host
remoteアドレスを指定してmainモードで接続
nvr500 log main mode
info,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] respond ISAKMP phase to 192.168.11.8
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] add ISAKMP context [866] edd3da9ab14e67e0 00000000
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] invalid ISAKMP proposal
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] ISAKMP SA attribute (hash algorithm) 6
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] NAT Traversal: NAT box detected, start keepalive timer
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] add ISAKMP SA[1] (gateway[4])
debug,user Apr  3 11:17:31 nvr500-lan2.familyname  [IKE] activate ISAKMP socket[4]
info,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] respond IPsec phase to 192.168.11.8
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] add IPsec context [867] edd3da9ab14e67e0 f6eebe82
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] setup IPsec SAs (gateway[4], ISAKMP SA[1])
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] add IPsec SA[2]
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] add IPsec SA[3]
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] activate IPsec socket[transport:4](inbound)
info,user Apr  3 11:17:32 IP Tunnel[4]  Up
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] activate IPsec socket[transport:4](outbound)
debug,user Apr  3 11:17:32 nvr500-lan2.familyname  [IKE] IPsec socket[transport:4] is refered
info,user Apr  3 11:17:32 nvr500-lan2.familyname  [L2TP] TUNNEL[4] connected from 192.168.11.8
info,user Apr  3 11:17:32 nvr500-lan2.familyname  [L2TP] TUNNEL[4] tunnel 7441 established
info,user Apr  3 11:17:32 nvr500-lan2.familyname  [L2TP] TUNNEL[4] session 29044 established
debug,user Apr  3 11:17:32 nvr500-lan2.familyname PP[02]  SEND LCP ConfReq in STARTING
L2TP/IPSecがtunnel 4で接続され、ppインターフェースで認証接続。NVR500仕様でipsec ike remote nameの「 type パラメータは相手側セキュリティ・ゲートウェイの判別時に考慮されない」と規定されいるので、tunnel 4、pp 2での接続が選択されないようだ。NVR510は未確認。「key-id」指定で接続出来てもクライアントにkey-id指定するのが容易で無い。この方法は、現実的でない。


 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ヤマハ NVR510 / 500のsyslogをLinux rsyslogで受けた時の振る舞い

2021-12-20 09:00:00 | NVR510
ひかり電話 HGW PR-600MI DHCPv6-PDサーバーが再起動時に割り当てるPrefix」でPR-600MIのDHCPv6が発行するreconfigureメッセージをNVR500, NVR510, OpenWrtで受けたログをsyslogでDebian10サーバーに集約し監視する事にした。Debian10では、「rsyslog」が動作している。rsyslogで受け取ったNVR500/510のsyslogデータを処理中に意図しない動作があったため確認した。

(1)NVR510/500の設定
Debian10自身のログとNVR510/500のログを識別するためfacilityをlocal0に変更した(defaultは、user)。
NVR510/500のconfig
syslog host 192.168.1.57
syslog facility local0
syslog notice on
syslog debug on
WiresharkでキャプチャーされたNVR510から転送されたsyslogデータ


(2)Debian10のrsyslog設定
Debian10の初期設定から「514/UDP」でsyslogを受ける設定に変更する
NVR510/NVR500/OpenWrtに依存する設定を「/etc/rsyslog.d/」フォルダに「nvr510.conf」「nvr500.conf」「openwrt.conf」で設定した
/etc/rsyslog.conf
#### MODULES ####
module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
#### GLOBAL DIRECTIVES ####
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Set the default permissions for all log files.
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
# Where to place spool and state files
$WorkDirectory /var/spool/rsyslog
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
### RULES ####
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
# Logging for the mail system.  Split it up so that
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err
# Some "catch-all" log files.
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages
# Emergencies are sent to everybody logged in.
*.emerg				:omusrmsg:*
/etc/rsyslog.d/nvr510.conf
:hostname,isequal,"nvr510-lan2.familyname"	/var/log/nvr510.log
& stop
「/etc/rsyslog.d」配下の設定「nvr510.conf」は、「/etc/rsyslog.conf」のRULESより前に処理されるので「nvr510-lan2.familyname」のログを「/var/log/nvr510.log」に記録後、「& stop」で処理が終了する。

(3)ログ確認と調査
WiresharkでキャプチャーされたNVR510の#3,#6のログが、「/var/log/syslog」「/var/log/messages」に記録されてしまう。
「nvr510.conf」で「& stop」が評価されず「*.*」や「*.=notice」の対象になるためと推定される。
RFC3164(The BSD syslog protocol)日本語訳】によれば、ヤマハのsyslogメッセージは、Headderパートが無く「PRI部」に続き「MSG部」で構成されているようだ(YAMAHA RTX Syslog Formatでも分析例が報告されている)。

NVR510/500からのsyslogデータは、Debian10のrsyslogで受け取った後、受信した時刻(timegenerated)と送信ホスト(fromhost)でHeadder部を補完しRULES処理を行なっているようだ。

WiresharkでキャプチャーされたNVR510の#1,#2,#5は、PRI部の後が「[」で始まるためHeadder部の時刻もホスト名も無しとされ、受信した時刻、IP Src「192.168.1.51」から名前解決した「nvr510-lan2.familyname」のFQDNがホスト名として補完される(RFC5424相当)。
#3,#6のパケットは、PRI 部の後が「Rejected」「LAN2」がホスト名として認識される(hostname)。上記設定では、「nvr510.log」に記録されず、「*.*のsyslog」と「*.=noticeのmessages」に記録される。
#4のパケットは、PRI部の後が「TUNNEL[」であるため、ホスト名無しと認識される。また、MSG部(msg)で「TUNNEL」がタグ部(syslogtag)、「[1] Rejected」以下がコンテント部と認識される。

(4)対処
rsyslog設定プロパティで「hostname」で無く「fromhost」を使用する。
/etc/rsyslog.d/nvr510.conf
:fromhost,isequal,"nvr510-lan2.familyname"	    /var/log/nvr510.log
& stop
ホスト名「"nvr510-lan2.familyname"」は、resolverで名前解決できないと成立しない。DNSの不具合や停止などがあると名前解決出来ない。IPv4アドレス「"192.168.1.51"」やIPv6アドレス「"2409:10:XXXXYY00:ae44:f2ff:feaa:bbcc"」で指定する場合は、fromhost-ipプロパティを使用する。nvr510から受けるsyslogは、全て「/var/log/nvr510.log」に記録される。facilityをlocal0に指定せず、デフォルトのuserのままで良さそう。
特定のキーワードを含むsyslogデータを抽出するには
/etc/rsyslog.d/nvr510-picked-key.conf
:fromhost, isequal,"nvr510-lan2.familyname"	    /var/log/nvr510.log
if $fromhost == 'nvr510-lan2.familyname' and $msg contains 'DHCPv6' then {
user.*	    /var/log/nvr510-dhcpv6.log
stop
}
if ( $fromhost == 'nvr510-lan2.familyname' and $pri-text startswith 'user.' and $msg contains 'DHCPv6' ) then 	    /var/log/nvr510-dhcpv6.log
& stop
:fromhost, isequal,"nvr510-lan2.familyname"	    stop
line#2-#5とline#6-#7で同じ動作をする。line#8は、line#2-#7がマッチしないときの処理。

(5)その他
OpenWrtの送信するsyslogデータは、Headder部(timereported,hostname)が含まれている。ruleでhostnameにFQDN指定すると成立しない。ドメイン名を含まないホスト名指定が必要。大文字小文字も指定が必要(case sensitive)。


 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする