web-dev-qa-db-ja.com

奇妙なOpenVPNの動作-1分後に切断されます

OpenVPNを使用して2つのプライベートネットワークを接続していますが、問題が発生し、解決できません。サーバーは、静的キーを使用した単純なUDP構成で接続されます。私はすでにiptablesの制限などをチェックしましたが、何もありません。また、両方のサーバーが直接パブリックIP上にあります。ルーター/ NATなどは間にありません。サーバーAはリッスンしており、サーバーBはクライアントです。 VPNが起動すると、クライアントは相互に接続し、すべてが完全に機能しますが、最初の1分間のみです。その後、動作を停止します。サーバーAからサーバーBへのトンネル接続(一方のエンドポイントからもう一方のエンドポイントへのping)は引き続き機能します(pingできます)が、反対側からは機能しません。次の1分間のウォッチドッグが認識した後、サーバーBで接続がダウンし、トンネルを再起動します。その後、1分間動作し、これが永遠に繰り返されます...

どちらのサーバーもUbuntu64ビットです。

サーバーA:

 root @ server:/ etc/openvpn#uname -an 
 Linuxサーバー2.6.38-13-仮想#52〜lucid1-Ubuntu SMP Thu Nov 10 19:46:44 UTC 2011 x86_64 GNU /Linux
root@server:/etc/openvpn# openvpn --version 
 OpenVPN 2.1.0 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH ] [PF_INET6] [eurephia] 2010年7月20日に構築
元々はJamesYonanによって開発されました
 Copyright(C)2002-2009 OpenVPN Technologies、Inc。

サーバーB:

 root @ gw2:〜#uname -an 
 Linux gw2 3.2.0-23-generic#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
 root @ gw2:〜#openvpn --version 
 OpenVPN 2.2.1 x86_64-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [ IPv6ペイロード20110424-2(2.2RC2)] 2013年2月27日に構築
元々はJamesYonanによって開発されました
 Copyright(C)2002-2010 OpenVPN Technologies、Inc。
 
 $ ./configure --build = x86_64-linux-gnu --prefix =/usr --includedir = $ {prefix}/include --mandir = $ {prefix}/share/man --infodir = $ {prefix }/share/info --sysconfdir =/etc --localstatedir =/var --libexecdir = $ {prefix}/lib/openvpn --disable-maintainer-mode --disable-dependency-tracking CFLAGS = -g -O2- fPIE -fstack-protector --param = ssp-buffer-size = 4 -Wformat -Wformat-security -Werror = format-security CPPFLAGS = -D_FORTIFY_SOURCE = 2 CXXFLAGS = -g -O2 -fPIE -fstack-protector --param = ssp-buffer-size = 4 -Wformat -Wformat-security -Werror = format-security FFLAGS = -g -O2 LDFLA GS = -Wl、-Bsymbolic-functions -fPIE -pie -Wl、-z、relro -Wl、-z、now --enable-password-save --Host = x86_64-linux-gnu --build = x86_64-linux -gnu --prefix =/usr --mandir = $ {prefix}/share/man --with-ifconfig-path =/sbin/ifconfig --with-route-path =/sbin/route 
 
コンパイル時間の定義:ENABLE_CLIENT_SERVER ENABLE_DEBUG ENABLE_EUREPHIA ENABLE_FRAGMENT ENABLE_HTTP_PROXY ENABLE_MANAGEMENT ENABLE_MULTIHOME ENABLE_PASSWORD_SAVE ENABLE_PORT_SHARE ENABLE_SOCKS USE_CRYPTO USE_LIBDL USE_LZO USE_

サーバーAovpn構成:

 daemon vpn-conn 
 writepid /var/run/openvpn-vpn.pid
dev tun3 
 proto udp 
 port 1859 
 comp-lzo 
 keepalive 10 30 
 persist-tun 
 persist-key 
 ifconfig 10.9.0.1 10.9.0.2 
 route 10.10.10.0 255.255 .255.0 
 secret my-key.key 
 log-append vpn.log 
 verb 5 

サーバーB:

 daemon vpn 
 writepid /var/run/openvpn-vpn.pid
remote 4.3.2.1 
 dev tun0 
 proto udp 
 port 1859 
 comp-lzo 
 keepalive 10 60 
 ping-timer-rem 
 persist-tun 
 persist-key 
 ifconfig 10.9.0.2 10.9.0.1 
 route 192.168.0.0 255.255.252.0 
 secret my-key.key 
 log-append vpn.log 
 mtu-test 
動詞5 

クライアントとサーバーの構成に「ping-timer-rem」、「mtu-test」、「float」を追加/削除するための調査を行いましたが、問題は解決していません。

サーバーAはまだ奇妙なことをログに記録しています(問題の原因になる可能性があると思いますが、解決方法がわかりません。両方のサーバーの時間は同じです):

 Wed Sep 4 10:25:44 2013 us = 125832 Authenticate/Decrypt packet error:bad packet ID(may be replay):[#100/time =(1378283056)Wed Sep 4 10:24:16 2013]-詳細については--no-replayおよび--replay-windowのマニュアルページエントリを参照するか、-mute-replay-warnings 
でこの警告を消してください。

サーバーAのもう1つの奇妙な点は、サーバーBが2つのソケットから接続しているように見えることです。サーバーBを確認しましたが、openvpnインスタンスは1つだけで、他にはありません。それを殺すと、両方のソケットからの接続プローブが終了します。

サーバーAログの詳細:

 Wed Sep 4 09:56:12 2013 us = 544282 Peer Connection Initiated with [AF_INET] 1.2.3.4:1859
Wed Sep 4 09:57:06 2013 us = 661505 Peer Connection Initiated with [AF_INET] 1.2.3.4:1194

サーバーBの詳細:

 Wed Sep 4 10:28:16 2013 us = 98524 SIGUSR1 [soft、ping-restart]受信、プロセス再開
 Wed Sep 4 10:28:16 2013 us = 98562再開一時停止、2 second(s)
 Wed Sep 4 10:28:18 2013 us = 98688注:現在の--script-security設定により、この構成でユーザー定義スクリプトを呼び出すことができる場合があります
 Wed Sep 4 10 :28:18 2013 us = 98871事前共有静的キーの再利用
 Wed Sep 4 10:28:18 2013 us = 98905LZO圧縮が初期化されました
 Wed Sep 4 10:28:18 2013 us = 98981ソケットバッファ:R = [229376-> 131072] S = [229376-> 131072] 
 Wed Sep 4 10:28:18 2013 us = 99043以前のTUN/TAPインスタンスを保持:tun0 
 Wed Sep 4 10:28:18 2013 us = 99075 Data Channel MTU parms [L:1545 D:1450 EF:45 EB:135 ET:0 EL:0 AF:3/1] 
 Wed Sep 4 10:28:18 2013 us = 99144ローカルオプション文字列: 'V4、dev-type tun、link-mtu 1545、tun-mtu 1500、proto UDPv4、ifconfig 10.9.0.1 10.9.0.2、comp-lzo、cipher BF- CBC、auth SHA1、keysize 128、secret '
 Wed Sep 4 10:28:18 2013 us = 99167予想されるリモートオプションイオン文字列: 'V4、dev-type tun、link-mtu 1545、tun-mtu 1500、proto UDPv4、ifconfig 10.9.0.2 10.9.0.1、comp-lzo、cipher BF-CBC、auth SHA1、keysize 128、secret' 
 Wed Sep 4 10:28:18 2013 us = 99215ローカルオプションハッシュ(VER = V4): '184f07f3' 
 Wed Sep 4 10:28:18 2013 us = 99255予想されるリモートオプションハッシュ( VER = V4): 'de9a476a' 
 Wed Sep 4 10:28:18 2013 us = 99291 UDPv4 link local(bound):[undef] 
 Wed Sep 4 10:28:18 2013 us = 99321 UDPv4リンクリモート:[AF_INET] 4.3.2.1:1859
WrWrWRWed Sep 4 10:28:21 2013 us = 987011 [AF_INET] 4.3.2.1:1859
wrWrWedSepでピア接続が開始されました4 10:28:22 2013 us = 847036初期化シーケンスが完了しました
 WrWRwrWRwrWWed 9月4日10:28:242013 us = 931728注:経験的なMTUテストを開始します-結果は3〜4分で利用可能になります。
 WRwrWRRwrWRwrWrWWrWRwrWRWwrWRRwrWRWwrWRRwrWRwrWRWwrWRwrWRwrWRWwrWRRwrWRwrWRWwrWRwrWRwrWRWwrWRWWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWR WwrWRRwrWRwrWRWwrWRwrWRwrWRwrWrWWrWRRwrWR 
 wrWWRwrWRwrWRwrWrWrWRWwrWRWrWrWWrWWrWWWWWWWWWWWWWWWrWrWWWrWrWWed Sep 4 10:30:19 2013 us = 505037 Inactivity timeout(-ping-restart)ソケットを閉じる

サーバーBでは、ログに「1194」文字列はありませんが、サーバー間でパケットをtcpdumpしようとすると(1.2.3.4 =クライアント、4.3.2.1 =サーバー):

 root @ gw2:/ etc/openvpn#tcpdump -nieth0ホスト4.3.2.1 
 tcpdump:冗長出力が抑制されました。完全なプロトコルデコードには-vまたは-vvを使用してください
 eth0、リンクタイプEN10MB(イーサネット)、キャプチャサイズ65535バイト
 10:34:43.534596 IP 4.3.2.1.1859> 1.2.3.4.1859:UDP、長さ100 
 10:34: 43.535359 IP 1.2.3.4.1859> 4.3.2.1.1859:UDP、長さ100 
 10:34:44.468608 IP 4.3.2.1.1859> 1.2.3.4.1859:UDP、長さ100 
 10:34:44.481441 IP 1.2.3.4.1859> 4.3.2.1.1859:UDP、長さ100 
 10:34:45.476109 IP 4.3.2.1.1859> 1.2.3.4.1859:UDP、長さ100 
 10:34:45.476510 IP 1.2.3.4.1859> 4.3.2.1.1859:UDP、長さ60 
 10:34:45.477085 IP 1.2.3.4.1859> 4.3.2.1.1859:UDP 、長さ100 
こちら-> 10:34:45.496917 IP 1.2.3.4.1194> 4.3.2.1.1859:UDP、長さ60 
 10:34:45.537356 IP 4.3.2.1.1859 > 1.2.3.4.1859:UDP、長さ540 
 10:34:46.540260 IP 4.3.2.1.1859> 1.2.3.4.1859:UDP、長さ100 
 10:34:46.540955 IP 1.2 .3.4.1859> 4.3.2.1.1859:UDP、l ength 100 
 10:34:47.526090 IP 4.3.2.1.1859> 1.2.3.4.1859:UDP、長さ100 
 10:34:47.526793 IP 1.2.3.4.1859> 4.3.2.1。 1859:UDP、長さ100 

クライアントがFROMudp 1194(右側の1859ではなく)に再接続したい場合があり、他の接続(すでに1859にある)は開いたままになっているようです。したがって、サーバーAは1859接続にパケットを送信しています(そしてpingを実行できます)が、クライアントはルーティングを1194に変更します。これは初期化されておらず、機能していません(1194ソケットから接続しようとすると、サーバーAで「復号化エラー」が発生します) )。私が言ったように、クライアント(サーバーB)には、私が上位にダンプしたもの以外の構成もopenvpnのインスタンスもありません。

誰かが私に教えてもらえますか、私の構成で何が間違っている可能性がありますか?私は私の心の終わりにいます。

ありがとうございました。

J +

PS:英語が下手でごめんなさい。

1
johnyq

私の設定は説明とまったく同じではありませんが、症状は同じです。私の場合の問題は、2台の別々のコンピューターで同じ証明書を同時に使用しようとしたことでした。 2台のコンピューター間の接続を切り替えました。別の証明書を作成すると、両方のコンピューターがVPN上にしっかりと留まりました。

5
Schparky

サーバーの1つからkeepaliveオプションを削除してみてください。このオプションはこれに拡張されます

           if mode server:
             ping 10
             ping-restart 120
             Push "ping 10"
             Push "ping-restart 60"
           else
             ping 10
             ping-restart 60

serverモードのサーバーがないため、構成ではelseブランチが保持されます。したがって、両側にping-restartオプションが定義されているため、サーバーはピンポンゲームをプレイできます。

1
dsmsk80

同様の症状がありました。私の問題は、ローカルサブネットを192.168.1.xから10.0.0.xに変更することで解決しました。私が接続していたオフィスVPNにも後者のサブネットがあり、競合していました。

0
Crummy