CentOS 7本地OpenVPN服务端运行正常但客户端无法连接求助
OpenVPN客户端连接失败(TLS握手错误)排查与解决
问题背景
按CentOS 7 OpenVPN部署教程完成服务端配置,服务端已正常运行,但客户端连接时触发TLS握手失败,服务端日志显示TLS Error: TLS key negotiation failed to occur within 60 seconds。
服务端状态日志
openvpn@server.service - OpenVPN Robust And Highly Flexible Tunneling Application On server Loaded: loaded (/usr/lib/systemd/system/openvpn@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-05-25 21:32:46 CST; 13min ago Main PID: 18741 (openvpn) Status: "Initialization Sequence Completed" CGroup: /system.slice/system-openvpn.slice/openvpn@server.service └─18741 /usr/sbin/openvpn --cd /etc/openvpn/ --config server.conf May 25 21:32:46 localhost.localdomain openvpn[18741]: Thu May 25 21:32:46 2023 IFCONFIG POOL LIST May 25 21:32:46 localhost.localdomain openvpn[18741]: Thu May 25 21:32:46 2023 Initialization Sequence Completed May 25 21:32:48 localhost.localdomain openvpn[18741]: Thu May 25 21:32:48 2023 192.168.0.148:62830 TLS: Initial packet from [AF_INET]192.168.0.148:62830, sid=7bccaacb 8595effe May 25 21:32:49 localhost.localdomain openvpn[18741]: Thu May 25 21:32:49 2023 192.168.0.148:62831 TLS: Initial packet from [AF_INET]192.168.0.148:62831, sid=1c641459 f17d5fad May 25 21:33:48 localhost.localdomain openvpn[18741]: Thu May 25 21:33:48 2023 192.168.0.148:62830 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) May 25 21:33:48 localhost.localdomain openvpn[18741]: Thu May 25 21:33:48 2023 192.168.0.148:62830 TLS Error: TLS handshake failed May 25 21:33:48 localhost.localdomain openvpn[18741]: Thu May 25 21:33:48 2023 192.168.0.148:62830 SIGUSR1[soft,tls-error] received, client-instance restarting May 25 21:33:49 localhost.localdomain openvpn[18741]: Thu May 25 21:33:49 2023 192.168.0.148:62831 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) May 25 21:33:49 localhost.localdomain openvpn[18741]: Thu May 25 21:33:49 2023 192.168.0.148:62831 TLS Error: TLS handshake failed May 25 21:33:49 localhost.localdomain openvpn[18741]: Thu May 25 21:33:49 2023 192.168.0.148:62831 SIGUSR1[soft,tls-error] received, client-instance restarting
客户端配置文件
tls-client ca ca.crt cert client.crt key client.key tls-crypt myvpn.tlsauth remote-cert-eku "TLS Web Client Authentication" proto udp remote SERVER_IP_ADDRESS 1194 udp dev tun topology subnet pull user nobody group nobody
排查方向与解决方案
1. 防火墙与端口转发问题
- 问题分析:服务端收到客户端初始包但握手超时,大概率是防火墙拦截UDP 1194端口,或未开启IP转发导致回程包无法到达客户端。
- 解决方案:
- 开放OpenVPN端口:
firewall-cmd --add-port=1194/udp --permanent firewall-cmd --reload - 启用IP转发:
编辑/etc/sysctl.conf,添加或修改:
生效配置:net.ipv4.ip_forward = 1sysctl -p - 开启masquerade(确保回程包正确路由):
firewall-cmd --add-masquerade --permanent firewall-cmd --reload
- 开放OpenVPN端口:
2. TLS加密配置不匹配
- 问题分析:客户端使用
tls-crypt,需确认服务端是否启用相同配置,且密钥文件一致。 - 解决方案:
- 检查服务端
server.conf是否包含tls-crypt myvpn.tlsauth,且该文件与客户端的myvpn.tlsauth为同一文件(tls-crypt密钥双向通用)。 - 若服务端用
tls-auth,客户端需改为tls-auth myvpn.tlsauth 1(1为客户端模式),服务端对应配置为tls-auth myvpn.tlsauth 0(0为服务端模式)。
- 检查服务端
3. 客户端证书/密钥问题
- 问题分析:证书未由服务端CA签发、过期,或文件路径/权限错误,会导致TLS握手失败。
- 解决方案:
- 在服务端验证客户端证书有效性:
返回openssl verify -CAfile /etc/openvpn/ca.crt /path/to/client.crtOK则证书有效,否则重新生成客户端证书。 - 确认客户端的
ca.crt、client.crt、client.key路径正确,且运行用户拥有读取权限。
- 在服务端验证客户端证书有效性:
4. 网络MTU不匹配
- 问题分析:网络MTU值不匹配导致数据包截断,触发握手超时。
- 解决方案:
在客户端配置中添加MTU相关参数:
重启客户端后尝试连接。mtu-disc yes tun-mtu 1500 fragment 1300 mssfix 1200
5. 服务端配置遗漏
- 问题分析:服务端缺少必要的TLS配置,会导致握手失败。
- 解决方案:
检查服务端server.conf是否包含以下核心配置:
确保这些文件存在于ca ca.crt cert server.crt key server.key dh dh.pem/etc/openvpn/目录,且权限正确。
内容的提问来源于stack exchange,提问作者Toufic Sleiman
相关产品推荐
相关产品推荐

