У меня есть сервер OpenVPN, работающий на сервере Ubuntu (16.04.2) в Digital Ocean. Этот сервер у меня работает довольно давно. Я могу сказать, что он работает без каких-либо проблем.
1) У меня есть клиент Ubuntu. Этот компьютер всегда подключается к серверу без каких-либо проблем либо с помощью соединителя Unity OpenVPN в верхней строке меню, либо напрямую с помощью файла .ovpn.
2) У меня есть мобильный клиент Android, который использует клиент Open VPN и всегда подключен к одному и тому же серверу.
3) У меня есть клиент Windows, которым я пользуюсь периодически. У него никогда не возникает проблем с подключением к серверу.
Проблема периодически возникает с №1 выше: клиентом Ubuntu. Как я уже сказал, он всегда подключается без проблем. Но бывают случаи, когда 0 байтов проходят в любом направлении, пока он подключен, и независимо от того, как он подключен. Когда он находится в таком «настроении», перезагрузка или повторное подключение не решают проблему. Так будет в течение дня или около того, а затем все будет нормально работать в течение нескольких недель, прежде чем снова навязать мне это маленькое число.
Все устройства подключены к одному и тому же Wi-Fi, и во время этих перебоев затрагивается только клиент Ubuntu. Когда он затронут, сетевые команды ужасно медленны (например, «маршрут»).
Когда это работает, маршрут возвращается:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.10.0.5 128.0.0.0 UG 0 0 0 tun0
default gateway 0.0.0.0 UG 600 0 0 wlp3s0
10.10.0.1 10.10.0.5 255.255.255.255 UGH 0 0 0 tun0
10.10.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
128.0.0.0 10.10.0.5 128.0.0.0 UG 0 0 0 tun0
[servers name] gateway 255.255.255.255 UGH 0 0 0 wlp3s0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 docker0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
Когда это не работает, маршрут возвращается (хотя и очень медленно):
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.10.0.5 0.0.0.0 UG 50 0 0 tun0
default 192.168.0.1 0.0.0.0 UG 600 0 0 wlp3s0
10.10.0.1 10.10.0.5 255.255.255.255 UGH 50 0 0 tun0
10.10.0.5 0.0.0.0 255.255.255.255 UH 50 0 0 tun0
[server’s name] 192.168.0.1 255.255.255.255 UGH 600 0 0 wlp3s0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 docker0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
Почему такое поведение? Я не знаю и не мог найти никакой информации. Опять же: один и тот же сервер на нескольких клиентах. Клиент Android постоянно подключен, и у него никогда не возникает проблем. Клиент Windows: он работает как гость Vbox на том же клиенте Ubuntu, у которого есть проблемы. Если возникают проблемы, то я не подключаю его к VPN, но у клиента Winows Vbox на том же компьютере нет проблем с подключением и проблем с перемещением байтов туда и обратно.
Клиентский .ovpn (одинаковый для всех клиентов):
client
dev tun
mssfix 1200
proto udp
remote vpn.myserver.com 443
resolv-retry infinite
nobind
persist-key
persist-tun
pkcs12 mykey.p12
remote-cert-tls server
comp-lzo
verb 3
auth-user-pass
Опять же, аутентификация и подключение никогда не проблема. Размер MTU имеет решающее значение: автоматическое обнаружение MTU нигде не является надежным, и некоторые «кофейни» или маршрутизаторы в облаке между клиентом и сервером имеют проблемы, если размер MTU не уменьшается, потому что тогда фактический размер пакета иногда превышает максимум и вызвать проблемы. Но, как я уже сказал, проблема возникает только у клиента Ubuntu. Такая же конфигурация работает везде.
Я также пробовал использовать различные другие конфигурации (клиент и сервер): TCP вместо UDP; разные номера портов.
Спасибо за вашу помощь.