TCP или UDP: что лучше для VPN
Команда Nebula Link
Для VPN чаще лучше UDP, а TCP остаётся запасным вариантом. Причина в том, что внутри туннеля почти всегда едут свои TCP-соединения, и второй слой повторных отправок под ними мешает, а не помогает. Так советует и документация OpenVPN: использовать UDP для туннеля.
Но выбор есть не у всех. WireGuard по описанию проекта работает только по UDP, у OpenVPN транспорт задаётся в профиле, а у других протоколов набор свой. Ниже - в чём разница, что такое TCP meltdown и как выбирать.
Что гарантирует TCP и что - UDP
Словарь MDN описывает TCP как протокол, который доставляет данные надёжно, без ошибок и в том порядке, в каком они отправлены, и подстраивает скорость под возможности сети. UDP, по тому же словарю, устроен проще: у него нет рукопожатия, а доставка, порядок и защита от дублей не гарантируются.
Взамен у UDP меньше служебной работы. MDN указывает, что его выбирают, когда скорость и эффективность важнее надёжности. Для видеозвонка или игры это разумно: запоздавший пакет проще пропустить, чем ждать его повторной отправки.
Почему TCP внутри TCP тормозит
Страница FAQ OpenVPN Access Server формулирует просто: TCP meltdown возникает, когда TCP-трафик туннелируется поверх TCP. Оба уровня повторно отправляют потерянные пакеты и подстраиваются под повторы друг друга, из-за чего скорость падает.
Картина такая. Браузер открывает обычное TCP-соединение и, потеряв пакет, отправляет его заново. Если туннель тоже идёт по TCP, то же самое делает и он, причём независимо и со своими таймерами. Оба слоя реагируют на одну потерю, и очередь забивается лишними копиями.
По UDP повторяет только внутренний слой: сам туннель ничего не пересылает. Поэтому документация и рекомендует UDP для туннеля.
OpenVPN: TCP или UDP, что лучше выбрать в профиле
Справочник OpenVPN 2.6 фиксирует значения по умолчанию: протокол udp, порт 1194, закреплённый за OpenVPN в IANA. Другой транспорт задаётся опцией proto в профиле, и профиль должен совпадать с сервером. Сообщество OpenVPN отдельно напоминает, что пространства портов UDP и TCP раздельны: открытый на сервере UDP-порт ничего не говорит о TCP.
Когда TCP всё же имеет смысл? FAQ Access Server называет его запасным вариантом для строгих сетей, где UDP ограничен или закрыт, и сообщает, что по умолчанию профили Access Server сначала пробуют UDP. Порядок разумный и для ручной настройки: начинайте с UDP, а к TCP переходите, когда UDP не проходит, и считайтесь с возможным падением скорости.
Что настроить, если выбрали UDP
По справочнику, mssfix уменьшает размеры TCP-сегментов, чтобы получившиеся UDP-пакеты не превышали предел, а fragment режет большие UDP-датаграммы, добавляет служебные данные и работает только с proto udp. Если рукопожатие проходит, а крупные пакеты пропадают, смотрите на эти две опции.
Что настроить, если выбрали TCP
Проверьте, что сервер действительно слушает TCP-порт из профиля, и учтите, что опция fragment вам не нужна: она относится только к UDP. Обрывы по таймеру контролируют keepalive и ping-restart, как и на UDP.
Как выбирать по ситуации
Решение складывается из трёх вопросов, и ответ на каждый не зависит от остальных.
- Что поддерживает протокол. У WireGuard выбора нет: по его описанию, все пакеты идут по UDP. У OpenVPN выбирают в профиле.
- Пропускает ли ваша сеть UDP. Если нет, остаётся TCP как запасной вариант, а какая именно сеть что пропускает, проверяется только на месте.
- Что вы запускаете через туннель. Для игр и звонков, где важны низкие задержки, подходит UDP; игровые и стриминговые сценарии разобраны на страницах ВПН для игр и VPN для стриминга.
Транспорт у разных протоколов
Nebula Link продаёт ключи на VLESS, поэтому у сервиса есть свой интерес в выборе транспорта. Здесь пересказана только документация; сравнения скорости мы не публикуем, замеров нет.
Текст подготовлен брендом Nebula Link с помощью ИИ на основе перечисленных документов.
- OpenVPN: UDP по умолчанию, TCP по выбору в профиле.
- WireGuard: только UDP.
- Shadowsocks: по описанию проекта, работает и с TCP, и с UDP.
- VLESS: сам транспорт не навязывает. В документации Xray перечислены способы передачи raw (по умолчанию), XHTTP, mKCP, gRPC, WebSocket, HTTPUpgrade и Hysteria, и выбор делается в настройках подключения.
Как начать с VLESS через Telegram-бот
У Nebula Link нет отдельной программы: ключ работает в бесплатных клиентах с поддержкой VLESS, а транспорт выбирается в клиенте. Установка по шагам описана в материале как подключить ВПН, клиенты под системы собраны на странице скачать ВПН.
- Откройте Telegram-бот @owlink_service_bot - получите персональный VLESS-ключ и 10 дней можно не платить.
- Поставьте бесплатный клиент с поддержкой VLESS и импортируйте ключ из буфера обмена.
- На любом тарифе одновременно работают до 5 устройств.