我正在尝试将运行 Debian Stretch 和 openvpn 2.4.0 的 openvpn 服务器替换为运行 Debian bullseye 和 openvpn 2.5.7 的服务器,不幸的是,在旧操作系统上运行 openvpn 2.3 的旧客户端无法连接到新服务器。我现在无法轻松升级这些客户端。客户说(已审查)。
Socket Buffers: R=[163840->131072] S=[163840->131072]
UDPv4 link local: [undef]
UDPv4 link remote: [AF_INET]xx.xx.xx.xx:1194
TLS: Initial packet from [AF_INET]xx.xx.xx.xx:1194, sid=xxxxxx xxxxxx
然后它挂起一段时间然后报告。
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS handshake failed
我在谷歌上搜索了一下,但很难找到解决方案,我找到了关于数据通道密码的答案,但事情似乎还没有建立数据通道。
答案1
因此,要获得成功的连接,需要解决两个问题。
首先是旧客户端仅支持tls 1.0,但bullseye的openvpn默认拒绝这一点(我相信默认情况与openssl库的配置有关)。可以通过放入tls-version-min 1.0
服务器配置来重新启用 tls 1.0 支持。
第二个,如所述https://blog.zs64.net/2021/01/enabling-backwards-compatibility-in-openvpn/是数据通道密码,默认情况下,openvpn 不再支持 2.4 之前的 openvpn 客户端的后备密码。我发现需要比那里指定的更大的修复。除了设置之外,data-cipher-fallback
我还必须设置data-ciphers
最后一组额外的服务器端设置是。
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
tls-version-min 1.0
在我设置的客户端上。
cipher AES-256-CBC