По умолчанию OpenVPN использует протокол UDP и официально рекомендуется использовать именно его. Тем не менее, протокол TCP также прекрасно работает с OpenVPN и в случае необходимости вы можете использовать и его. Теоретически, протокол TCP имеет больше «накладных расходов», то есть некоторая часть передаваемых данных не будет нести полезную нагрузку, а необходима только для нормальной работы TCP, который отслеживает сохранность и целостность передаваемых пакетов.
В моём случае необходимость добавить поддержку TCP возникла из-за того, что с некоторыми Интернет-провайдерами OpenVPN на протоколе UDP не мог подключиться из-за ошибки (ошибка будет рассмотрена далее), но прекрасно работал на протоколе TCP.
Для настройки работы OpenVPN с протоколом TCP нужно знать следующие моменты:
1. Протокол должен быть указан явно
В настройках конфигурационных файлов вместо строки
;proto tcp
используйте на сервере строку
proto tcp-server
а на клиенте строку
proto tcp-client
Для справки: протокол UDP и на сервере и на клиенте обозначается одинаково:
proto udp
2. Протокол TCP должен быть указан в конфигурационных файлах как сервера, так и клиента
Настройки протокола не передаются от сервера и должны быть явно указаны не только на самом сервере, но и у каждого клиента в конфигурационном файле.
3. Не используйте опцию explicit-exit-notify
В конфигурационном файле сервера не используйте настройку (просто удалите эту строку):
explicit-exit-notify 1
Иначе вы столкнётесь с ошибкой:
Options error: --explicit-exit-notify can only be used with --proto udp
4. Порт должен быть свободен
Это в равной степени относится к работе OpenVPN как с UDP, так и с TCP: выбранный порт должен быть свободен, иначе вы столкнётесь с ошибкой «TCP/UDP: Socket bind failed on local address [AF_INET][undef]:…: Address already in use (errno=98)», например::
2021-11-02 09:26:50 us=736094 TCP/UDP: Socket bind failed on local address [AF_INET][undef]:53: Address already in use (errno=98) 2021-11-02 09:26:50 us=736216 Exiting due to fatal error
Смотрите также:
- Сравнение производительности (скорости передачи данных) OpenVPN через UDP и TCP
- Инструкция по настройке сервера и клиента OpenVPN
- Продвинутое использование OpenVPN
Связанные статьи:
- Изменения в конфигурационных файлах при переходе с OpenVPN 2.4.* на OpenVPN 2.5.* (78.3%)
- Сравнение производительности (скорости передачи данных) OpenVPN через UDP и TCP (78.3%)
- Одновременное использование нескольких OpenVPN на одном сервере (78.3%)
- Ошибки «TLS Error: TLS key negotiation failed to occur within 60 seconds» и «TLS handshake failed» (РЕШЕНО) (78.3%)
- Управление соединениями VPN в Cinnamon (78.3%)
- Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные (RANDOM - 59.8%)