Page 1 of 1

Etherip ipsecを用いたNATトラサーバル無効での接続が定期的に切断されます。

Posted: Sun Jun 26, 2016 1:59 pm
by inyuito
初めましてイニュイトです。
下記のとおり症状が発生しており皆様のお力添えを頂きたく質問をしたしだいです。

拠点A NEC IX2015 Software, Version 8.3.49
拠点B SoftEther VPN Server (64Bit) Ver. 4.20 Build 9608 (UbuntuServer)
VPNプロトコル Ether-ip IPsec (IPv6接続)
設定はhttps://ja.softether.org/4-docs/2-howto/Other_VPN_Appliance_Setup_Guide/7
に載っているのと同様に設定しています。
上記の仕様で接続をした場合定期的に(一時間毎)に接続が切れます。
※NATトラサーバルの場合4500ポート,ダイレクトの場合500ポートが使用されています。

https://cope.jp/log/Log-SoftEther.txt
https://cope.jp/log/Log-IX.txt

https://cope.jp/log/ix2.txt

上記記載のログの通り
500ポートの場合セキュリティーの更新のタイミングでなんらかの理由で「新しい IPsec クライアントを作成しました。」となり
以前のセッションが廃棄され切断に至るようです。
素人な者で詳しい方にご教授いただければと思い質問させていただきました。どうぞよろしくお願いします。
また同様の環境だけど問題ないなど、そうゆう情報もあればお教え願います。

Re: Etherip ipsecを用いたIPv6での接続が定期的に切断されます。

Posted: Mon Jun 27, 2016 9:00 am
by cedar
ログのメッセージにもあるようにSAには寿命があり、設定では3600秒、つまり1時間で失効します。
通常は失効の前に新しいSAが作成されるのですが、何らかの理由で、SAの更新に失敗しているのではないかと思われます。
IX2015 側のログも確認してみてください。

また、ログを記載頂く場合は、タイミングが分かるようにログの時刻も合わせて記載いただければ分かりやすいと思います。

Re: Etherip ipsecを用いたIPv6での接続が定期的に切断されます。

Posted: Mon Jun 27, 2016 10:54 am
by inyuito
SAがないのは確かですね
ただいまログの採取中ですが
いろいろやっててとりあえずわかったのは
NATトラバーサルを無効にして
500ポートで繋ぐようになると
SAが上手く更新出来ないみたいという事です。
IPv4とか6とか関係なかったです。
IPv6はダイレクトなので
NATトラバーサルを有効に設定しても
無視されて500で繋ぐので上記の結果になったようでした。

Re: Etherip ipsecを用いたIPv6での接続が定期的に切断されます。

Posted: Tue Jun 28, 2016 10:21 am
by inyuito
SoftEtherとIX側のログを記載しておきます。
https://cope.jp/log/Log-SoftEther.txt
https://cope.jp/log/Log-IX.txt

IX ログーロング
https://cope.jp/log/ix2.txt

1. IX側でIKE phase 2に移行しない模様?
2. SoftEther側のクライアントIDが変わっているのも気になる。
3. NAT-T使わないけどSoftEtherが送ってくる。「DisableNatTraversal true」しても効果なし。

Re: Etherip ipsecを用いたIPv6での接続が定期的に切断されます。

Posted: Wed Jun 29, 2016 12:26 pm
by inyuito
経過報告です。

発生条件はNAT-Tを無効にする事です。
IX上のログでIKE SAのLifeTimeを迎え更新が行われる段階で
何らかの理由によりPhase1は完了するがPhase2が行われない?。

SoftEther上のログを見ると、IPsecクライアントが新規クライアントとして作成されている。

もしかするとSoftEtherが設定にかかわらずNAT-Tに関連するパケットを送っているのと
IXがNAT-Tを無効にしている関係で、無視しているために発生した不具合なのか?

NAT-T有効の場合
2016-06-29 19:04:12.695 IPsec クライアント 2 (10.39.40.2:500 -> 10.39.40.1:500):
2016-06-29 19:04:12.706 IPsec クライアント 2 (10.39.40.2:500 -> 10.39.40.1:500): このクライアント (クライアント 2) と既存の別のクライアント 1 とは同一ですので、クライアント 1 に結合されました。

NAT-T無効の場合
上記の処理が行われず。
2016-06-29 19:04:18.026 IPsec クライアント 3 (fe80::260:b9ff:fe47:9be1%2:500 -> fe80::225:11ff:fe37:4322%2:500): 新しい IPsec クライアントを作成しました。
2016-06-29 19:04:20.610 IPsec クライアント 4 (2001:a251:22a2:4f00:260:b9ff:fe47:bb2e:500 -> 2001:a251:303:6d00:21b:21ff:fe91:8234:500): 新しい IPsec クライアントを作成しました。
2016-06-29 19:04:21.375 IPsec クライアント 5 (2001:a253:6ac0:4ff1:260:b9ff:fe47:7b6f:500 -> 2001:a251:303:6d00:21b:21ff:fe91:8234:500): 新しい IPsec クライアントを作成しました。
新規のクライアントが複数できてしまう。


見逃していました・・・他の方も同様の症状にあったようです。
http://www.vpnusers.com/viewtopic.php?f=15&t=2212

Re: Etherip ipsecを用いたNATトラサーバル無効での接続が定期的に切断されます。

Posted: Thu Jun 30, 2016 2:29 pm
by cedar
「DisableNatTraversal true」は SoftEther VPN プロトコル用の設定なので IPSec では無視されます。

メッセージカタログ中に「このクライアントは IPsec NAT Traversal (RFC 3947 Negotiation of NAT-Traversal in the IKE または draft-ietf-ipsec-nat-t-ike) に対応していないため、接続を受け付けることができません。」というメッセージがあるため、SoftEther VPN はNAT-Tなしの IPSecには対応していないのではないかと思います。

Re: Etherip ipsecを用いたNATトラサーバル無効での接続が定期的に切断されます。

Posted: Sat Jul 02, 2016 9:20 am
by inyuito
こんにちは
cedarさん回答ありがとう御座います。

DisableNatTraversal true
やはりそうなのですね

確かにメッセージカタログにLI_IKE_NO_NAT_Tがありますね。
cedarさんの言われているとおりIPSecには対応していないのかもしれませんね。
ただ
1. 最初のセッションは繋がる事
2. 上記のカタログのログが出ない事
を踏まえデバッグ等のログでなぜそうなるのかを調べて行こうと思います。

一つお聞きしたいのですが
Windowsの場合は下記の記載の方法でデバッグで出来ると思うのですが
http://www.vpnusers.com/viewtopic.php?f=15&t=5285

当方Ubuntu(Linux)での使用ですので
UnixService関数になるのではないかと思います。
取りあえず純正ソースにて
make [DEBUG=YES]にてコンパイルしたのですが、
Windowsの様に起動因数もないためデバッグの出し方がわからず止まっております。
ソースを修正しなければいけないなどなにか不足している部分があれば
お教え願えればと思っております。
どうぞよろしくお願いします。

Re: Etherip ipsecを用いたNATトラサーバル無効での接続が定期的に切断されます。

Posted: Sat Jul 02, 2016 2:13 pm
by cedar
Windows 以外でデバッグ表示を有効にする場合は、UnixServiceMain関数の中でInitMayaquaが呼ばれているので同様にdebug引数をtrueに書き換えます。
また、起動時に引数「execsvc」を付けることで、デーモン化せず通常のプロセスとしてVPNサーバーを起動してください。

Re: Etherip ipsecを用いたNATトラサーバル無効での接続が定期的に切断されます。

Posted: Sat Jul 02, 2016 9:38 pm
by inyuito
Windows以外のデバッグに関して
./src/Mayaqua/Unix.c: InitMayaqua(false, false, argc, argv);

./src/Mayaqua/Mayaqua.c:void InitMayaqua(bool memcheck, bool debug, int argc, char **argv)
の「bool debug」より2番目がデバッグと分かるのでInitMayaqua(false, true, argc, argv);
に書き換え
make [DEBUG=true]
でコンパイル
./vpnserver execsvc |awk '{print strftime("%D %T"), $0}'>debug.log&
デバッグログ取得できました。

ありがとう御座いました。