OpenVPN 클라이언트에서 'TLS 오류 : TLS 핸드 셰이크 실패'수정


16

공용 인터넷을 통해 SMB 트래픽을 암호화하기 위해 Arch Linux 서버에서 OpenVPN 2.3.6-1을 구성하고 있습니다. Linux 가상 머신 클라이언트 중 하나에서 설정을 테스트 할 때 오류가 발생 TLS Error: TLS handshake failed합니다.

나는 빨리 ( OpenVZ의 OpenVPN 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 공유에 대한 간단한 암호화 )

아무도이 문제를 해결할 수있는 방법을 설명 할 수 있습니까?

세부:

서버 : 이더넷 케이블을 통해 게이트웨이에 직접 연결된 아치 리눅스 (최신). iptables가 없습니다.

클라이언트 : VirtualBox 4.3.28r100309의 Windows 8.1 호스트, 브리지 된 네트워크 어댑터의 아치 Linux (최신) 가상 머신. 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
클라이언트는 서버로부터 전혀 응답을받지 않습니다. 잊어 버린 방화벽이 있거나 포트 전달이 작동하지 않습니다.
마이클 햄튼

2
tcpdump -ni eth0 udp and port 1194 서버에서 다음 과 같은 패킷 스니핑을 수행하고 패킷이 도착하는지 확인하십시오. 만약 그들이 패킷을 떨어 뜨리는 방화벽에 문제가 있다면, 라우터에 포트 포워딩에 문제가있을 것입니다. 라우터에서도 할 수 있습니다. 샷을 제공하고 더 높은 포트를 사용하십시오. 일반적이지 않지만 ISP가 포트 11194 / UDP 또는 53 / UDP와 같은 것을 엉망으로 만들 수 있습니다.
Michal Sokolowski

그렇습니다. 전달이었습니다. 일반적으로 UDP를 사용하지 않으므로 규칙을 만들 때 프로토콜을 변경하는 것을 잊었습니다. 답변으로 게시하겠습니다.
Kyle

3
패킷이 서버의 tcpdump에 표시되면 openvpn에 올바르게 도착할 수있는 방법이 있습니까?
Joost

답변:


9

나도이 문제가 있었다.

내 서버에 digitalocean 공급자를 사용하고 있는데 유동 IP 기능에 문제가있었습니다.

이를 해결하려면 openvpn 구성 설정을 업데이트해야합니다.

local <ip anchor>

ip anchor는 ip addr명령에서 수집 한 ip 주소 여야합니다 ( 예제 참조). 여기에 이미지 설명을 입력하십시오

이 게시물의 크레딧


pfsense 장치 에서도이 문제가 발생했습니다. local <ip address of VPN server>서버 구성에 항목을 추가하면 문제가 해결되었습니다. TCP의 경우이 항목이 필요하지 않았으며 UDP 만 오류를 표시했습니다.
Vincenzo Pii

5

내 질문에 대한 의견에서 Michael Hampton과 Michal Sokolowski가 제안한 것처럼 게이트웨이에서 만든 포트 전달 규칙에 문제가있었습니다. OpenVPN은 UDP를 사용하도록 구성되어 있으며 일반적으로 해당 프로토콜을 사용하지 않으므로 게이트웨이에서 TCP에서 UDP로 전환하는 것을 잊었습니다. 전달 규칙은 이제 UDP를 사용하며 VPN이 작동합니다.


0

OS 코어를 업데이트 한 후 표시되는 경우 또는 들어오는 패킷이 서버의 tcpdump에 표시되지만 여전히 작동하지 않습니다. 간단한 방화벽 비활성화 / 활성화를 시도하십시오. 누군가 도울 것입니다.

sudo ufw disable
sudo ufw enable


0

서버 측에서 잘못 구성된 기본 게이트웨이로 인해이 문제가 발생했습니다. OpenVPN 서버가 클라이언트에서 연결을 시도했지만 올바른 라우터에 도달하지 않아 응답이 유실되었습니다.


어디서 변경해야했는지 기억하십니까? 이거 etc/openvpn/server.conf에요?
Arthur Attout

서버 쪽의 라우팅 테이블에 문제가 있다고 생각합니다. 로 확인하십시오 ip route.
lanoxx

0

방금이 문제가있었습니다. 내 .ovpn 파일을 확인하면서? .ddns.net이 IP 주소로 변경되어 연결되지 않은 것을 알았습니다. IP를 다시? .ddns.net 주소로 변경하고 연결했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.