Sự cố OpenVPN - Đàm phán khóa TLS không xảy ra trong vòng 60 giây


13

Tôi đang định cấu hình máy chủ OpenVPN (phiên bản 2.3.10) trên máy chủ Windows 2012 nhưng tôi không thể làm cho nó hoạt động.

Máy chủ ở phía sau bộ định tuyến và tôi đã mở cổng 1194 và tạo quy tắc để chuyển tiếp lưu lượng trên cổng này đến máy chủ.

Đây là nhật ký tôi thấy trên máy chủ khi tôi cố gắng kết nối từ máy khách:

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

Trong đó XX.XX.XX.XX là ip của máy khách. Vì vậy, tôi hiểu rằng khách hàng ít nhất có thể đến máy chủ, do đó không có vấn đề về định tuyến hoặc tường lửa.

Tôi đã làm theo mô tả được cung cấp ở đây Hướng dẫn Windows dễ dàng Bất kỳ ý tưởng nào?


1
Giả sử hai lô XX.XX.XX.XXđại diện cho cùng một địa chỉ (vui lòng xem xét không làm xáo trộn những thứ đó ), tôi quan tâm đến sự thay đổi số cổng nguồn (57804, 55938). Điều đó cho tôi thấy rằng có một NAT không đáng tin theo cách này, thường là trường hợp của UDP. Bạn có đang sử dụng truyền tải UDP hoặc TCP không, và nếu trước đây, bạn có thể thử cái sau và xem vấn đề có biến mất không?
MadHatter

cho tôi thấy thông báo này trên bảng điều khiển máy chủ Tôi cam kết rằng ít nhất máy khách có thể đến đó, vì vậy tôi cho rằng NAT không phải là vấn đề. Tôi có sai ở đây không?
vmasana

1
Không phải tất cả NAT được tạo ra như nhau. Một số có các mục trong bảng trạng thái tồn tại rất ngắn, đặc biệt đối với UDP và OpenVPN sẽ không thực hiện tốt các thay đổi trong cổng nguồn. Vui lòng trả lời câu hỏi tôi đã hỏi và nếu thích hợp, hãy thử thay đổi mà tôi đề xuất.
MadHatter

Tôi không có kinh nghiệm ở đây, vì vậy bạn có thể cho tôi biết cách kiểm tra xem tôi đang sử dụng UDP hay TCP không?
vmasana

Chà, bạn có thể thử man openvpnvà tìm kiếm thứ gì đó kiểm soát giao thức. Đừng quên thay đổi nó trên cả máy khách và máy chủ, nếu bạn quyết định thực hiện thử nghiệm.
MadHatter

Câu trả lời:


19

Điều thú vị là cách số cổng thay đổi giữa dòng:

Mon Mar 21 11:11:47 2016 XX.XX.XX.XX: 57804 TLS: Gói ban đầu từ [AF_INET] XX.XX.XX.XX: 57804, sid = fdf7a7ac 0264c7f3

Mon Mar 21 11:12:38 2016 XX.XX.XX.XX: 55938 TLS: Gói ban đầu từ [AF_INET] XX.XX.XX.XX: 55938, sid = 1f242a3f e454a525

Điều này khiến tôi nghĩ rằng, ở đâu đó giữa máy khách và máy chủ, có một thiết bị NAT hoạt động sai, một thiết bị có các mục trong bảng trạng thái rất ngắn, đang thay đổi số cổng nguồn áp dụng cho luồng được thiết lập của máy khách, khiến máy chủ bị nghĩ rằng hai liên lạc ngắn hạn đang được tiến hành, thay vì một liên tục.

Các thiết bị như vậy thường chỉ làm điều này với UDP, vì vậy tôi đã khuyên bạn nên xác nhận rằng bạn đang sử dụng UDP và thay vào đó hãy thử TCP. Điều này bạn đã làm, và thấy rằng nó khắc phục vấn đề. Bước tiếp theo là xác định thiết bị NAT hoạt động sai, đánh nó bằng búa câu lạc bộ và thay thế nó bằng một thiết bị không mắc lỗi chính yếu khi cho rằng tất cả các giao tiếp UDP là phù du; nhưng bạn đã chỉ ra rằng bạn hài lòng với việc thay đổi thành TCP như một cách giải quyết, và vì vậy vấn đề đã được kết luận.


2
+1 cho mắt đại bàng của bạn!
Diamant

@bangal tại sao, cảm ơn bạn! Phần lớn ma quỷ là trong các chi tiết, trong kinh doanh này.
MadHatter

Vâng, tôi biết, nhưng tôi đã bỏ lỡ nó và chỉ nhìn thấy nó sau khi bạn chỉ. Đã chắc chắn đó là một vấn đề tường lửa.
Diamant

Vâng, đó là, vì vậy bạn đã đúng. Và đừng tự đánh mình, lần sau bạn sẽ chăm chỉ hơn!
MadHatter

Có bất kỳ lợi ích nào khi sử dụng UDP thay vì TCP không? TCP hiện đang làm việc cho tôi trừ khi có bất kỳ nhược điểm nào tôi đồng ý với nó.
vmasana

3

Đây là một trong những lỗi phổ biến nhất khi thiết lập Openvpn và có mục FAQ cho việc này. Tôi sẽ trích dẫn điều này ở đây:

Lỗi TLS: Đàm phán khóa TLS không xảy ra trong vòng 60 giây (kiểm tra kết nối mạng của bạn)

Một trong những vấn đề phổ biến nhất khi thiết lập OpenVPN là hai trình nền OpenVPN ở hai bên của kết nối không thể thiết lập kết nối TCP hoặc UDP với nhau.

Đây gần như là kết quả của:

  • Một tường lửa chu vi trên mạng của máy chủ đang lọc các gói OpenVPN đang đến (theo mặc định OpenVPN sử dụng số cổng UDP hoặc TCP 1194).
  • Một tường lửa phần mềm chạy trên chính máy chủ OpenVPN đang lọc các kết nối đến trên cổng 1194. Xin lưu ý rằng nhiều hệ điều hành sẽ chặn các kết nối đến theo mặc định, trừ khi được cấu hình khác.
  • Cổng NAT trên mạng của máy chủ không có quy tắc chuyển tiếp cổng cho TCP / UDP 1194 đến địa chỉ nội bộ của máy chủ OpenVPN.
  • Cấu hình máy khách OpenVPN không có địa chỉ máy chủ chính xác trong tệp cấu hình của nó. Lệnh từ xa trong tệp cấu hình máy khách phải trỏ đến chính máy chủ hoặc địa chỉ IP công cộng của cổng mạng máy chủ.
  • Một nguyên nhân khác có thể là tường lửa windows đang chặn truy cập cho tệp nhị phân openvpn.exe. Bạn có thể cần phải đưa danh sách trắng (thêm nó vào danh sách "Ngoại lệ") để OpenVPN hoạt động.

Rất có khả năng rằng bất kỳ điều nào trong số này cũng gây ra vấn đề tương tự trong trường hợp của bạn. Vì vậy, chỉ cần đi qua danh sách từng cái một để giải quyết nó.

Tham chiếu: Lỗi TLS: Đàm phán khóa TLS không xảy ra trong vòng 60 giây (kiểm tra kết nối mạng của bạn)


Tôi đã đi qua những điểm này nhưng không chắc là tôi có thiếu thứ gì không: 1. cho đến khi tường lửa tắt ở cả máy khách và máy chủ, 2. giống nhau, 3. bộ định tuyến có quy tắc chuyển tiếp đến máy chủ và tôi thấy lưu lượng truy cập xuất hiện trên bảng điều khiển máy chủ, 4.client có địa chỉ IP chính xác, 5. không có tường lửa nào tôi có thể nói.
vmasana

Chà, thật lòng tôi không thể nghĩ gì khác vào lúc này. Để chắc chắn, cấu hình mạng trong máy chủ windows như thế nào? Liệu nó có nhiều cổng tình cờ? Là cổng mặc định được trỏ đến bộ định tuyến? Nếu có, thì phần còn lại bạn có thể kiểm tra là, như MadHatter đã đề xuất, để kiểm tra với tcp.
Diamant

Nếu bất cứ ai cảm thấy muốn cho mượn một bàn tay, tôi đã đăng (nhưng một câu hỏi khác) về câu hỏi thất bại bắt tay TLS tại đây: serverfault.com/questions/867599/
mẹo

Một điều khác cần chú ý là độ trễ cao giữa hai máy chủ . Tôi chỉ đang gãi đầu về điều này một cách rộng rãi, và vì một số lý do đáng tin cậy, tôi đã nhận được 6000ms + các chuyến đi khứ hồi ping theo một hướng (máy khách đến máy chủ), nhưng không phải là cách khác. Điều này đã gây ra cuộc đàm phán quan trọng mất hơn 60 giây. Khởi động lại bộ định tuyến được cung cấp bởi ISP của tôi đã giải quyết vấn đề. Có lẽ là một trường hợp cạnh hiếm, nhưng hy vọng rằng sẽ giúp được ai đó.
s.co.tt

3

Tôi đã nhận được thời gian đàm phán quan trọng của TLS như thế này. Nhưng trong trường hợp của tôi, tôi nhận ra rằng liên kết từ xa là một địa chỉ IP cục bộ.

VPN trên tường lửa pfSense của chúng tôi đã bị đặt nhầm vào giao diện LAN thay vì giao diện WAN, và do đó, cấu hình đã xuất được đặt để thử và kết nối với địa chỉ IP LAN của tường lửa - không bao giờ hoạt động với máy khách tự nhiên được bật một mạng LAN khác nhau.

Tôi nghĩ rằng những điểm chính của việc này là:

  • Có được thời gian chờ đàm phán quan trọng không nhất thiết có nghĩa là bạn thậm chí đã quản lý để kết nối với bất cứ điều gì.

    Vì vậy, ở giai đoạn này, vẫn có thể đáng để kiểm tra xem bạn thực sự đang kết nối đến đúng nơi và không có quy tắc tường lửa nào chặn kết nối, v.v. Đặc biệt nếu cấu hình của bạn đã được tạo tự động.

    Lưu ý rằng nhận được lời nhắc đăng nhập không có nghĩa là bạn đã kết nối , vì OpenVPN yêu cầu thông tin đăng nhập của bạn trước khi thử kết nối.

  • Đảm bảo rằng máy chủ VPN của bạn đang lắng nghe trên giao diện phù hợp.

    (Tất nhiên, đây là một trong số các cấu hình sai phía máy chủ có thể xảy ra, chẳng hạn như quy tắc tường lửa, đặt sai số cổng, trộn lẫn TCP và UDP, v.v.)


1

Tôi đã có cùng một lỗi và không có lời khuyên nào giúp được, mọi thứ dường như đều ổn: IP, cổng, tường lửa, mọi thứ. Đã mất trong 2 giờ.

Giải pháp là thay đổi giao thức từ UDP sang TCP trong cấu hình máy khách (rõ ràng tôi đã vô hiệu hóa UDP trên mục đích cách đây rất lâu).

Hy vọng điều này sẽ giúp được ai đó :)

LE: điều này đã giải quyết vấn đề của tôi nhưng nó không phải là cách tiếp cận tốt nhất theo nhận xét dưới đây. Bạn nên sử dụng UDP thay vì TCP. Nó giúp tôi vì tôi có các cài đặt khác nhau giữa cấu hình máy khách và máy chủ.


Bạn nên biết rằng việc đóng gói TCP bên trong TCP rất có thể gây ra các vấn đề hiệu năng rất tệ, do cả hai ngăn xếp TCP đang cố gắng cạnh tranh với nhau.
EEAA

Thật vậy, nó hoạt động như tào lao. Mặc dù tôi không hiểu những gì bạn nói, nhưng hiệu suất rất kém. Tôi có nên chuyển sang UDP không?
bosch

2
Đúng. UDP là tiêu chuẩn để triển khai VPN, vì lý do chính đáng. TCP có chức năng sửa lỗi - khả năng truyền lại các gói bị mất, v.v. Nếu bạn đóng gói TCP bên trong TCP và bạn phải chịu mất gói, cả hai ngăn xếp TCP (lưu lượng "bên trong" cũng như lưu lượng OpenVPN được mã hóa) sẽ thử và sửa cho các gói bị mất. Khi bạn đóng gói TCP trong UDP, đây không phải là vấn đề - chỉ có lưu lượng bên trong sẽ thử lại.
EEAA

Cảm ơn cho gợi ý và cho lời giải thích. Tôi chuyển sang UDP và theo dõi các kết nối. Ngoài ra, tôi cần đọc thêm một số thông tin về các ngăn xếp ...
bosch

Một trang hữu ích giải thích lý do tại sao TCP qua TCP là một ý tưởng tồi: sites.inka.de/bigred/devel/tcp-tcp.html
mwfearnley

1

Không có giải pháp nào được đề cập trước đó hoạt động. Trong trường hợp của tôi, mặc dù nhật ký máy khách có lỗi tương tự TLS Error: TLS key negotiation failed to occur within 60 seconds, nhưng nhật ký máy chủ đã hiển thị VERIFY ERROR: depth=0, error=CRL has expired.

Trên máy chủ, các bước sau đã giải quyết vấn đề kết nối:

# cd <easyrsa folder>
# ./easyrsa gen-crl
above command generates new crl.pem file (in my case in pki folder)
using chown/chmod make sure 'pki/crl.pem' is readable by openvpn server (for example: chmod 640 pki/crl.pem)
# systemctl restart openvpn

0

Lưu ý rằng bạn có thể gặp lỗi thương lượng khóa TLS, mà không kết nối thành công với máy chủ OpenVPN - hoặc thậm chí kết nối thành công với bất kỳ điều gì cả!

Tôi đã sửa đổi cấu hình VPN để kết nối với localhost, trên một cổng không nghe thấy gì:

OpenVPN 2.4.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] được xây dựng vào ngày 26 tháng 4 năm 2018
Phiên bản Windows 6.2 (Windows 8 trở lên) 64 bit
phiên bản thư viện: OpenSSL 1.1.0h ngày 27 tháng 3 năm 2018, LZO 2.10
TCP / UDP: Bảo tồn địa chỉ từ xa được sử dụng gần đây: [AF_INET] 127.0.0.1:12345
Liên kết UDP cục bộ (bị ràng buộc): [AF_INET] [undef]: 0
Từ xa liên kết UDP: [AF_INET] 127.0.0.1:12345 
Lỗi TLS: Đàm phán khóa TLS không xảy ra trong vòng 60 giây (kiểm tra kết nối mạng của bạn)
Lỗi TLS: Bắt tay TLS không thành công
SIGUSR1 [soft, tls-error] đã nhận được, quá trình khởi động lại
...

Lỗi có thể khiến bạn hiểu lầm rằng bạn đang nói chuyện với máy chủ VPN.

Bạn thậm chí có thể được nhắc về thông tin đăng nhập trước, nhưng không có gì bên ngoài máy tính của bạn thực sự yêu cầu chúng.


0

Tôi đã gặp phải lỗi này trong AWS, trong đó OpenVPN đã được cài đặt trên máy chủ có IP công cộng, nhưng trong một trường hợp ở mạng con riêng, tức là mạng con không có đường truyền đến cổng internet.

Khi tôi đã triển khai OpenVPN trên một máy chủ trong mạng con công cộng, tất cả đều hoạt động tốt :)


Trên các mạng con công cộng / riêng tư trong AWS: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html


0

Tôi cũng đã gặp TLS key negotiation failed to occur within 60 secondsvấn đề.

Từ đề xuất chính thức, như bài Diamant, phải có một cái gì đó sai trong kết nối mạng. Tuy nhiên, cả tường lửa và NAT đều không gây ra sự cố.

Trong trường hợp của tôi, lần đầu tiên tôi đã kiểm tra kết nối bằng cách nc -uvz xxx.xxx.xxx.xxx 1194. Liên kết là OK.

Ngoài ra, một số khách hàng vpn khác trong cùng mạng LAN hoạt động tốt.

Từ một nơi nào đó tôi nhận thấy rằng kết nối udp có một số vấn đề trong phản ứng hoặc chuyển tiếp cổng.

Vì vậy, tôi dừng các máy khách vpn đang chạy từ ip lớn nhất đến máy khách treo, ví dụ: từ "10.8.0.100" đến "10.8.0.50".

Sau đó bắt đầu các khách hàng vpn dừng lại ở đảo ngược.

Bang! Tất cả các khách hàng vpn làm việc propo cũ.

Tóm lại, có một cơ hội dẫn đến TLS key negotiation failed to occur within 60 secondsvấn đề là nhiều máy khách vpn trong mạng LAN bắt đầu theo một chuỗi sai.


Không rõ điều này liên quan đến vấn đề trong câu hỏi ban đầu như thế nào.
Phường - Phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.