Konfiguruję serwer OpenVPN (wersja 2.3.10) na serwerze z systemem Windows 2012, ale nie mogę go uruchomić.
Serwer znajduje się za routerem, a ja otworzyłem port 1194 i utworzyłem regułę przekierowującą ruch z tego portu do serwera.
Oto dziennik, który widzę na serwerze, gdy próbuję połączyć się z klientem:
Mon Mar 21 11:11:47 2016 XX.XX.XX.XX:57804 TLS: Initial packet from [AF_INET]XX.XX.XX.XX:57804, sid=fdf7a7ac 0264c7f3
Mon Mar 21 11:12:38 2016 XX.XX.XX.XX:55938 TLS: Initial packet from [AF_INET]XX.XX.XX.XX:55938, sid=1f242a3f e454a525
Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 TLS Error: TLS handshake failed
Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 SIGUSR1[soft,tls-error] received, client-instance restarting
Gdzie XX.XX.XX.XX to adres IP klienta. Rozumiem z tego, że przynajmniej klient może dotrzeć do serwera, więc nie ma problemów z routingiem ani zaporą ogniową.
Postępowałem zgodnie z opisem zamieszczonym tutaj. Przewodnik po systemie Windows Wszelkie pomysły?
XX.XX.XX.XX
reprezentują ten sam adres (proszę rozważyć nie zaciemnianie takich rzeczy ), jestem zainteresowany zmianą numerów portów źródłowych (57804, 55938). To sugeruje mi, że na drodze jest niewiarygodny NAT, co najczęściej ma miejsce w przypadku UDP. Czy używasz transportu UDP lub TCP, a jeśli to pierwsze, możesz wypróbować drugie i sprawdzić, czy problem zniknie?man openvpn
poszukać czegoś, co kontroluje protokół. Nie zapomnij zmienić go zarówno na kliencie, jak i serwerze, jeśli zdecydujesz się wykonać test.Odpowiedzi:
Co ciekawe, numer portu zmienia się w połowie strumienia:
To sprawia, że myślę, że gdzieś pomiędzy klientem a serwerem znajduje się źle działające urządzenie NAT, urządzenie z bardzo krótkimi wpisami tabeli stanów, które zmienia numer portu źródłowego, który stosuje do ustalonego strumienia klienta, powodując, że serwer myślę, że trwają dwie krótkotrwałe połączenia zamiast jednego ciągłego.
Takie urządzenia generalnie robią to tylko z UDP, więc radziłem ci potwierdzić, że używasz UDP, i zamiast tego wypróbuj TCP. Zrobiłeś to i odkryłeś, że to rozwiązuje problem. Następnym krokiem jest zidentyfikowanie źle działającego urządzenia NAT, uderzenie go młotkiem kijowym i zastąpienie go takim, który nie popełnia głównego błędu, zakładając, że cała komunikacja UDP jest efemeryczna; ale wskazałeś, że jesteś zadowolony z przejścia na TCP jako obejście, więc sprawa jest zakończona.
źródło
Jest to jeden z najczęstszych błędów podczas konfigurowania Openvpn i jest tam wpis FAQ. Zacytuję to tutaj:
Jest wysoce prawdopodobne, że którykolwiek z nich powoduje ten sam problem również w twoim przypadku. Więc po prostu przejrzyj listę jeden po drugim, aby ją rozwiązać.
Ref: Błąd TLS: Negocjacja klucza TLS nie nastąpiła w ciągu 60 sekund (sprawdź łączność sieciową)
źródło
Otrzymywałem limity czasu negocjacji kluczy TLS w ten sposób. Ale w moim przypadku zdałem sobie sprawę, że zdalny link to lokalny adres IP.
VPN w naszej zaporze ogniowej pfSense został omyłkowo umieszczony na interfejsie LAN zamiast interfejsu WAN, więc wyeksportowana konfiguracja została skonfigurowana tak, aby próbowała połączyć się z adresem IP zapory sieci LAN - co nigdy nie będzie działać z klientem, który naturalnie jest włączony inna sieć LAN.
Myślę, że główne wnioski z tego są:
Uzyskanie limitu czasu dla kluczowych negocjacji niekoniecznie oznacza, że udało Ci się nawet nawiązać połączenie.
Dlatego na tym etapie nadal warto sprawdzić, czy faktycznie łączysz się z właściwym miejscem, i nie ma reguł zapory blokujących połączenie itp. W szczególności, jeśli konfiguracja została wygenerowana automatycznie.
Pamiętaj, że wyświetlenie monitu o zalogowanie się nie oznacza, że masz połączenie , ponieważ OpenVPN prosi o podanie poświadczeń przed próbą nawiązania połączenia.
Upewnij się, że serwer VPN nasłuchuje na odpowiednim interfejsie.
(Oczywiście jest to jedna z wielu błędnych konfiguracji po stronie serwera, które mogą wystąpić, takich jak reguły zapory ogniowej, podanie niewłaściwego numeru portu, połączenie TCP i UDP itp.)
źródło
Miałem ten sam błąd i żadna rada nie pomogła, wszystko wydawało się w porządku: adresy IP, porty, zapora ogniowa, wszystko. Oszalałam na 2 godziny.
Rozwiązaniem była zmiana protokołu z UDP na TCP w konfiguracji klienta (najwyraźniej już dawno celowo wyłączyłem UDP).
Mam nadzieję, że to komuś pomoże :)
LE: to rozwiązało mój problem, ale nie jest to najlepsze podejście zgodnie z poniższymi komentarzami. Powinieneś użyć UDP zamiast TCP. Pomogło mi to, ponieważ miałem różne ustawienia między konfiguracjami klienta i serwera.
źródło
Pamiętaj, że możesz otrzymać błąd negocjacji klucza TLS, bez udanego połączenia z serwerem OpenVPN - lub nawet z pomyślnym nawiązaniem połączenia z czymkolwiek!
Zmodyfikowałem konfigurację VPN, aby połączyć się z hostem lokalnym na porcie, który niczego nie nasłuchuje:
Błąd może wprawić cię w fałszywe poczucie, że rozmawiasz z serwerem VPN.
Możesz nawet zostać poproszony o podanie poświadczeń w pierwszej kolejności, ale nic poza komputerem tak naprawdę o nie nie poprosiło.
źródło
Żadne z wyżej wymienionych rozwiązań nie zadziałało. W moim przypadku, mimo że dziennik klienta pokazywał ten sam błąd
TLS Error: TLS key negotiation failed to occur within 60 seconds
, dzienniki serwera pokazywałyVERIFY ERROR: depth=0, error=CRL has expired
.Na serwerze następujące kroki rozwiązały problem z połączeniem:
źródło
Wystąpił ten błąd w AWS, gdzie OpenVPN został zainstalowany na serwerze z publicznym adresem IP, ale w instancji, która była w prywatnej podsieci, tj. Podsieci, która nie miała trasy do bramy internetowej.
Po wdrożeniu OpenVPN na serwerze w publicznej podsieci wszystko działało dobrze :)
W publicznych / prywatnych podsieciach w AWS: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html
źródło
Natknąłem się również na
TLS key negotiation failed to occur within 60 seconds
problem.Zgodnie z oficjalną sugestią, jak pisze post Diamant, w połączeniu sieciowym musi być coś nie tak. Jednak ani zapora sieciowa, ani NAT nie powodują problemu.
W moim przypadku najpierw sprawdziłem połączenie przez
nc -uvz xxx.xxx.xxx.xxx 1194
. Link jest OK.Poza tym kilka innych klientów VPN w tej samej sieci LAN działa dobrze.
Gdzieś zauważyłem, że połączenie udp ma pewne problemy z odpowiedzią lub przekierowaniem portów.
Zatrzymuję więc działających klientów VPN od największego adresu IP do wiszącego klienta, np. Z „10.8.0.100” do „10.8.0.50”.
Następnie uruchom zatrzymane klienty VPN w odwrotnej kolejności.
Huk! Wszyscy klienci VPN działają proporcjonalnie.
Podsumowując, istnieje ryzyko,
TLS key negotiation failed to occur within 60 seconds
że wielu klientów VPN w sieci LAN uruchomi się w niewłaściwej kolejności.źródło
Jednym z możliwych powodów jest to, że jeśli serwer wymaga nowszej wersji TLS, niż TLS obsługiwany przez klienta. tj. 1,2 vs 1,0.
Oczywistą rzeczą, którą należy wypróbować, jest aktualizacja klienta OpenVPN lub zmodyfikowanie strony serwera, aby zaakceptować TLS 1.0.
źródło