启用tls-auth后OpenVPN报‘cannot locate HMAC’错误求助
OpenVPN TLS-AUTH 报HMAC错误的解决办法
问题根源
你的服务器配置里没加tls-auth相关设置,客户端发过来的带HMAC签名的数据包,服务器识别不了,所以报错。客户端已经开了tls-auth且设了key-direction 1,但服务器没同步配置,两边验证逻辑对不上。
具体修复步骤
1. 给服务器配置加tls-auth指令
服务器得用和客户端一模一样的静态密钥文件,而且key-direction要设成0(客户端是1,服务器必须是0,方向相反)。
在服务器配置里添加以下两行:
tls-auth /etc/openvpn/ta.key 0 key-direction 0
注意:把
/etc/openvpn/ta.key换成你实际的密钥文件路径,确保服务器上这个文件的内容和客户端<tls-auth>标签里的密钥完全一致。
2. 核对密钥一致性
客户端<tls-auth>标签内的密钥,必须和服务器端ta.key文件的内容完全相同。如果是用Easy-RSA生成的,直接复制生成的ta.key即可。
3. 重启OpenVPN服务
修改配置后,重启服务器端的OpenVPN服务:
systemctl restart openvpn@server
4. 额外检查(可选)
- 你服务器是2.6.14,客户端是2.5.11,版本差异不大,tls-auth功能完全兼容,不用操心版本兼容性问题。
- 防火墙肯定是开放了UDP 1194端口的,毕竟移除tls-auth后能正常连接,这步基本没问题。
为啥移除tls-auth就能连?
客户端去掉tls-auth指令后,双方都不再启用HMAC验证,服务器无需检查数据包的签名,自然就能正常建立连接,但这样会大幅降低VPN的安全性。
内容的提问来源于stack exchange,提问作者Unik6065
相关产品推荐
相关产品推荐

