You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 = 1
      
      生效配置:
      sysctl -p
      
    • 开启masquerade(确保回程包正确路由):
      firewall-cmd --add-masquerade --permanent
      firewall-cmd --reload
      

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.crt
      
      返回OK则证书有效,否则重新生成客户端证书。
    • 确认客户端的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:12:08