OpenVPN:“验证/解密数据包错误:数据包 HMAC 身份验证失败”

usr*_*ΛΩΝ 5 vpn openvpn

我正在尝试将我的 Raspberry Pi 配置为站点 B 上的 OpenVPN 服务器。对于此设置,我要求将客户端配置存储在一个非常单一的文件中,因为它将部署在我的 Android 手机上。我不想弄乱路径,所以:我将通过蓝牙和 zap 发送文件!

\n

配置是基于 PKI 的。该配置受到现有 VPN(已注释掉)的启发,Raspy 是该 VPN 的客户端(站点 B 到站点 A)。“其他”VPN 可以随时启用,但目前已被注释掉。在尝试在 Android 上部署之前,我首先在 Windows 上尝试此操作,特别是因为我可以随时编辑和重新运行配置,使用键盘快速键入并从服务器复制和粘贴内容,因为我始终可以通过 ssh 远程访问它。在移动设备上,我需要花很多时间来测试。

\n

服务器配置文件

\n
port 1194\nproto udp\ndev tun\n\nca /etc/ssl/vpn/ca.crt\ncert /etc/ssl/vpn/raspy.crt\nkey /etc/ssl/vpn/raspy.key\ndh /etc/ssl/vpn/dh2048.pem\nkey-direction 1\ntls-auth /etc/ssl/vpn/ta.key 0 # This file is secret\ncipher AES-256-CBC   # AES\n\nclient-config-dir ccd\nifconfig-pool-persist ipp.txt\nclient-to-client\npush "route 192.168.192.0 255.255.255.0 vpn_gateway"\nkeepalive 10 120\ncomp-lzo\n\nuser nobody\ngroup nogroup\npersist-key\npersist-tun\n\nstatus openvpn-status.log\nlog  /var/log\nverb 6 #helps me troubleshoot\n
Run Code Online (Sandbox Code Playgroud)\n

客户端配置文件

\n
dev tun\nproto udp\nremote raspy.example.me 1194\n\nresolv-retry infinite\n\nnobind\n\nuser nobody\ngroup nogroup\n\npersist-key\npersist-tun\n\n<ca>\n-----BEGIN CERTIFICATE-----\nMatches the CA certificate deployed on server\n-----END CERTIFICATE-----\n</ca>\n<cert>\n-----BEGIN CERTIFICATE-----\nThis is the client certificate that I have signed with common CA\nI assume this part of the setup is fine\n-----END CERTIFICATE-----\n</cert>\n<key>\n-----BEGIN RSA PRIVATE KEY-----\nClient private key\n-----END RSA PRIVATE KEY-----\n</key>\n\n<dh>\n-----BEGIN DH PARAMETERS-----\nMatches the content of /etc/ssl/vpn/dh2048.pem\n-----END DH PARAMETERS-----\n</dh>\ncipher AES-256-CBC\nremote-cert-tls server\n\n<tls-auth>\n-----BEGIN OpenVPN Static key V1-----\nmatches /etc/ssl/vpn/ta.key\n-----END OpenVPN Static key V1-----\n</tls-auth>\n\ncipher AES-256-CBC\n\ncomp-lzo\n\n\nlog         /var/log/openvpn.log\nverb 6\n
Run Code Online (Sandbox Code Playgroud)\n

确信证书设置正确,但与此同时,我将使用 OpenSSL 重新测试它们,以确保链正常。

\n

连接中,发现以下日志

\n

服务器

\n
Tue Jul 28 11:02:25 2020 us=457781 Authenticate/Decrypt packet error: packet HMAC authentication failed\nTue Jul 28 11:02:25 2020 us=458025 TLS Error: incoming packet authentication failed from [AF_INET]xxx:46976\nTue Jul 28 11:02:27 2020 us=732637 Authenticate/Decrypt packet error: packet HMAC authentication failed\nTue Jul 28 11:02:27 2020 us=732832 TLS Error: incoming packet authentication failed from [AF_INET]xxx:46976\n
Run Code Online (Sandbox Code Playgroud)\n

客户

\n
Tue Jul 28 11:02:25 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #2 ] [ ] pid=0 DATA len=0\nTue Jul 28 11:02:29 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #3 ] [ ] pid=0 DATA len=0\nTue Jul 28 11:02:37 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #4 ] [ ] pid=0 DATA len=0\nTue Jul 28 11:02:53 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #5 ] [ ] pid=0 DATA len=0\n
Run Code Online (Sandbox Code Playgroud)\n

这个设置可能有什么问题?我应该如何解决这个问题?

\n

研究

\n
\n

我发现这个主题声称已解决

\n
bznelson wrote: \xe2\x86\x91\nMon Apr 09, 2018 10:52 pm\ntls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 \n\nbznelson wrote: \xe2\x86\x91\nMon Apr 09, 2018 10:52 pm\n<tls-crypt>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

啊,是的,tls-auth/tls-crypt,就是它!太感谢了!我运行的是 2.3 服务器,但我最初安装的是 2.4,我猜有一些异花授粉。

\n
\n

我在两台主机上运行 OpenVPN 2.4.0。我不知道该链接的线程可以如何帮助我

\n

在同一主题中,有人谈到了该错误

\n
\n

这通常意味着您在某处安装了错误的 ta.key。

\n
\n

但我已经查过三遍了。键是相同的,但最大的区别在于,一个在文件上,一个是内联的

\n
\n

我尝试从客户端和服务器中完全删除 tls-auth。错误已修复,我还有下一个错误需要关心。所以,上面链接的论坛是正确的,两个相同的键之间存在一些混乱

\n

Neo*_*Man 1

客户端和服务器配置需要共享相同的cipher配置。该行:

cipher AES-256-CBC
Run Code Online (Sandbox Code Playgroud)

两者都必须存在。