Fix 'TLS-Fehler: TLS-Handshake fehlgeschlagen' auf dem OpenVPN-Client

16

Ich konfiguriere OpenVPN 2.3.6-1 auf meinem Arch Linux-Server, um den SMB-Verkehr über das öffentliche Internet zu verschlüsseln. Wenn ich das Setup testen auf einer meiner virtuellen Linux - Maschine - Clients, erhalte ich die Fehlermeldung: TLS Error: TLS handshake failed.

Ich habe schnell gelesen ( OpenVPN unter OpenVZ TLS-Fehler: TLS-Handshake fehlgeschlagen (von Google vorgeschlagene Lösungen helfen nicht) ) und versucht, vom Standard-UDP auf TCP zu wechseln, aber dies hat nur dazu geführt, dass der Client wiederholt meldet, dass das Zeitlimit für die Verbindung überschritten wurde. Ich habe auch versucht, die Verschlüsselung und die TLS-Authentifizierung zu deaktivieren, aber dadurch ist der Server ausgefallen Assertion failed at crypto_openssl.c:523. In beiden Fällen wurden die erforderlichen Änderungen sowohl an der Client- als auch an der Serverkonfiguration vorgenommen.

Ich habe die Anweisungen unter ( https://wiki.archlinux.org/index.php/OpenVPN ) zum Einrichten von OpenVPN und die Anweisungen unter ( https://wiki.archlinux.org/index.php/Create_a_Public_Key_Infrastructure_Using_the_easy-rsa_Scripts) befolgt ), um die Schlüssel und Zertifikate zu erstellen. Die einzigen Abweichungen, die ich von diesen Anweisungen gemacht habe, waren die Angabe der Namen meiner eigenen Computer und der entsprechenden Schlüssel- / Zertifikatsdateinamen.

Siehe auch meine ursprüngliche Frage zur Sicherung des SMB-Verkehrs über das Internet: ( Einfache Verschlüsselung für Samba-Freigaben )

Kann jemand erklären, wie ich dieses Problem lösen kann?

Einzelheiten:

Server: Arch Linux (auf dem neuesten Stand), das über ein Ethernet-Kabel direkt mit dem Gateway verbunden ist. Keine Iptables.

Client: Arch Linux (aktuelle) virtuelle Maschine auf VirtualBox 4.3.28r100309 Windows 8.1-Host, überbrückter Netzwerkadapter. Keine Iptables. Windows Firewall deaktiviert.

Gateway: Portweiterleitung für Port 1194 aktiviert, keine Firewall-Einschränkungen.

Hier sind die Konfigurationsdateien auf dem Server bzw. Client. Ich habe diese gemäß den Anweisungen im Arch Wiki erstellt.

/etc/openvpn/server.conf (Nur Nichtkommentarzeilen):

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server-name.crt
key /etc/openvpn/server-name.key
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

/etc/openvpn/client.conf (Nur Nichtkommentarzeilen):

client
dev tun
proto udp
remote [my public IP here] 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client-name.crt
key /etc/openvpn/client-name.key
remote-cert-tls server
tls-auth /etc/openvpn/ta.key 1
comp-lzo
verb 3

Hier sind die Ausgaben von openvpn auf den Rechnern mit den obigen Konfigurationen. Ich habe zuerst den Server und dann den Client gestartet.

Die Ausgabe von openvpn /etc/openvpn/server.confauf dem Server:

Thu Jul 30 17:02:53 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Dec  2 2014
Thu Jul 30 17:02:53 2015 library versions: OpenSSL 1.0.2d 9 Jul 2015, LZO 2.09
Thu Jul 30 17:02:53 2015 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x.  Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
Thu Jul 30 17:02:53 2015 Diffie-Hellman initialized with 2048 bit key
Thu Jul 30 17:02:53 2015 Control Channel Authentication: using '/etc/openvpn/ta.key' as a OpenVPN static key file
Thu Jul 30 17:02:53 2015 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Jul 30 17:02:53 2015 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Jul 30 17:02:53 2015 Socket Buffers: R=[212992->131072] S=[212992->131072]
Thu Jul 30 17:02:53 2015 ROUTE_GATEWAY 192.168.0.1/255.255.255.0 IFACE=enp5s0 HWADDR=##:##:##:##:##:##
Thu Jul 30 17:02:53 2015 TUN/TAP device tun0 opened
Thu Jul 30 17:02:53 2015 TUN/TAP TX queue length set to 100
Thu Jul 30 17:02:53 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Thu Jul 30 17:02:53 2015 /usr/bin/ip link set dev tun0 up mtu 1500
Thu Jul 30 17:02:53 2015 /usr/bin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
Thu Jul 30 17:02:53 2015 /usr/bin/ip route add 10.8.0.0/24 via 10.8.0.2
Thu Jul 30 17:02:53 2015 GID set to nobody
Thu Jul 30 17:02:53 2015 UID set to nobody
Thu Jul 30 17:02:53 2015 UDPv4 link local (bound): [undef]
Thu Jul 30 17:02:53 2015 UDPv4 link remote: [undef]
Thu Jul 30 17:02:53 2015 MULTI: multi_init called, r=256 v=256
Thu Jul 30 17:02:53 2015 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Thu Jul 30 17:02:53 2015 IFCONFIG POOL LIST
Thu Jul 30 17:02:53 2015 Initialization Sequence Completed

Die Ausgabe von openvpn /etc/openvpn/client.confauf dem Client:

Thu Jul 30 21:03:02 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Dec  2 2014
Thu Jul 30 21:03:02 2015 library versions: OpenSSL 1.0.2d 9 Jul 2015, LZO 2.09
Thu Jul 30 21:03:02 2015 WARNING: file '/etc/openvpn/client-name.key' is group or others accessible
Thu Jul 30 21:03:02 2015 WARNING: file '/etc/openvpn/ta.key' is group or others accessible
Thu Jul 30 21:03:02 2015 Control Channel Authentication: using '/etc/openvpn/ta.key' as a OpenVPN static key file
Thu Jul 30 21:03:02 2015 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Jul 30 21:03:02 2015 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Jul 30 21:03:02 2015 Socket Buffers: R=[212992->131072] S=[212992->131072]
Thu Jul 30 21:03:02 2015 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
Thu Jul 30 21:03:02 2015 UDPv4 link local: [undef]
Thu Jul 30 21:03:02 2015 UDPv4 link remote: [AF_INET][my public IP here]:1194
Thu Jul 30 21:04:02 2015 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Thu Jul 30 21:04:02 2015 TLS Error: TLS handshake failed
Thu Jul 30 21:04:02 2015 SIGUSR1[soft,tls-error] received, process restarting
Thu Jul 30 21:04:02 2015 Restart pause, 2 second(s)
Kyle
quelle
1
Ihr Client erhält überhaupt keine Antwort vom Server. Entweder haben Sie eine Firewall, die Sie vergessen haben, oder Ihre Portweiterleitung funktioniert nicht.
Michael Hampton
2
Führen Sie eine Paketsuche durch, z. B .: tcpdump -ni eth0 udp and port 1194 auf dem Server, und stellen Sie sicher, dass Pakete ankommen. Wenn dies der Fall ist, liegt möglicherweise ein Problem mit dem Löschen von Paketen durch die Firewall vor. Wenn dies nicht der Fall ist, liegt höchstwahrscheinlich ein Problem mit der Portweiterleitung auf dem Router vor. Sie können dies auch auf dem Router tun. Probieren Sie es aus und versuchen Sie, einen höheren Port zu verwenden. Dies ist nicht üblich, aber Ihr ISP hat möglicherweise etwas durcheinander gebracht, wie z. B. Port 11194 / UDP oder 53 / UDP.
Michal Sokolowski
Ja, es war die Weiterleitung. Normalerweise arbeite ich nicht mit UDP, daher habe ich beim Erstellen der Regel vergessen, das Protokoll zu ändern. Ich werde das als Antwort posten.
Kyle
3
Gibt es eine Möglichkeit, um sicherzustellen, dass die Pakete ordnungsgemäß bei openvpn ankommen, wenn sie auf dem Server in tcpdump angezeigt werden?
Joost

Antworten:

9

Ich hatte auch dieses Problem.

Ich verwende den Digitalocean-Anbieter für meinen Server und das Problem lag bei der Floating-IP-Funktion.

Um dies zu beheben, müssen Sie die OpenVPN-Konfigurationseinstellungen aktualisieren:

local <ip anchor>

ip anchor sollte eine IP-Adresse sein, die aus dem ip addrBefehl stammt, siehe Beispiel: Bildbeschreibung hier eingeben

Credits zu diesem Beitrag

FelikZ
quelle
Ich hatte dieses Problem auch mit einem Pfsense-Gerät. Das Hinzufügen des local <ip address of VPN server>Eintrags in der Serverkonfiguration hat das Problem behoben. Beachten Sie, dass für TCP dieser Eintrag nicht benötigt wurde, sondern nur UDP, um den Fehler zu melden.
Vincenzo Pii
5

Wie von Michael Hampton und Michal Sokolowski in den Kommentaren zu meiner Frage vorgeschlagen, war es ein Problem mit der Portweiterleitungsregel, die ich auf meinem Gateway erstellt habe. OpenVPN ist für die Verwendung von UDP konfiguriert, und ich habe vergessen, auf dem Gateway von TCP zu UDP zu wechseln, da ich dieses Protokoll normalerweise nicht verwende. Die Weiterleitungsregel verwendet jetzt UDP und mein VPN ist funktionsfähig.

Kyle
quelle
0

Erscheint nach dem Update des Betriebssystemkerns. Oder die eingehenden Pakete werden in tcpdump auf dem Server angezeigt, funktionieren aber immer noch nicht. Versuchen Sie eine einfache Firewall zu deaktivieren / aktivieren. Vielleicht hilft jemand.

sudo ufw disable
sudo ufw enable
Djanym
quelle
0

Meine aktuelle Konfiguration würde in einigen Ländern funktionieren, in anderen jedoch nicht. Ich vermute, dass mein aktueller Anbieter das TLS-Handshake-Paket blockiert. Lösung? Da ich der einzige bin, der dieses VPN verwendet, habe ich auf die statische Schlüsselauthentifizierung umgestellt, die sich in meinem Fall als superschnell erwiesen hat: https://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static -key-mini-howto.html

Ramast
quelle
0

Dieses Problem trat aufgrund eines falsch konfigurierten Standardgateways auf der Serverseite auf. Der OpenVPN-Server hat den Verbindungsversuch vom Client erhalten, aber die Antwort ging verloren, weil er nie den richtigen Router erreicht hat.

Lanoxx
quelle
Erinnerst du dich, wo du das ändern musstest? War das in etc/openvpn/server.conf?
Arthur Attout
Ich denke, etwas stimmte mit den Routing-Tabellen auf der Serverseite nicht. Überprüfen Sie mit ip route.
Lanoxx
0

Ich hatte gerade dieses Problem. Als ich meine .ovpn-Datei überprüfte, stellte ich fest, dass die .ddns.net in eine IP-Adresse geändert wurde, weshalb keine Verbindung hergestellt werden konnte. Ich habe die IP wieder auf die .ddns.net-Adresse geändert und die Verbindung hergestellt.

Kyn
quelle