我在Windows 2012服务器上configuration了OpenVPN(版本2.3.10)服务器,但是我无法使其工作。
服务器位于路由器后面,我打开了1194端口,并创build了一个将此端口上的stream量转发到服务器的规则。
以下是我尝试从客户端连接时在服务器上看到的日志:
Mon Mar 21 11:11:47 2016 XX.XX.XX.XX:57804 TLS: Initial packet from [AF_INET]XX.XX.XX.XX:57804, sid=fdf7a7ac 0264c7f3 Mon Mar 21 11:12:38 2016 XX.XX.XX.XX:55938 TLS: Initial packet from [AF_INET]XX.XX.XX.XX:55938, sid=1f242a3f e454a525 Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 TLS Error: TLS handshake failed Mon Mar 21 11:12:48 2016 XX.XX.XX.XX:57804 SIGUSR1[soft,tls-error] received, client-instance restarting
XX.XX.XX.XX是客户端的IP地址。 所以我从中了解到,客户端至less能够到达服务器,所以没有路由或防火墙问题。
我遵循这里提供的描述简单的Windows指南任何想法?
有趣的是港口号码在中游如何变化:
Mon Mar 21 11:11:47 2016 XX.XX.XX.XX: 57804 TLS:来自[AF_INET] XX.XX.XX.XX的初始数据包:57804,sid = fdf7a7ac 0264c7f3
Mon Mar 21 11:12:38 2016 XX.XX.XX.XX: 55938 TLS:来自[AF_INET]的初始数据包XX.XX.XX.XX:55938,sid = 1f242a3f e454a525
这使我认为,在客户端和服务器之间的某个地方,存在一个行为不当的设备,一个具有非常短暂的状态表条目的设备,它正在改变它适用于客户端build立的stream的源端口号,导致服务器认为两个短暂的沟通正在进行,而不是一个连续的沟通。
这样的设备通常只对UDP做这个,所以我build议你确认你使用的是UDP,然后尝试使用TCP。 你已经完成了,发现它解决了这个问题。 下一步是找出行为不当的NAT设备,用棍子敲击它,并用一个没有认为所有的UDP通信都是短暂的基本错误来代替它。 但是你已经表示,你很乐意改变TCP作为解决方法,所以这个问题就结束了。
这是设置Openvpn最常见的错误之一,这里有一个FAQ条目。 我要在这里引用:
TLS错误:60秒内TLS密钥协商失败(请检查您的networking连接)
设置OpenVPN最常见的问题之一是连接两端的两个OpenVPN守护进程无法build立TCP或UDP连接。
这几乎是因为:
- 服务器networking上的外围防火墙将过滤掉传入的OpenVPN数据包(默认OpenVPN使用UDP或TCP端口号1194)。
- 在OpenVPN服务器机器上运行的软件防火墙本身是过滤1194端口上的传入连接。请注意,许多操作系统将默认阻止传入连接,除非另有configuration。
- 服务器networking上的NAT网关没有TCP / UDP端口转发规则1194到OpenVPN服务器的内部地址。
- OpenVPN客户端configuration在其configuration文件中没有正确的服务器地址。 客户端configuration文件中的远程指令必须指向服务器本身或服务器networking网关的公共IP地址。
- 另一个可能的原因是,Windows防火墙阻止访问openvpn.exe二进制文件。 您可能需要将其列入白名单(将其添加到“例外”列表)以使OpenVPN正常工作。
这很可能是你的情况也会导致同样的问题。 所以只要一个接一个地查看清单就可以解决。
Ref: TLS错误:60秒内TLS密钥协商失败(请检查您的networking连接)
我得到这样的TLS密钥协商超时。 但在我的情况下,我意识到,远程链接是本地IP地址!
原来VPN已经在防火墙上configuration了LAN接口,而不是WAN接口,所以configuration设置为尝试连接防火墙的本地IP。 (这显然是永远不会帮助,除非我已经连接到他们的局域网首先..)
所以这个故事的寓意似乎是,即使连接到正确的位置,也有可能获得关键的谈判超时。
我有同样的错误,没有任何build议帮助,一切似乎都很好:IP,端口,防火墙,一切。 疯狂了2个小时。
解决scheme是在客户端configuration中将协议从UDP更改为TCP(很明显,我早就禁用了UDP)。
希望这可以帮助别人:)
LE:这解决了我的问题,但这不是按照以下评论的最佳方法。 你应该使用UDP而不是TCP。 它帮助我,因为我有不同的客户端和服务器configuration设置。