Аутентификация OpenVPN / Ошибка дешифрования пакета
Я пытаюсь подключить ноутбук под управлением Windos 10 к серверу Ubuntu 16.04 под управлением OpenVPN.
Клиент продолжает получать эту ошибку:
MANAGEMENT: >STATE:1491498025,WAIT,,,,,,
Connection reset, restarting [0]
SIGUSR1[soft,connection-reset] received, process restarting
MANAGEMENT: >STATE:1491498025,RECONNECTING,connection-reset,,
Я следовал этому руководству, чтобы настроить OpenVPN. Все по умолчанию, за исключением того, что я изменил на порт 443 и TCP.
На сервере я вижу эту ошибку из "Systemctl status openvpn @ server":
ovpn-server[4627]: [IP ADDR] Fatal TLS error (check_tls_errors_co), restarting
ovpn-server[4627]: [IP ADDR] SIGUSR1[soft,tls-error] received, client-instance restarting
ovpn-server[4627]: TCP connection established with [AF_INET][IP ADDR]
ovpn-server[4627]: [IP ADDR] TLS: Initial packet from [AF_INET][IP ADDR], sid=5bf6806d 9c9b6639
ovpn-server[4627]:[IP ADDR] Authenticate/Decrypt packet error: packet HMAC authentication failed
ovpn-server[4627]: [IP ADDR] TLS Error: incoming packet authentication failed from [AF_INET][IP ADDR]
ovpn-server[4627]: [IP ADDR] Fatal TLS error (check_tls_errors_co), restarting
ovpn-server[4627]: [IP ADDR] SIGUSR1[soft,tls-error] received, client-instance restarting
server.conf:
port 443
proto tcp
dev tun
ca ca.crt
cert KICLAB-HV-01.crt
key KICLAB-HV-01.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
key-direction 0
mode server
tls-server
cipher AES-128-CBC # AES
auth SHA256 # SHA256
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
base.conf:
client
dev tun
proto tcp
remote [Internal LAN IP for testing] 443
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-128-CBC
auth SHA256
key-direction 1
comp-lzo
verb 3
Журнал клиента
Attempting to establish TCP connection with [AF_INET][IP:443} [nonblock]
MANAGEMENT: >STATE:1491826387,TCP_CONNECT,,,,,,
TCP connection established with [AF_INET][IP:443}
TCP_CLIENT link local: (not bound)
TCP_CLIENT link remote: [AF_INET][IP:443}
MANAGEMENT: >STATE:1491826388,WAIT,,,,,,
Connection reset, restarting [0]
SIGUSR1[soft,connection-reset] received, process restarting
MANAGEMENT: >STATE:1491826388,RECONNECTING,connection-reset,,,,,
Restart pause, 5 second(s)
TCP/UDP: Preserving recently used remote address: [AF_INET][IP:443}
Socket Buffers: R=[65536->65536] S=[65536->65536]
Attempting to establish TCP connection with [AF_INET][IP:443} [nonblock]
MANAGEMENT: >STATE:1491826393,TCP_CONNECT,,,,,,
TCP connection established with [AF_INET][IP:443}
TCP_CLIENT link local: (not bound)
TCP_CLIENT link remote: [AF_INET][IP:443}
MANAGEMENT: >STATE:1491826394,WAIT,,,,,,
Connection reset, restarting [0]
SIGUSR1[soft,connection-reset] received, process restarting
MANAGEMENT: >STATE:1491826394,RECONNECTING,connection-reset,,,,,
Restart pause, 5 second(s)
Текущий вывод "Systemctl Status openvpn@server" (обратите внимание, что [IP] на самом деле не правильный IP для клиента. Это проблема?):
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
IFCONFIG POOL LIST
MULTI: TCP INIT maxclients=1024 maxevents=1028
Initialization Sequence Completed
TCP connection established with [AF_INET][IP]:48758
[IP]:48758 TLS: Initial packet from [AF_INET][IP]:48758, sid=9ab50ac0 a37efe04
[IP]:48758 TLS Error: reading acknowledgement record from packet
[IP]:48758 Fatal TLS error (check_tls_errors_co), restarting
Apr 10 08:36:24 [host] ovpn-server[2191]: [IP]:48758 SIGUSR1[soft,tls-error] received, client-instance restarting
Спасибо!
2 ответа
У вас нет сертификата для клиента в ваших конфигах. Вы должны сгенерировать один подписанный тем же CA, который вы используете на своем сервере, и добавить его в client.conf следующим образом:
ca "ca.crt"
cert "client.crt"
key "client.key"
С сайта OpenVPN:
Опция --tls-auth использует статический предварительный общий ключ (PSK), который должен быть сгенерирован заранее и распространен среди всех пиров.
У вас есть это на вашем сервере как:
tls-auth ta.key 0 # This file is secret
key-direction 0
Но на клиенте вы это закомментировали:
;tls-auth ta.key 1
...
key-direction 1
Второй аргумент tls-auth
является ключевым направлением, поэтому вам не нужно повторять его, используя key-direction
строфа.
На вашем сервере просто удалите key-direction 0
в строке, а на вашем клиенте удалите как разделитель комментариев (;
) и key-direction 1
линия.
Конечно, ta.key
Прежде чем все вышеперечисленное сработает, сначала необходимо установить его на клиентский компьютер - скопируйте его туда с помощью scp
или похожие.