У меня довольно странная проблема с моим 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"
Журнал сервера (проблема не в 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
Большое спасибо.
Похоже, виновата ваша конфигурация аутентификации. Ты используешь 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 по умолчанию пытается повторно инициировать новый сеанс TLS каждые 3600 секунд, вам придется каждый раз повторно аутентифицироваться, используя новый OTP. Чтобы избежать такого поведения, достаточно сказать openvpn никогда не отказываться от сеанса TLS и поддерживать существующий, если вы объедините keepalive
директива и reneg-sec 0
, у вас будет стабильная связь, без каких бы то ни было отказов.
Я испытал аналогичный эффект, когда добавил опцию auth-nocache в конфигурацию моего клиента. Я использую сертификаты И комбинацию имени пользователя + пароля для аутентификации.
Несколько раз я замечал в журналах подключений, что openvpn сообщает следующее предупреждение:
ВНИМАНИЕ: эта конфигурация может кэшировать пароли в памяти - используйте параметр auth-nocache, чтобы предотвратить это
Поэтому я подумал, что просто добавлю эту опцию и посмотрю, что произойдет. Что ж, вышеприведенное предупреждение исчезло, но через час появилось диалоговое окно с запросом моего имени пользователя и пароля.
Я заметил, что приведенная выше конфигурация Эндрю не содержит этой опции, поэтому я немного озадачен, почему она не кэширует пароль. Возможно, это потому, что я использую более новую версию openvpn, или, может быть, в конфигурации сервера можно настроить передачу этой опции клиенту.
Это было замечено на: OpenVPN 2.2.1-8 + deb7u2 с OpenVPN GUI v5 для Windows.