У меня два очень разных клиента в двух очень разных сетях, оба не могут подключиться к недавно настроенному серверу OpenVPN, оба вызывают записи в журнале на сервере вроде следующего:
Aug 8 20:37:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS: Initial packet from [AF_INET]12.34.56.78:48573, sid=80063aef 9e45c93a
Aug 8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Aug 8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS Error: TLS handshake failed
Aug 8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 SIGUSR1[soft,tls-error] received, client-instance restarting
Клиентами являются OpenVPN на портативном компьютере * buntu, подключенном к маршрутизатору NAT ADSL, и маршрутизатор 3G / 4G WWAN со встроенным клиентом OpenVPN.
Вот что я пока что проверил:
Что еще может быть причиной этого?
Редактировать: Итак, сюжет сгущается ... В отчаянии я попытался изменить всю цепочку конфигов на использование TCP, а в противном случае оставить все как было. Взрыв! Клиент OpenVPN на моем ноутбуке * buntu смог подключиться сразу. Но что делать, если клиент OpenVPN маршрутизатора 3G / 4G даже не поддерживает транспорт TCP? Я еще не закончил!
Редактировать: Просто чтобы прояснить здесь; Я точно изменил четыре вещи, чтобы заставить это работать:
proto tcp
вместо того proto udp
и перезапустили OpenVPNUse a TCP connection
флажок Каждые остальные настройки и конфигурация остаются идентичный как это было раньше.
Редактировать: У меня есть скрытое подозрение, что что-то странное происходит с маршрутизацией UDP-трафика на моем VPN-сервере; IP-адрес, к которому настроен OpenVPN для привязки, не является основным IP-адресом сервера, фактически он даже не находится в той же подсети. Вот как выглядит таблица маршрутизации:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 11-22-33-1.thing 0.0.0.0 UG 0 0 0 eth0
22.33.44.0 * 255.255.255.0 U 0 0 0 eth0
10.8.0.0 * 255.255.255.0 U 0 0 0 tun0
11.22.33.0 * 255.255.255.0 U 0 0 0 eth0
$ ip route
default via 11.22.33.1 dev eth0 onlink
22.33.44.0/24 dev eth0 proto kernel scope link src 22.33.44.55
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
11.22.33.0/24 dev eth0 proto kernel scope link src 11.22.33.44
IP-адрес 22.33.44.55 был назначен позже, и именно к нему привязывается OpenVPN. Теперь я первый, кто признает, что знаю рядом с ничего насчет IP-маршрутизации, но может ли UDP-трафик на «новом» IP-адресе каким-то образом теряться из-за того, что у него нет собственного маршрута по умолчанию - или что-то в этом роде?
Оказывается, я был прав: local 22.33.44.55
вариант в OpenVPN server.config
скучал. Его добавление и перезапуск OpenVPN решили проблему, и транспорт UDP теперь работает на моем вторичном IP. Без него ответы от OpenVPN отправлялись через IP по умолчанию, хотя я не понимаю, почему это не мешало работе TCP. Ошибка школьника, если хотите, но скрипт конфигурации OpenSSL, который я использовал (https://github.com/Angristan/OpenVPN-install) сделал запросить IP-адрес для использования во время настройки, поэтому я просто предположил, что он настроен правильно.