goo blog サービス終了のお知らせ 

rabbit51

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

Win10 VPN接続時のNVR500 L2TP/IPsec ISAKMP復号鍵が壊れて表示

2019-03-22 13:00:00 | NVR500
NVR500 L2TP/IPsec VPNサーバにWindows 10 VPNアプリから接続してみた。
NVR500は、Rev.11.00.38
Windows 10は、バージョン 1803/OSビルド 17136.619
Windows 10は、NAT Traversalが利用できるようレジストリに設定が必要である情報が多く見受ける。(HKLM¥SYSTEM¥CurrentControlSet¥Services¥PolicyAgent¥AssumeUDPEncapsulationContextOnSendRule=(DWORD)2)
確認してみたが、上記バージョンでは、設定不要である。

「L2TP」を選択し、
「VPNサーバアドレス」「共有鍵」と「ユーザ名」「ユーザパスワード」を設定


接続


WiresharkでL2TP/IPsecのパケットを解析するため「ヤマハNVR500のL2TP/IPsec VPNパケットをWiresharkで解析」で作成したLUAスクリプトでISAKMP/ESP復号鍵を抽出してみた。

NVR500の設定は、
(ISAKMP)部 [IKE sa]
ipsec ike encryption gateway_id 3des-cbc (default):[3des-cbc/des-cbc/aes-cbc/aes256-cbc]
ipsec ike group gateway_id mod1024 (default):[mod768/mod1024/mod1536/mod2048]
ipsec ike hash gateway_id sha (default):[sha256/sha/md5]
ipsec ike pfs gateway_id off (default):[on/off]
*応答側で動作する場合は、定義された選択肢内で相手側のproposalに合わせられる。端末側のproposalに従うため設定しない。
(ESP)部 [ESP sa]
ipsec sa policy policy_id gateway_id esp aes-cbc sha-hmac
(iOS/macOSは、sha256-hmacでエラーとなる。nvr500から有効な暗号鍵(first 16bytes に依存)を得るには、aes-cbc)

接続直後のNVR500
「show ipsec sa」
「show ipsec sa gateway 2 detail」
の結果(シリアルコンソール)

(ISAKMP)部 SA[1]で
  aes256-cbc
  sha-1
  modp2048

(ESP)部 SA[2]SA[3]で
  aes-cbc
  hmac-sha




LUAスクリプトの実行

結果、(ISAKMP)部の鍵が20Bytes(160bits)で抽出された。aes256-cbcなので32Bytes(256bits)のはずだが。。。

ログを確認してみると確かに「SKEY_ID」が20Bytesしか記録されていない

「show ipsec sa gateway 2 detail」で表示されるSA[1]のKEY 8Bytes とSKEY_ID値の先頭8Bytesと一致しない。この20BytesのデータでISAKMPデータを復号できない。

(ESP)部で記録される鍵は、aes-cbcのespデータを復号できる



iPhone6S(iOS)/macOS Sierra(iPhone6SでWiFiテザリング)で接続すると(ISAKMP) aes256-cbc/sha2-256/modp2048 (ESP) aes-cbc/hmac-shaで接続する。Windows10と(ISAKMP)部のIntegrityCheckMethodが異なる。
iOS/macOSと同じように(ISAKMP)部でaes256-cbc/sha2-256/modp2048で接続するようPowershellの「Set-VpnConnectionIPsecConfiguration」で指定してみた。

設定するパラメータは、「AuthenticationTransformConstants」「CipherTransformConstants」「DHGroup」「IntegrityCheckMethod」「PfsGroup」「EncryptionMethod」と「ConnectionName」で、全てを指定しないとエラーになる。

「AuthenticationTransformConstants」で「Accepted Values」に「SHA1」が見当たらない。

どうも「SHA1-96」を省略結合した「SHA196」が「SHA1」を示すようだ。指定値とし「SHA1」または「SHA196」。表示は、「SHA196」となる。

「IntegrityCheckMethod」では、「Accepted Values」に「SHA1」記載、解説には「SHA196」

指定値「SHA1」で表示値「SHA1」となる。

NVR500側の「aes-cbc」「aes256-cbc」「sha-hmac」「sha256-hmac」設定と「Set-VpnConnectionIPsecConfiguration」のパラメータ設定値の組み合わせで、接続結果を下表にまとめた。太字(ボールド)は、iOS/macOSで接続した時。セル背景グリーンは、Win10デフォルトでの接続時。




--- powershell command ---
設定変更
Set-VpnConnectionIPsecConfiguration -AuthenticationTransformConstants SHA1 -CipherTransformConstants AES128 -ConnectionName "L2TP IPsec on NVR500" -DHGroup Group14 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup PFS2048

設定内容を確認
 (Get-VpnConnection -Name "L2TP IPsec on NVR500").IPSecCustomPolicy


初期値に戻す
 Set-VpnConnectionIPsecConfiguration -ConnectionName "L2TP IPsec on NVR500" -RevertToDefault
----------------

(ISAKMP)部でaes256-cbc/sha2-256/modp2048で接続されたことが確認できる


LUAスクリプトでログから鍵を抽出する。


「SKEYID_e」も32Bytes(256bits長)が記録される。キー値の先頭8Bytesと「show ipsec sa gateway 2 detail」の(ISAKMP)部KEY値が一致することを確認。


生成された「ikev1_decryption_table」「esp_sa」鍵ファイルをWiresharkに取込みパケット解析する。ISAKMP部が復号されているのを確認。



結果
NVR500のL2TP/IPsec接続で、ISAKMPフェーズ1で「SHA1」が選択されるとログに記録される復号鍵が壊れている


追記
上記接続表の斜体文字(Italic)で示した条件で接続するとISAKMPのフェーズ1でSA[1]が生成され、フェーズ2でSA[2](send)、SA[3](receive)のSAが生成される。さらにSA[4]なる接続を確立しようとしてタイムアウトで接続に失敗する。NVR500には、SA[1]-SA[3]が削除されSA[4]だけ残っているのが確認された。Win10側の挙動としては、接続失敗までに長い時間がかかる。その間に「show ipsec sa gateway 2 detail」でSAの状態が確認できる。下記例では、SA[4]が生成されていないが、接続失敗後にSA[3]が残っている。条件により異なるのだと思う。何れにしても「ヤマハ」さんが解決する事と思う。
(追記):SA[1],SA[2],SA[3]が生成され、接続失敗で、SA[1],SA[2]が削除され、SA[3]が残る。SA[3]が生存中に再度接続が行われるとSA[1],SA[2],SA[4]が生成され、再度接続失敗でSA[1],SA[2],SA[3]が削除され、SA[4]が残る。というような状況。


Powershellで条件を設定


Win10のVPN接続で「長い接続中表示」の後の接続失敗表示


接続中の「show ipsec sa」の結果


接続中の「show ipsec sa gateway 2 detail」の結果


接続失敗表示後の「show ipsec sa」と「show ipsec sa gateway 2 detail」の結果



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

ヤマハNVR500のL2TP/IPsec VPNパケットをWiresharkで解析

2019-03-15 12:00:00 | NVR500
ヤマハNVR500にL2TP/IPsec VPN機能が追加されて約1年半が経った。利用しているISP(ぷらら)のIPv6 IPoE接続サービスが開始され快適なIPv6環境となった。IPv6経由のIKEv2/IPsec VPN接続環境も出来、IPv6環境でのMTUも確認した。MTU確認時にぷららIPv4 PPPoE接続のNVR500 L2TP/IPsec VPNパケットを解析した。NVR500のログから解析用の鍵をLUAスクリプトで抽出したのでメモしておく。


(1)NVR500でISAKMPとESP用鍵を記録する
L2TP/IPsec接続中に「show ipsec sa」でgateway_idを確認し「show ipsec sa gateway gateway_id detail」で鍵が表示されるらしい。iPhone(iOS 12.1.4)でAeon mobile(IIJ/Docomo)経由でL2TP/IPsec VPN接続し、sshで接続して確認してみる。

「Key: ** ** ** ** ** (confidential) ** ** ** ** **」?
「administrator」なのですが。。。
正当な表示者としての「秘密の合言葉(option argument)」でもあるのでしょうか?
Google調査してみるが、記述を見つけられない。。。
思い直して「シリアルコンソール」から表示してみると

コピー&ペーストだと手が掛かるので、シリアルコンソールから
「show ipsec sa gateway gateway_id detail > sd1:/local/ipsec-keys.txt」で書き出してみる。
おいおい、また、「Key: ** ** ** ** ** (confidential) ** ** ** ** **」!
「administrator」として認められていない。。。悲しい。。。
YAMAHA RTシリーズのFAQ / IPsec&IKE&VPNの「トラブルシューティング」「どうやって調べたらよいですか?」「 ipsec ike logコマンド」 に従い、「ipsec ike log gateway_id key-info」を設定し、「syslog debug on」。
iPhone(iOS12.1.4)は、ヤマハの動作確認済みクライアント一覧に従いAES256-CBC/SHA-HMACに設定し接続。

「show ipsec sa gateway gateway_id detail」の結果
このデータは、「show ipsec sa gateway gateway_id detail > ipsec-sa.txt」でファイル化出来ない.
copy&pastである。以下のログデータも含め「AES-CBC/SHA-HMAC」で接続した時のデータである。

ISAKMP部では、AES256-CBC/SHA256-HMACで処理が行われている。
Diffie-Hellman値は、modp2048が選択される。
ESP部は、指定されたAES-CBC/SHA-HMACが選択される。ISAKMP部でSHA256が扱えて、ESP部でSHA256が扱えない不思議。
Remote IDは、接続元のグローバルIPv4アドレス。
Local IDは、NAT後のイントラネット側IPv4アドレス。
ISAKMP部のSPIは、CKY-Iの8バイトとCKY-Rの8バイトを結合した16バイトの値が表示されている。Keyは、SKEYID_eの32バイトから先頭8バイトを表示。
ESP部のSPIは、SPIの8バイト。Keyは、key material (first 16 bytes)の16バイトを表示。AES256-CBCが選択されていてもKey materialは、16バイトしか表示されない。

このコマンド結果は、セキュリティ対策や暗号化方式の追加変更に伴い変更が十分な検討が行われていないように見受けられる。
AES256-CBC/SHA-HMAC接続時のデータ



ISAKMP部

NVR500のL2TP/IPsecのISAKMPは、IKEv1との事で、wiresharkが必要とする「CKY-I」値8バイトと「SKEYID_e」値32バイトの鍵データ(256bits)を取り出す。
AES256-CBC/SHA-HMAC接続時のデータ


ESP部

「Local ID -> Remote ID」(send)送信方向のSA情報(responder)としてSPI値4バイト。暗号化方式AES256-CBCの鍵「Key material」値32バイト(256bits)のはずだが、「(first 16 bytes)」って。。。。128bitsだがどうするの。。。
「Remote ID -> Local ID」(receive)受信方向のSA情報(initiator)としてSPI値4バイト。Key material値32バイトも「(first 16 bytes)」。。。
これでは、wiresharkで復号出来ない。
シリアルコンソールの「show ipsec sa gateway gateway_id detail」もAES256-CBCの鍵長16バイト。。。

認証確認用鍵は、「(first 8 bytes)」(64 bits)がログされている。SHA-HMACは、20 bytes(160 bits)で計算し、96 bitsが使用される。160 bitsに満たない鍵は、0x00で補完される。8 bytes(64 bits)で設定したが認証確認できないので鍵長不足と判断。このデータは使用しない。ただし、Wiresharkの「esp_sa」設定で「Authentication」が「NULL」指定だと認証確認データ長が確定出来ないようで、ESP復号がうまくいかない。「HMAC-SHA-1-96 [RFC2404]」を指定する。
AES256-CBC/SHA-HMAC接続時のデータ



L2TP/PPP部

L2TP/IPsec VPN接続が完了しても「Local ID」用のグローバルIPv4アドレスがログに記録されていない。
「show status pp 1」として「ぷららISP」へのPPPoE接続情報から得るしかない。
「Remote ID」用のグローバルIPv4アドレスは、ESP部の「respond IPsec phase to 163.49.207.102」ログで取得。

(2)鍵長対策
消極的対策として、「wiresharkパケット解析」するときだけ暗号化鍵長を短くする。。。
「詳細設定と情報」「VPN接続の設定」「VPN接続設定の修正(Anonymous)]」「VPN接続設定の 修正」「VPN Anonymous 接続 共通設定」で「暗号アルゴリズム=AES-CBC」とする。
または、「詳細設定と情報」「コマンドの実行」で「ipsec sa policy 2 2 esp aes-cbc sha-hmac」とする。
解析作業終了後は、「ipsec sa policy 2 2 esp aes256-cbc sha-hmac」で戻す。

(3)鍵抽出用LUAスクリプト
NVR500の外部メモリSD1をファイル共有設定している。
ここにLUAスクリプトを置き、wireshark用のISAKMP及びESP鍵ファイルを出力する。
Windows10からは、利用できない(レジストリ設定で利用できるらしい)が、Windows7あるいは、macOS(10.12.6)から利用できる。macOSでは、ファインダーで「移動」「サーバへ接続」「cifs://nvr500.familyname/local」

スクリプトは、rt.command("show log")でlogData変数にログを取込み解析する予定であったが、エラーとなる。そこで、一度ファイルに書き出し、再度変数に読み込む事で回避した。たまに、ファイル書き出しが終わる前に読み込みが実行されるとエラーになるので、rt.sleep()で時間調整が必要になる事もある。適宜対応する。
-------- GetNVR500ISAKMPESPKey.lua --------
--[[
	Mar.8 '2019 Rabbit51
	GetNvr500ISAKMPESPKey.lua
]]
logTmp = "sd1:/local/GetNvr500ESPlog.txt"
espsapath = "sd1:/local/"
local logData, iip, rip, ispi, rspi, ieky, reky, dt, r, m
local icky, isakmpkey
local sendconf, receiveconf

function loadLogFile(logfile)
	local handle = io.open(logfile,"r")
	local content=handle:read("*all")
	handle:close()
	return content
end

if arg[1] ~= nil then
    logData = loadLogFile(arg[1])
else
    r,m = rt.command("delete logTmp")
   if r == nil then rt.syslog("info","[LUA] "..arg[0].." "..m ) end
    r,m = rt.command("show log | grep 'IKE|L2TP|ANONYMOUS01' > "..logTmp)
    -- logファイルが生成される前にloadLogFile()が実行される場合にsleep()で時間調整
    -- rt.sleep(6)
    if r ~= nil then
        logData = loadLogFile(logTmp)
    else
        rt.syslog("info","[LUA] "..arg[0].." show log command error" )
		return r,m
    end
end

print("now matching...\r\f")

-- ISAKMP
local tcky, eky1, eky2
for tcky,eky1,eky2 in string.gmatch(logData, "%[IKE%] CKY%-I%s.-%[IKE%]   ([%w ]+)%s.-%[IKE%] SKEYID_e%s.-%[IKE%]   ([%w ]+)%s.-%[IKE%]   ([%w ]+)") do
	if tcky ~= nil then
		icky = string.gsub(tcky," ","")
		isakmpkey = string.gsub(eky1," ","")..string.gsub(eky2," ","")
	end
end

-- find last IKEv1 connection and get that global ip address and date
local pos = 1
while true do
	local pbt,pet,iipt,dtt = string.find(logData, "%[IKE%] respond IPsec phase to ([%d%.]+)%s-([%d/: ]+): ", pos)
	if pbt ~= nil then
		pb=pbt
		pe=pet
		iip = iipt
		dt = dtt
		pos = pet
	else
		break
	end
end
dt = string.gsub(dt,"[/: ]","")

-- get the SPI and the encryption key of Responder
local spi,ekey
pb,pe,spi,ekey = string.find(logData,"%[IKE%] SPI%s.-%[IKE%]   ([%w ]+).-%[IKE%] key material %(first 16byte%)%s.-%[IKE%]   ([%w ]+)",pe)
if pb ~= nil then
	rspi = spi
	rekey = ekey
	pos = pe
else
	rt.syslog("info","[LUA] "..arg[0].." No Responder SA...")
end
-- get the SPI and the encryption key of Initiator
pb,pe,spi,ekey = string.find(logData,"%[IKE%] SPI%s.-%[IKE%]   ([%w ]+).-%[IKE%] key material %(first 16byte%)%s.-%[IKE%]   ([%w ]+)",pe)
if pb ~= nil then
	ispi = spi
	iekey = ekey
else
	rt.syslog("info","[LUA] "..arg[0].." No Initiator SA...")
end
rspi=string.gsub(rspi," ","")
ispi=string.gsub(ispi," ","")
rekey=string.gsub(rekey," ","")
iekey=string.gsub(iekey," ","")

-- Get the Global IP Address of Responder
r,m = rt.command("show status pp 1")
if r == true then
	rip=string.match(m,"PP IP Address Local: ([%d%.]+),")
else
	rt.syslog("info","[LUA] "..arg[0].." "..m)
end

sendconf=string.format("%s,%s\n",icky, isakmpkey)
local fh,estr,ecode = io.open(espsapath..dt.."ikev1_decryption_table","w")
if fh == nil then
	fh:close()
	return nil,estr,ecode
else
	fh:write(sendconf)
	fh:close()
end

sendconf=string.format("%q,%q,%q,%q,%q,%q,%q,%q\n","IPv4",rip,iip,"0x"..rspi,"AES-CBC [RFC3602]","0x"..rekey,"HMAC-SHA-1-96 [RFC2404]","")
receiveconf=string.format("%q,%q,%q,%q,%q,%q,%q,%q\n","IPv4",iip,rip,"0x"..ispi,"AES-CBC [RFC3602]","0x"..iekey,"HMAC-SHA-1-96 [RFC2404]","")
fh,estr,ecode = io.open(espsapath..dt.."esp_sa","w")
if fh == nil then
	fh:close()
	return nil,estr,ecode
else
	fh:write(sendconf)
	fh:write(receiveconf)
	fh:close()
end

print("isakmp cookie id="..icky)
print("isakmp key="..isakmpkey)
print("Local IP Address -> "..rip)
print("Remote IP Address -> "..iip.."\r\fConnection date -> "..dt)
print("Responder SPI="..rspi.."\r\fResponder EKEY="..rekey)
print("Initiator SPI="..ispi.."\r\fInitiator EKEY="..iekey)


(4)Wiresharkでキャプチャ作業
NVR500の「コマンド実行」
「ipsec sa policy 2 2 esp aes-cbc sha-hmac」
「syslog debug on」

Wiresharkのキャプチャ実行
NVR500 L2TP/IPsec VPN 接続
*** キャプチャのための作業***
Wiresharkのキャプチャ終了
Wiresharkのキャプチャデータを保存

NVR500の「コマンド実行」
「ipsec sa policy 2 2 esp aes256-cbc sha-hmac」
「syslog debug off」
「lua sd1:/local/GetNvr500ISAKMPESPKey.lua」
実行結果が表示されないので、ファイル生成を確認
「show file list sd1:/local」

Wiresharkの実行PC(Macbook pro)上で
「cat /Volumes/local/20190313220052ikev1_decryption_table >> .wireshark/ikev1_decryption_table」
「cat /Volumes/local/20190313220052esp_sa >> .wireshark/esp_sa」
Wiresharkの再起動(終了起動)し保存したキャプチャデータの読込
パケットの解析

メモ1: 「syslog debug on」の状態だとwindows10のdhcpcからnvr500の知らない「[DHCPv6] unsupported option vender-opts(0x11)」通知メールが出続けるので「syslog debug off」必須。


--- 2019/04/18追記:
Win10 VPN接続時のNVR500 L2TP/IPsec ISAKMP復号鍵が壊れて表示
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ヤマハNVR500で「ぷらら」IPv6 IPoE接続 Transix DS-Lite

2018-06-24 09:00:00 | NVR500
「ぷらら」のIPv6 IPoE接続、5年半ほどかかったが、お願い「PlalaさんIPv6のIPoEサービスを提供してください」が実現した。IPv6 IPoE接続設定は、NVR500の簡単設定・プロバイダ情報の設定で可能だ。IPv6 IPoEによるNGNとインターネットの接続事業者は、インターネットマルチフィードTransixサービスが使われている。Transixは、IPv6インターネット接続だけでなくIPv4インターネット接続をAFTR(Address Family Translation Router)装置でNAPT接続するDS-Lite(Dual Stack-Lite : IPv4 over IPv6)オプションサービも含まれている。DS-Liteは、NAPTのためL2TP/IPSecによるVPN接続やデジタル写真データを配布するためのWebサービスを適応する事ができない。これらの機能を稼動させるため、ぷららのIPv4 PPPoEインターネット接続とDS-Liteを併用するよう設定する事にした。


NVR500でDS-LiteのAFTRに接続するには、「IPIP Tunnel」を使用する。確か、VPNもTunnelを使っている。簡単設定の「詳細設定と情報」「VPN接続の設定」「設定可能なVPN設定」でPPまたはTUNNEL表示された追加ボタンでTunnelの設定が選択できる。「IPIPトンネルを使用したネットワーク型 LAN間接続」を使用してDS-Liteの設定を試みた。




設定出来ない。。。


TUNNEL1には、VPNアカウントがbindされたL2TP/IPSecトンネル設定
TUNNEL2には、コマンド実行から「DS-Lite接続設定」がしてある。この状態でTUNNEL2の設定を開くと設定出来そうな画面となる。「設定の確定」を行うと幸いな事に「間違いがあるので登録できません」となり意図しない上書き変更されない。
この状態で、VPNアカウントを追加すると「PP Anonymous」セクションにアカウントが追加される。TUNNELへのbindも変更されている。「pp bind tunnel1-tunnel2」?TUNNEL2は、DS-Liteに使っているのだが。。。。


TUNNEL2の設定を確認してみるとコマンドの上書きと追加が行われていた。


VPNの登録された追加アカウントを削除してみた。「PP Anonymous」セクションで追加ユーザが削除されたが、bindされたTUNNELが変更されている。。。。


「TUNNEL」セクションを確認すると、TUNNEL1が削除され上書き追加されたTUNNEL2が残っている!

これは、上手くない。意図しない変更が発生しそうな予感がする。簡単設定の選択範囲外のTUNNEL番号を設定すれば、簡単設定画面に表示されない(PP番号で確認)。コマンド実行から「TUNNEL5」で設定しようとすると番号が範囲外で設定出来ない。NVR500の最大TUNNEL数が4と思われる。DS-Lite接続でTUNNELを1個使うとVPNアカウントが3個までしか設定出来なくなる。VPNアカウントが壊されてしまったので、TUNNEL1をDS-Lite接続に使用し、VPNアカウントは、TUNNEL2以降が使われるよう変更した。

TUNNEL設定は、disableを設定していないと直ぐに接続された状態になる。設定には、「ip route default」コマンドでDS-LiteへのTUNNELインターフェースを設定するので不具合を想定してdisableの状態で設定するのが良い。
セキュリティフィルターは、Plala IPv4PPPoEで設定されるPPインターフェースと同じ設定とした。L2TP/IPSecとhttp/httpsの静的IPマスカレード関連のファイアウォールフィルタ80-97を除いたフィルタを設定した。
---------------------------------------
tunnel select 1
tunnel disable 1
tunnel name "Plala Transix DS-Lite"
tunnel encapsulation ipip
tunnel endpoint address 2404:8e00::feed:100
ip tunnel secure filter in 200003 200020 200021 200022 200023 200024 200025 200030 200032
ip tunnel secure filter out 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
---------------------------------------

このTUNNEL1をdefaultルートとして設定すれば、Transix DS-Lite経由のIPv4インターネット接続できる。
pp01にぷららのIPv4 PPPoEインターネット接続の経路設定がされている。同時に使用するにはどうしたら良いか?

---------------------------------------
ip route default gateway pp 1 filter 500000 gateway pp 1
----
ip filter 500000 restrict * * * * *
---------------------------------------

「pp 1」と「tunnel 1」でweightを設定する事にした。通常使用されるのは、Transix DS-LiteとしPlala IPv4 PPPoEは、補佐的に設定した。外部から接続されるL2TP/IPSecのVPNとhttp/httpsのwebに関しては、「pp 1」が使用されるはず。

---------------------------------------
ip route default gateway tunnel 1 weight 1000 hide gateway pp 1 weight 1 hide
---------------------------------------

コマンド実行で「tunnel enable 1」を実行し、DS-LiteへのTUNNELを有効にする。
上手く接続され、Transix DS-Liteで接続されるようになる。TUNNEL1をdisableするとpp 1が使用される。TUNNEL1が有効だとL2TP/IPSecのVPNとhttp/httpsのwebが利用できない。TUNNEL1をdisableすると利用できる。L2TP/IPSecのVPN接続は、PlalaのIPv4 PPPoE側からしか利用できないので、IPSecに関するパケットは、PP1へ送る。NVR500から接続元へ帰るIPSec関連のUDP/500, 4500とESPをPP1へ送るようにFilter経路設定を行うこととする。インターネットから接続されるhttp/httpsも同様にFilter経路設定とした。

---------------------------------------
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.AAA * udp 500,4500 *
ip filter 11 pass 192.168.11.AAA * esp * *
ip filter 12 pass 192.168.11.BBB * tcp 1080,1443 *
---------------------------------------
ip filter 500000 restrict * * * * *
---------------------------------------

簡単設定が挿入する500000番のFilterを加えても良いかも。。。

Plala IPv4 PPPoE + Transix IPv6 IPoE + DS-Lite 同時接続時


Macbook proでIPv6テスト(IPv4もIPv6もインターネットマルチフィードからインターネットへ)


iPhoe6SからL2TP/IPSecのVPNで接続してIPv6テスト
OverridePrimaryがFalseなので、イントラネット宛て以外のサイトへの接続は、VPNを介さず、iPhone6SのSIMキャリア(DoCoMo MVNO IIJ/AEON)のipで接続しているのが判る。


L2TP/IPSecでイントラネット内に接続し、NVR500のトップ画面へ接続。VPN接続表示が確認できる


http/httpsサイトへの接続(VPN切断でキャリアネットワークから接続)


イントラネット内にWiFiで接続し、IPv6テスト。インターネットマルチフィードから接続されているのが判る。


-----
P.S.
メール通知機能

メール通知機能に使う、メールサーバの設定で「mailserver.plala.or.jp」の25番ポートで設定がしてあった。
Transix DS-Liteで「ぷらら」の外からsmtp 25番ポートで送信が行われることとなり、送信失敗が発生した。
pp1のぷらら経由となるようFilter経路設定を加えるか、Submission port(587)からSMTP AUTHで接続するかに変更する必要が発生した。Submission portでsmtp authが使われるよう設定変更した。


------
設定内容(NVR500)





























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

ヤマハ NVR500で「ぷらら」のIPv6 IPoE接続を行う

2018-06-21 11:00:00 | NVR500
Plala IPv6 IPoE接続が開始されていた。。。
「フレッツ光」は、NTT。ISPは、ぷらら。この契約状態は、「ぷらら光メイト」と言うらしい。IPv6 IPoE接続の対象で「マイページ」(表示は、「光セット(ホーム)」)からIPv6 IPoE接続の利用申請を申し込みをしてみた。


「ぷらら」IPv6 IPoE接続構成図


申し込みは、6月17日(日曜日)。IPv6 IPoE接続に2−3日かかる事が書かれていた。日曜日の申請出し、週半ば以降の接続と考えていた。18日の月曜日の夕方、IPv6接続がうまく動作していないようなので「マルチPrefix」でIPv6ソースアドレス選択がうまくいっていないのか確認をしていた。LUA(NgnPrefixSetting.lua)がPrefixの変更を記録していた。経路情報ID=1311(NTT East)から1412(接続事業者)に変化している。
-------------
2018/06/17 21:40:00: [SCHEDULE] lua sd1:/local/NgnPrefixSetting.lua
2018/06/17 21:40:00: [LUA] sd1:/local/NgnPrefixSetting.lua NGN Prefix=2408:210:XXXX:YY10::/60
2018/06/18 01:40:00: [SCHEDULE] lua sd1:/local/NgnPrefixSetting.lua
2018/06/18 01:40:00: [LUA] sd1:/local/NgnPrefixSetting.lua NGN Prefix=2408:210:XXXX:YY10::/60
2018/06/18 05:26:57: [DHCPv6] receive RECONFIGURE
2018/06/18 05:27:00: [DHCPv6] Renumbering start (LAN2)
2018/06/18 05:27:03: LAN1: PORT4 link down
2018/06/18 05:27:03: LAN1: link down
2018/06/18 05:27:03: [ONFS] Network configuration or status changed
2018/06/18 05:27:03: [DHCPv6] Renumbering success (LAN2)
2018/06/18 05:27:06: LAN1: PORT4 link up (1000BASE-T Full Duplex)
2018/06/18 05:27:06: LAN1: link up
2018/06/18 05:27:07: [ONFS] Network configuration or status changed

2018/06/18 05:40:00: [SCHEDULE] lua sd1:/local/NgnPrefixSetting.lua
2018/06/18 05:40:00: [LUA] sd1:/local/NgnPrefixSetting.lua NGN Prefix=2409:10:XXXX:ZZ10::/60 (changed from 2408:210:XXXX:YY10::/60)
2018/06/18 09:40:00: [SCHEDULE] lua sd1:/local/NgnPrefixSetting.lua
2018/06/18 09:40:00: [LUA] sd1:/local/NgnPrefixSetting.lua NGN Prefix=2409:10:XXXX:ZZ10::/60
-------------
申し込み翌日の午前5時半ごろ。DHCPv6のRECONFIGUREが通知されPrefixの更新が行われた。前段にあるひかり電話ルータ(PR-S300SE)のDHCPv6 もRECONFIGUREが通知されPrefixが変更されていた。この時、ひかり電話も切断される。一番利用頻度が低そうな時間帯に変更されていた。おそらく人間の手を介さない「自動変更」なのだろう。

NVR500のIPv6PPPoE接続設定の一部を変更してIPv6 IPoE接続を行なってみた。
・IPv6PPPoE接続の「切断」
・簡単設定「詳細設定と情報」
「基本接続の詳細な設定」プロバイダ設定のIPv6 IPoE「設定」「設定の確定」で再設定。
「コマンド実行」
・dns server select 100100 dhcp lan2 any .
端末機器のIPv6 PrefixをRAされたPrefixに再設定させるため、LAN接続のコネクタを外し、再度接続する。WiFiは、一度切断し、再接続する。

Macbook pro Safari 11.1.1




Windows10 IE11




iPhone6S WiFi(NVR500配下のAirMac Time Capsule)


iPhone6S 4G


開通通知が来た。
申請から変更(自動?)まで約8時間。変更から通知まで約17時間。


ぷららのマイページを確認してみた


NVR500の「ぷららIPv6 IPoE」設定
NVR500の簡単設定でひかり電話とぷららIPv4 PPPoEとIPv6 PPPoEの同時接続設定から不要な設定を排除し、NGN経路情報設定を行うLUAスクリプトは、実行させている。
System configuration


IPv6 configuration


LAN configuration


Provider type configuration


IPv6 filter/IPv6 dynamic filter Configuration


DNS configuration


Schedule configuration


簡単設定画面


ぷららにチャットでIPv6 IPoEについて確認してみた




ぷららのIPv6 IPoEの接続事業者は、「インターネットマルチフィード」「Transix
DS-Lite(Dual Stack Lite) IPv4 over IPv6が使えるようだ。ぷららのIPv4PPPoE接続と切り替えで接続できるようNVR500の設定を検討する予定。

P.S.
調べてみると、「ぷらら」のIPv6 IPoEサービスは、2017年9月頃から始めたようだこのページでは、mfeedでなくOCNだとの事

----- ぷららIPv6 IPoE関連(2019/03/12追記)
ヤマハNVR500で「ぷらら」IPv6 IPoE接続 Transix DS-Lite(2018/06/24)
光ネクストPR-S300SEのIPv6 IPoEにICMPv6フィルタ(2018/06/25)
ひかり電話ルータ(PR-S300SE)のデフォルト・ゲートウェイ設定(2018/06/26)
Synology DS-216JのWebStationを「ぷらら」IPv6 IPoEでアクセス(2018/7/1)
Synology DS-216JのDDNSでIPv6 AAAAレコードを登録する(2018/7/9)
ひかり電話ルータ(PR-S300SE)接続のMacから「ぷらら」IPv6 IPoE DS-Liteを使う(2018/07/17)
「ぷらら」のIPv6ページから「詳細」ページが消えていく。。。(2018/07/21)

「ぷらら」IPv6 IPoEからメールサーバのIPv6対応を確認する(2018/07/22)
Buffalo WZR-HP-G300NHにOpenWrtを入れ「ぷらら」のIPv6 IPoEでTransix DS-Liteを使う(2018/08/19)
ひかり電話ルータ(PR-S300SE)配下のPCからOpenWrt化WZR-HP-G300NHで「ぷらら」IPv6 IPoE Transix DS-Liteを使う(2018/08/21)
Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続(2019/01/25)
StrongSwan IKEv2 VPN over IPv6 with iOS/macOSX/Win10 (IKE設定)(2019/01/28)
StrongSwan IKEv2 VPN over IPv6 with Win10 (Split DNS設定)(2019/01/29)
StrongSwan IKEv2 VPN over IPv6 with iPhone(OS VPNアプリ設定接続)(2019/02/01)
StrongSwan IKEv2 VPN接続とINTERNAL_DNS_DOMAIN設定(2019/02/02)
フレッツ光NGNのIPv6(IPoE)インターネット接続業者(VNE)とIPv6 Prefix(2018/11/05)
PR-S300SEのIPv6セキュリティフィルタを調整(2019/02/08)
ぷららIPv6 IPoEでNTP同期(2019/3/1)
ぷららIPv6 IPoE環境のMTU確認(2019/03/05)
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ヤマハNVR500の簡単設定でひかり電話とぷららIPv4 PPPoEとIPv6 PPPoEの同時接続設定

2018-06-19 12:00:00 | NVR500
連休の後半5月2日から3日にかけて「ぷららでDNS不具合による通信障害」から障害回避の設定変更を行った。結果、ヤマハNVR500に意図しない設定変更が発生してしまった。
ヤマハNVR500設定(かんたん設定でひかり電話とNGN)」でIPv4インターネット接続、ひかり電話、IPv6 NGN接続を回復させた。
IPv6 PPPoEインターネット接続(IPv4と常時同時接続)設定についても簡単設定で不具合が発生しない設定を検討してみた。


ヤマハNVR500設定(かんたん設定でひかり電話とNGN)」で「ひかり電話を使用」とすることでNGNへの接続も回復する。この状態から「プロバイダー情報設定」で「フレッツ光ネクストにおけるインターネット(IPv6 PPPoE)接続」と「フレッツ光ネクストにおけるインターネット(IPv6 IPoE)接続」の選択設定ができる。「ヤマハNVR500設定(かんたん設定でひかり電話とNGN)にIPv6 PPPoEを加える」の方式では、ひかり電話との共用ができない(設定でひかり電話設定が削除される)。IPv6 IPoE方式の設定でIPv6 PPPoEの選択が出来なくなる事を利用して誤設定防止を行うこととした。

IPv6 IPoEインターネット接続設定(ひかり電話契約有り)
現時点でPlalaのIPv6 IPoEサービス利用できないため、設定を加えると「dns」でアクセス出来なくなる。「IPv4 PPPoE+ひかり電話」「IPv4 PPPoE+IPv6 IPoE+ひかり電話」「IPv4+IPv6IPoE+ひかり電話+LUAドメイン設定」でdns関連コマンドの変化を記載しておく。IPv4 PPPoEは、PP1に設定。IPv6 IPoEは、LAN2に設定される。

IPv4 PPPoE + ひかり電話
dns server pp 1
dns server select 500001 pp 1 any . restrict pp 1

IPv4 PPPoE + IPv6 IPoE + ひかり電話
dns service fallback on
dns server dhcp lan2
dns server select 500000 dhcp lan2 any .
dns server select 500001 pp 1 any . restrict pp 1

「dns server select 500000」が簡単設定時に挿入される。未契約で利用できないIPv6 IPoEインターネット接続のDNSが選択されるため名前解決が出来なくなる。NGN内のドメインは、名前解決される。
ヤマハNVR500のLUAスクリプトでNGNドメインのDNS選択を行う」でDHCPv6で指定されるNGNのDomain nameを設定させる。

IPv4 PPPoE + IPv6 IPoE + ひかり電話 + LUAドメイン設定
dns service fallback on
dns server dhcp lan2
dns server select 100001 dhcp lan2 any flats-east.jp
dns server select 100002 dhcp lan2 any iptvf.jp
dns server select 500000 dhcp lan2 any .
dns server select 500001 pp 1 any . restrict pp 1

「詳細設定と情報」「コマンド実行」
「dns server select 100110 pp 1 any . restrict pp 1」を実行して設定する

IPv4 PPPoE + IPv6 IPoE + ひかり電話 + LUAドメイン設定 + コマンド実行
dns service fallback on
dns server dhcp lan2
dns server select 100001 dhcp lan2 any flats-east.jp
dns server select 100002 dhcp lan2 any iptvf.jp
dns server select 100110 pp 1 any . restrict pp 1
dns server select 500000 dhcp lan2 any .
dns server select 500001 pp 1 any . restrict pp 1

「flets-east.jp」「iptvf.jp」ドメインは、NGNのdhcpから得たDNSで検索。それ以外は、pp1から得たDNSで検索。ただし、pp1のPlala IPv4 DNSは、IPv6のaaaa応答しない(AAAAフィルタ)。pp1接続がされていないとlan2のdhcpから得たDNSで検索。
これで、IPv4インターネット接続とNGN接続が出来るようになり、IPv6 PPPoE方式の接続設定が「簡単設定」から選択できなくなる。


IPv6 PPPoEインターネット接続設定
--- IPv6 PPPoE設定が簡単設定からは出来ない ---
(1)NGN経路情報設定
ヤマハNVR500のLUAスクリプトでNGN経路情報設定を行う」でNGNへの経路設定を行う

(2)IPv6 Prefixの設定
ヤマハNVR500のLUAスクリプトでNGN Prefixを取得しRAのために設定を行う」でNGNのPrefixを静的prefixに設定する。
設定される静的Prefix
ipv6 prefix 10 2409:10:AAAA:BBBB::/64 valid_lifetime=14400 preferred_lifetime=14400

(3)「詳細設定と情報」「コマンドの実行」からIPv6 PPPoE接続設定
簡単設定で使用される「pp1」から「pp10」を避け、「pp11」で設定する
PPのsecure filterは、IPv6 IPoEで設定されたフィルタ定義を共有して使う。必要ならidを変えて定義設定する。
「provider」コマンドの動作がよく判らない。コマンドリファレンスでも動作がよく判らない。
「接続」「切断」ボタンを表示させるために「pp name」と「provider set」コマンドが必要。
--------- 1回目の実行(PPPoE接続設定)
pp select 11
pp name "PRV/2:Plala IPv6 PPPoE"
pp keepalive interval 30 retry-interval=30 count=12
pppoe use lan2
pppoe disconnect time 60
pppoe call prohibit auth-error count off
pp auth accept pap chap
pp auth myname someone anypassword
ppp lcp mru on 1454
ppp ccp type none
ppp ipv6cp use on
ipv6 pp secure filter in 101030 101031 101032 101098
ipv6 pp secure filter out 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ipv6 pp dhcp service client
pp disable 11

----------2回目の実行(プロバイダ設定)
provider set 11 "Plala IPv6 PPPoE"

----------3回目の実行(DNS関連)IPv6PPPoE接続時に使うDNSを設定
dns server select 100100 pp 11 any . restrict pp 11

----------4回目の実行
ipv6 route default gateway pp 11
ipv6 prefix 2 dhcp-prefix@pp11::/64
ipv6 lan1 address dhcp-prefix@pp11::1/64
ipv6 lan1 rtadv send 2 10 o_flag=on


「簡単設定」から「接続」ボタンをクリックする事で「Plala IPv6 PPPoE」接続がされる。
・「切断」ボタンをクリックすると一度切断されるがすぐに再接続されてしまう。切断ボタンをクリックする前にコマンド実行から「pp disable 11」投入後に「切断」ボタンをクリック。何か良い方法を見つける必要があるかも。。。


「詳細設定と情報」
IPv6 Configuration


LAN Configuration


Provider Type Configuration


PP Configuration


DNS Configuration



「簡単設定」画面
詳細設定からPP11の設定を変更することができない(期待通り)


「詳細設定と情報」「IPv6の設定」での変更もできない(期待通り)


「プロバイダの設定」から「IPv6 PPPoE設定」PP11の設定にアクセスできてしまう(期待はずれ)


内容を確認してみる。


DNS設定(手動入力部が表示されている。PP2にIPv6 PPPoE設定がされているとグレー表示)


設定のサマリー


IPv6 PPPoEが切断されている状態で「接続」を実行してみる




接続後、取得されたPrefixが表示される。「切断」ボタンが表示されているが、切断しても直ぐに接続されてしまう。自動接続をOffにしているつもりなのだが。


--- 追記 ---
「切断」ボタンで切断状態を維持するため
「pp select 11」

「pppoe auto connect off」
を投入すると良いようだ。

IPv6 PPPoE接続が行われるとマルチ・プレフィックス(NGNからとPlalaから)であるため、起点アドレス選択が適切に行われないと接続できない。Windowsは、Prefix Policy tableを適切に設定することでうまく動作する。MacBook pro(macOSX)は、起点アドレス選択を適切にできないためアウト。

Internet Explorer などで NTT 東日本、NTT 西日本の IPv6 閉域網に接続している環境でタイムアウトが発生する
IPv6 のソースアドレスおよび宛先アドレス選択

Policy tableを修正後、IPv6サイトのnslookupをしてみる。


tracerouteしてみる



IPv6テストサイトで確認(サマリー)


IPv6テストサイトで確認(テストラン)


NGNの速度を計測(6年前は、軽く600Mbps以上だったが・・・)


P.S.
ぷららがIPv6 IPoEの提供を始めたようなので、IPv6 IPoEへ移行する予定。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする