zaLinux.ru

Как использовать OpenVPN с протоколом TCP


По умолчанию 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

Смотрите также:


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *