แก้ไข 'ข้อผิดพลาด TLS: การจับมือ TLS ล้มเหลว' ในไคลเอนต์ OpenVPN


16

ฉันกำลังกำหนดค่า OpenVPN 2.3.6-1 บนเซิร์ฟเวอร์ Arch Linux ของฉันเพื่อเข้ารหัสการรับส่งข้อมูล SMB ผ่านอินเทอร์เน็ตสาธารณะ TLS Error: TLS handshake failedเมื่อผมทดสอบการติดตั้งที่หนึ่งของลินุกซ์ลูกค้าเครื่องเสมือนของฉันฉันได้รับข้อผิดพลาด:

ฉันอ่านอย่างรวดเร็ว ( OpenVPN บน OpenVZ ข้อผิดพลาด TLS: การจับมือ TLS ล้มเหลว (Google ไม่แนะนำวิธีแก้ไขปัญหา) ) และพยายามเปลี่ยนจาก UDP เริ่มต้นเป็น TCP แต่นั่นทำให้ไคลเอ็นต์รายงานซ้ำ ๆ ว่าการเชื่อมต่อหมดเวลา ฉันยังพยายามปิดใช้งานการเข้ารหัสและการตรวจสอบความถูกต้อง TLS ด้วย แต่นั่นทำให้เซิร์ฟเวอร์ไม่Assertion failed at crypto_openssl.c:523ทำงาน ในทั้งสองอินสแตนซ์การเปลี่ยนแปลงที่จำเป็นต้องทำกับการกำหนดค่าไคลเอนต์และเซิร์ฟเวอร์

ฉันทำตามคำแนะนำที่ ( https://wiki.archlinux.org/index.php/OpenVPN ) เพื่อตั้งค่า OpenVPN และคำแนะนำที่ ( https://wiki.archlinux.org/index.php/Create_a_Public_Key_Infrastructure_Using_the_easy-rsa_Scripts ) เพื่อสร้างคีย์และใบรับรอง ความเบี่ยงเบนเพียงอย่างเดียวที่ฉันทำจากคำแนะนำเหล่านี้ได้ระบุชื่อคอมพิวเตอร์ของฉันและชื่อไฟล์คีย์ / ใบรับรองที่เกี่ยวข้อง

ดูคำถามเดิมของฉันเกี่ยวกับการรักษาความปลอดภัยการรับส่งข้อมูล SMB ผ่านอินเทอร์เน็ต: ( การเข้ารหัสอย่างง่ายสำหรับการแบ่งปันของ Samba )

ใครช่วยอธิบายได้ว่าฉันจะแก้ปัญหานี้ได้อย่างไร

รายละเอียด:

เซิร์ฟเวอร์: Arch Linux (ทันสมัย) เชื่อมต่อโดยตรงกับเกตเวย์ผ่านสายเคเบิลอีเธอร์เน็ต ไม่มี iptables

ไคลเอ็นต์: เครื่องเสมือน Arch Linux (ล่าสุด) บนโฮสต์เสมือน 4.3.28r100309 Windows 8.1, อะแดปเตอร์เครือข่าย bridged ไม่มี iptables ไฟร์วอลล์ Windows ถูกปิดใช้งาน

เกตเวย์: การส่งต่อพอร์ตสำหรับเปิดใช้งานพอร์ต 1194 ไม่มีข้อ จำกัด ของไฟร์วอลล์

นี่คือไฟล์การกำหนดค่าบนเซิร์ฟเวอร์และไคลเอนต์ตามลำดับ ฉันสร้างสิ่งเหล่านี้ตามคำแนะนำใน Arch Wiki

/etc/openvpn/server.conf (บรรทัดที่ไม่ใช่ความคิดเห็นเท่านั้น):

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 (บรรทัดที่ไม่ใช่ความคิดเห็นเท่านั้น):

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

นี่คือผลลัพธ์ของการรัน openvpn บนเครื่องที่มีการกำหนดค่าข้างต้น ฉันเริ่มเซิร์ฟเวอร์ก่อนจากนั้นลูกค้า

ผลลัพธ์ของopenvpn /etc/openvpn/server.confบนเซิร์ฟเวอร์:

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

ผลลัพธ์ของopenvpn /etc/openvpn/client.confบนไคลเอนต์:

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)

1
ลูกค้าของคุณจะไม่ได้รับการตอบกลับจากเซิร์ฟเวอร์เลย คุณอาจมีไฟร์วอลล์ที่คุณลืมหรือการส่งต่อพอร์ตของคุณไม่ทำงาน
Michael Hampton

2
ทำแพ็คเก็ตสูดอากาศเช่น: tcpdump -ni eth0 udp and port 1194 บนเซิร์ฟเวอร์และตรวจสอบว่าแพ็คเก็ตจะมาถึง หากพวกเขาอาจจะมีปัญหากับไฟร์วอลล์ที่ปล่อยแพ็คเก็ตถ้าไม่แล้วส่วนใหญ่อาจมีปัญหาบางอย่างกับการส่งต่อพอร์ตบนเราเตอร์ คุณสามารถทำได้บนเราเตอร์เช่นกัน ลองถ่ายภาพและลองใช้พอร์ตที่สูงกว่านี้ไม่ใช่เรื่องปกติ แต่บางที ISP ของคุณอาจทำอะไรผิดพลาดเช่นพอร์ต 11194 / UDP หรือ 53 / UDP
Michal Sokolowski

ใช่มันคือการส่งต่อ ฉันมักจะไม่ทำงานกับ UDP ดังนั้นฉันลืมเปลี่ยนโพรโทคอลเมื่อสร้างกฎ ฉันจะโพสต์นั้นเป็นคำตอบ
Kyle

3
หากแพ็กเก็ตแสดงเป็น tcpdump บนเซิร์ฟเวอร์มีวิธีที่จะทำให้แน่ใจว่าแพ็กเก็ต openvpn ถูกต้องหรือไม่?
Joost

คำตอบ:


9

ฉันมีปัญหานี้เช่นกัน

กำลังใช้ผู้ให้บริการดิจิตัลโอเชียนสำหรับเซิร์ฟเวอร์ของฉันและปัญหาเกิดขึ้นกับฟีเจอร์ ip แบบลอยตัว

เพื่อแก้ไขปัญหานั้นคุณต้องอัปเดตการตั้งค่า openvpn:

local <ip anchor>

ip anchor ควรเป็นที่อยู่ ip ที่รวบรวมจากip addrคำสั่งดูตัวอย่าง: ป้อนคำอธิบายรูปภาพที่นี่

เครดิตไปยังโพสต์นี้


ฉันมีปัญหานี้เช่นกันกับอุปกรณ์ pfsense การเพิ่มlocal <ip address of VPN server>รายการในการกำหนดค่าเซิร์ฟเวอร์คงที่ โปรดทราบว่าสำหรับ TCP รายการนี้ไม่จำเป็นมันเป็นเพียง UDP ที่จะให้ข้อผิดพลาด
Vincenzo Pii

5

ตามคำแนะนำของ Michael Hampton และ Michal Sokolowski ในความคิดเห็นเกี่ยวกับคำถามของฉันมันเป็นปัญหากับกฎการส่งต่อพอร์ตที่ฉันสร้างขึ้นบนเกตเวย์ของฉัน OpenVPN ได้รับการกำหนดค่าให้ใช้ UDP และฉันลืมเปลี่ยนจาก TCP เป็น UDP บนเกตเวย์เนื่องจากปกติฉันจะไม่ใช้โปรโตคอลนั้น กฎการส่งต่อใช้ UDP และ VPN ของฉันทำงานได้


0

หากปรากฏขึ้นหลังจากอัปเดตระบบปฏิบัติการหลัก หรือแพ็กเก็ตที่เข้ามาแสดงใน tcpdump บนเซิร์ฟเวอร์ แต่ก็ยังใช้งานไม่ได้ ลองปิดและเปิดใช้งานไฟร์วอลล์อย่างง่าย บางทีใครบางคนจะช่วย

sudo ufw disable
sudo ufw enable

0

การกำหนดค่าปัจจุบันของฉันจะใช้งานได้ในบางประเทศ ฉันสงสัยว่าผู้ให้บริการปัจจุบันของฉันกำลังบล็อกแพ็กเก็ต TLS handshake วิธีการแก้? เนื่องจากฉันเป็นคนเดียวที่ใช้ VPN นั้นฉันได้เปลี่ยนไปใช้การรับรองความถูกต้องของคีย์แบบคงที่ซึ่งในกรณีของฉัน - พิสูจน์แล้วว่าเป็นซุปเปอร์เร็ว https://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static -key มินิ howto.html


0

ฉันได้รับปัญหานี้เนื่องจากเกตเวย์เริ่มต้นผิดพลาดที่ฝั่งเซิร์ฟเวอร์ เซิร์ฟเวอร์ OpenVPN ได้รับความพยายามในการเชื่อมต่อจากไคลเอนต์ แต่การตอบสนองนั้นหายไปเพราะไม่ถึงเราเตอร์ที่ถูกต้อง


คุณจำที่คุณต้องเปลี่ยนสิ่งนี้หรือไม่? เป็นแบบนี้etc/openvpn/server.confหรือเปล่า?
อาร์เธอร์ Attout

ฉันคิดว่ามีบางอย่างผิดปกติกับตารางเส้นทางที่ด้านเซิร์ฟเวอร์ ip routeตรวจสอบกับ
lanoxx

0

ฉันเพิ่งมีปัญหานี้ ในการตรวจสอบไฟล์. vpn ของฉันฉันเห็นว่า? .ddns.net ถูกเปลี่ยนเป็นที่อยู่ IP ซึ่งเป็นสาเหตุที่ไม่ได้เชื่อมต่อ ฉันเปลี่ยน IP กลับเป็นที่อยู่? .ddns.net และเชื่อมต่อแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.