每小时与OpenVPN服务器断开连接


13

我的OpenVPN配置有一个很奇怪的问题。我正在从Windows 7官方最新客户端连接OpenVPNOpenVPN服务器(OpenVPN 2.1.4 i386-redhat-linux-gnu)。

问题是我OpenVPN正好在1小时后与服务器断开连接,我不明白对此负责的指令/选项。也许是客户问题?我尝试了不同的Windows系统和Windows VPN客户端。该Linux客户是否按预期工作,没有断开。

您能帮我解决这个问题吗?我尝试阅读书籍和谷歌搜索,有些人建议您使用keepalivereneg-sec指令。但这似乎无济于事。

OpenVPN服务器配置

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 192.168.2.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.0.0.0 255.0.0.0"
client-config-dir ccd
route 192.168.51.0 255.255.255.0
keepalive 60 600
reneg-sec 5000
hand-window 15
tls-auth ta.key 0
comp-lzo
max-clients 50
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 4
crl-verify crl.pem
management localhost 11111
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
push "dhcp-option DNS 192.168.2.1"
push "dhcp-option DOMAIN example.com"
push "dhcp-option SEARCH example.com"

服务器日志(reinit_src = 1中不是问题吗?)

Oct  9 07:23:38 vpn openvpn[19495]: user/192.168.253.20:54568 TLS Error: TLS handshake failed
Oct  9 07:23:38 vpn openvpn[19495]: user/192.168.253.20:54568 TLS: move_session: dest=TM_LAME_DUCK src=TM_ACTIVE reinit_src=1
Oct  9 07:24:53 vpn openvpn[19495]: user/192.168.253.20:54568 TLS Error: TLS handshake failed
Oct  9 07:26:08 vpn openvpn[19495]: user/192.168.253.20:54568 TLS Error: TLS key negotiation failed to occur within 15 seconds (check your network connectivity)
Oct  9 07:26:08 vpn openvpn[19495]: user/192.168.253.20:54568 TLS Error: TLS handshake failed
Oct  9 07:26:39 vpn openvpn[19495]: user/192.168.253.20:54568 [UNDEF] Inactivity timeout (--ping-restart), restarting
Oct  9 07:26:39 vpn openvpn[19495]: user/192.168.253.20:54568 SIGUSR1[soft,ping-restart] received, client-instance restarting

客户日志

RwrWRwRwRwRwTue Oct 09 07:26:39 2012 us=796000 TLS: soft reset sec=0 bytes=7405621/0 pkts=9459/0
Tue Oct 09 07:26:39 2012 us=600000 ERROR: could not read Auth username from stdin
Tue Oct 09 07:26:39 2012 us=600000 Exiting
Tue Oct 09 07:26:39 2012 us=600000 C:\WINDOWS\system32\route.exe DELETE 192.168.2.1 MASK 255.255.255.255 192.168.100.150
Tue Oct 09 07:26:39 2012 us=600000 Route deletion via IPAPI succeeded [adaptive]
Tue Oct 09 07:26:39 2012 us=600000 C:\WINDOWS\system32\route.exe DELETE 10.0.0.0 MASK 255.0.0.0 192.168.100.150
Tue Oct 09 07:26:39 2012 us=600000 Route deletion via IPAPI succeeded [adaptive]
Tue Oct 09 07:26:39 2012 us=600000 Closing TUN/TAP interface

非常感谢你。

Answers:


12

罪魁祸首似乎是您的身份验证配置。您正在使用plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login它要求客户端提供有效的用户名/密码组合才能连接。显然,重新输入密钥时也需要这样做,并且您的OpenVPN客户端似乎无法从stdinERROR: could not read Auth username from stdin)请求用户名。

至于在服务器配置中提高reneg-sec的问题无济于事的原因,这是因为必须同时指定参数-服务器和客户端的配置必须有效地提高到默认值3600秒以上(这恰好是造成一小时-断开连接)。

所以你的选择是

  • 使用不需要用户输入的身份验证方法(可以想到的证书)
  • 解决为什么客户端在建立连接后无法提示用户名/密码组合的问题
  • 延长重新输入密钥的时间或完全禁用重新输入密钥(这会削弱连接的安全性,因此,这肯定是解决问题的较差的解决方法)

没错,将reneg-sec放入client.ovpn帮助解决了此问题。
安德鲁

8

你可以尝试reneg-sec 0在你的server.conf

https://duo.com/docs/openvpn

https://tldrify.com/m80

真的很简单。由于OpenVPN默认会尝试每3600秒重新协商一个新的TLS会话,因此您每次都必须使用新的OTP重新进行身份验证。为了避免这种行为,只需告诉openvpn不要重新协商TLS会话并保持现有会话有效,如果您结合使用keepalive伪指令和reneg-sec 0,则将具有稳定的连接,而无需任何重新协商。


3

当我在客户端配置中添加“ auth-nocache”选项时,我遇到了类似的效果。我使用证书以及用户名和密码组合进行身份验证。

几次我在连接日志中注意到openvpn报告以下警告:

警告:此配置可能会将密码缓存在内存中-使用auth-nocache选项可以防止这种情况

所以我想我将添加此选项,然后看看会发生什么。好了,上面的警告确实消失了,但是一个小时后弹出一个对话框,要求我提供用户名和密码。

我注意到,安德鲁的上述配置不包含此选项,因此我对为什么不缓存密码感到困惑。也许这是因为我使用的是Openvpn的较新版本,或者可以在服务器配置上对其进行设置以将此选项推送到客户端。

可见于:具有适用于Windows的OpenVPN GUI v5的OpenVPN 2.2.1-8 + deb7u2。


我必须使用openvpn生成一个文件,然后添加auth-nocache选项。现在工作正常。生成的文件可以用作
crsuarezf 2015年

@ingcarlos很高兴听到它为您工作。快乐的vpn-ing。
captcha

+1 Absolutley是的,在不添加缓存指令后,我遇到了同样的问题。
Mohammed
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.