web-dev-qa-db-ja.com

Linuxサーバー/ WindowsクライアントでOpenVPN TLS HandShakeが失敗する

最近、Ubuntu 16.04オペレーティングシステムを搭載したOdroid C2を購入しました。 OpenVPNをインストールして、どこからでもホームネットワークにアクセスできるようにしました。 Samba共有フォルダーがあります...

私はこのチュートリアルに従いました: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04

OpenVPN GUI for Windowsを使用してWindows 10クライアントをサーバーに接続しようとすると、TLSの問題が発生します。

TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed

OpenVPN GUIログ:

Fri Jun 10 22:56:35 2016 OpenVPN 2.3.11 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on May 10 2016
Fri Jun 10 22:56:35 2016 Windows version 6.2 (Windows 8 or greater) 64bit
Fri Jun 10 22:56:35 2016 library versions: OpenSSL 1.0.1t  3 May 2016, LZO 2.09
Fri Jun 10 22:56:35 2016 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Fri Jun 10 22:56:35 2016 Need hold release from management interface, waiting...
Fri Jun 10 22:56:36 2016 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
Fri Jun 10 22:56:36 2016 MANAGEMENT: CMD 'state on'
Fri Jun 10 22:56:36 2016 MANAGEMENT: CMD 'log all on'
Fri Jun 10 22:56:36 2016 MANAGEMENT: CMD 'hold off'
Fri Jun 10 22:56:36 2016 MANAGEMENT: CMD 'hold release'
Fri Jun 10 22:56:36 2016 Control Channel Authentication: tls-auth using INLINE static key file
Fri Jun 10 22:56:36 2016 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Jun 10 22:56:36 2016 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Jun 10 22:56:36 2016 Socket Buffers: R=[65536->65536] S=[65536->65536]
Fri Jun 10 22:56:36 2016 UDPv4 link local: [undef]
Fri Jun 10 22:56:36 2016 UDPv4 link remote: [AF_INET](My address IP):1194
Fri Jun 10 22:56:36 2016 MANAGEMENT: >STATE:1465613796,WAIT,,,
Fri Jun 10 22:57:36 2016 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Fri Jun 10 22:57:36 2016 TLS Error: TLS handshake failed
Fri Jun 10 22:57:36 2016 SIGUSR1[soft,tls-error] received, process restarting
Fri Jun 10 22:57:36 2016 MANAGEMENT: >STATE:1465613856,RECONNECTING,tls-error,,
Fri Jun 10 22:57:36 2016 Restart pause, 2 second(s)
Fri Jun 10 22:57:38 2016 Socket Buffers: R=[65536->65536] S=[65536->65536]
Fri Jun 10 22:57:38 2016 UDPv4 link local: [undef]
Fri Jun 10 22:57:38 2016 UDPv4 link remote: [AF_INET] (My address IP):1194
Fri Jun 10 22:57:38 2016 MANAGEMENT: >STATE:1465613858,WAIT,,,

コメント内のテキストなしのクライアント構成(.ovpnファイル):

client
dev tun
proto udp
remote (My address IP) 1194
resolv-retry infinite
nobind
persist-tun
remote-cert-tls server
comp-lzo
verb 3
key-direction 1

(The ca.crt, the client.crt and the client.key files are include in the ovpn file)

コメント内のテキストなしのサーバー構成(server.conf):

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
Push "redirect-gateway def1 bypass-dhcp"
Push "dhcp-option DNS 208.67.222.222"
Push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0
key-direction 0
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

私のルーターでは、Odroid IPアドレスを使用して1194ポートのポート転送を設定します。 写真を参照

TCP protoも試しますが、5秒ごとに接続を再試行します。

助けてください! :)

1
Julien D.

正しいパブリックIPアドレスに接続していることが確実な場合、Ubuntuファイアウォールが接続をブロックしている可能性があります。 OpenVPNは次のルールで動作します:

iptables -A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT

そしてもちろん、ルールを保存する必要があります。 Iptables-persistentは、このための素晴らしいツールです。

Sudo apt-get install iptables-persistent

インストール後、いつでもiptablesルールを保存/再ロードできます。

Sudo /etc/init.d/iptables-persistent save 
Sudo /etc/init.d/iptables-persistent reload

さらにトラブルシューティングを行うには、サーバー側からのトラフィックを監視して、ポート1194に何かが到達しているかどうかを確認できます。

Sudo apt-get-install ngrep
ngrep port 1194

幸運を

1
Taavi