Сегодня клиент обратился с проблемой которая заключалась в том, что один из удалённых пользователей не может соединиться с OpenVPN сервером.
В журнале сервера с данного IP были такие ошибки:
Tue Nov 11 09:58:49 2014 xxx.xxx.xxx.xxx:49611 TLS: Initial packet from 176.108.233.33:49611, sid=aea2a5e5 bc9d76f6
Tue Nov 11 09:59:49 2014 xxx.xxx.xxx.xxx:49611 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Tue Nov 11 09:59:49 2014 xxx.xxx.xxx.xxx:49611 TLS Error: TLS handshake failed
Документация по OpenVPN указывает на проблему соединения.
Это казалось абсурдным так как эта запись была в журнале сервера. И конечно пинги на сервер проходили. В журнале статуса openvpn-status.log (у вас может быть другой, смотрите конфиг опцию status) была запись в состоянии UNDEF
UNDEF,xxx.xxx.xxx.xxx:49611,84,108,Tue Nov 11 09:26:20 2014
После попытки перейти с UDP на TCP стало ясно, что проблема не в протоколе. Включение более детальных логов опцией verb 6 также не раскрыло глаза. И тут в tcpdump бросилось в глаза то что от клиента приходит всего один пакет, а сервер в ответ отвечает от 5-ю до 20-ю, а может и более пакетами. Чтобы проверить проходимость больших пакетов с клиента ping-анули сервер пакетами размером 16 килобайт. В ответ небыло получено ни одного ответа. Проблема была явно в связи о чём и говорила запись в логе. Клиенту осталось разобраться с провайдером.