我的OpenVPN配置有一个相当奇怪的问题。我正在从Windows 7官方最新客户端连接OpenVPN到我的OpenVPN服务器 ( OpenVPN 2.1.4 i386-redhat-linux-gnu)。
问题是我OpenVPN刚好在 1 小时后与服务器断开连接,我无法理解什么指令/选项对此负责。可能是客户端的问题?我尝试了不同的Windows系统和Windows VPN客户端。该Linux客户是否按预期工作,没有断开。
你能帮我解决这个问题吗?我曾尝试阅读的书籍和谷歌搜索,有些人建议玩keepalive和reneg-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"
Run Code Online (Sandbox Code Playgroud)
服务器日志(不是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
Run Code Online (Sandbox Code Playgroud)
客户端日志
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
Run Code Online (Sandbox Code Playgroud)
非常感谢。
the*_*bit 12
罪魁祸首似乎是您的身份验证配置。您正在使用plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login这将要求客户端提供有效的用户名/密码组合以进行连接。显然,重新生成密钥时也需要这样做,并且您的 OpenVPN 客户端似乎无法从stdin( ERROR: could not read Auth username from stdin)请求用户名。
至于为什么在您的服务器配置中提高 reneg-sec 没有帮助的原因,这是因为必须在两者中指定参数 - 服务器和客户端的配置才能有效地提高到默认值 3600 秒以上(碰巧导致一小时 - 您看到的断开连接)。
所以你的选择是
你可以尝试reneg-sec 0在你的server.conf:
这真的很简单。由于默认情况下 OpenVPN 尝试每 3600 秒重新协商一个新的 TLS 会话,因此您每次都必须使用新的 OTP 重新进行身份验证。为了避免这种行为,只需告诉 openvpn 永远不要重新协商 TLS 会话并保持现有会话处于活动状态,如果您将keepalive指令和结合使用reneg-sec 0,您将拥有稳定的连接,而不会进行任何重新协商。
| 归档时间: |
|
| 查看次数: |
53385 次 |
| 最近记录: |