Быстрый старт transports Обновлено 8 Все платформы

TUIC QUIC: как работает транспорт поверх UDP

Разбор принципов работы TUIC на базе QUIC поверх UDP: роль TLS, настройка параметров и пошаговая диагностика клиента, сервера, сети и DNS.

TUICQUICUDPTLSтранспорт
Содержание
КороткоTUIC — это прокси-протокол, работающий поверх UDP с помощью QUIC. QUIC инкапсулирует TLS 1.3, обеспечивая мультиплексирование, контроль перегрузки и миграцию соединений. Для настройки важны token, UUID, сертификаты и параметры конгестии. При проблемах проверяйте UDP-доступность, корректность DNS, статус TLS-сертификата и совпадение секретов.

Что такое TUIC и почему QUIC поверх UDP?

TUIC — это прокси-протокол, спроектированный для обхода сетевых ограничений и обеспечения стабильного соединения в нестабильных сетях. В отличие от многих прокси, TUIC использует не TCP, а UDP в качестве транспорта. Поверх UDP работает протокол QUIC, который добавляет надёжность, контроль перегрузки и шифрование на уровне транспортного канала.

QUIC сочетает в себе возможности TCP (надёжная доставка, управление потоком) и TLS 1.3 (шифрование данных), но при этом работает на базе UDP. Это позволяет TUIC быстрее устанавливать соединение, мигрировать между Wi-Fi и мобильной сетью без разрыва и уменьшать задержки за счёт 0-RTT-рукопожатия.

Для пользователя это значит, что TUIC-клиент подключается к серверу по UDP-порту, все данные внутри защищены TLS. Такой подход делает протокол устойчивым к глубокой инспекции пакетов и позволяет обходить многие виды блокировок.

Как работает TUIC поверх UDP: роль QUIC и TLS

TUIC использует QUIC как транспортный уровень. QUIC сам по себе решает задачи:

  • Установление соединения за 1 RTT (или 0 RTT при повторном подключении).
  • Мультиплексирование потоков — несколько логических соединений внутри одного UDP-потока.
  • Встроенное шифрование и аутентификация с помощью TLS 1.3.
  • Устойчивость к потере пакетов и контроль перегрузки.

Поверх QUIC TUIC добавляет собственную логику аутентификации пользователя. На сервере создаётся токен, который клиент передаёт при подключении. Этот токен проверяется в рамках TLS-сессии. Важно понимать, что TUIC не использует традиционный TLS-порт 443, а поднимает свой QUIC-UDP-порт, обычно нестандартный (например, 18000).

С точки зрения сети все пакеты TUIC выглядят как обычный UDP-трафик, инкапсулированный в QUIC. Сервер слушает UDP-порт, принимает QUIC-соединения, дешифрует TLS и передаёт трафик дальше. Такое взаимодействие почти не оставляет характерных следов для DPI, особенно если использовать конгестион-контроль BBR или Cubic.

Основные параметры TUIC на стороне клиента и сервера

Для настройки TUIC нужно знать ключевые параметры. На сервере, как правило, используются:

  • listen — адрес и UDP-порт, который слушает сервер.
  • token — секретная строка для аутентификации клиентов.
  • certificate — путь к сертификату TLS (в формате PEM).
  • private_key — закрытый ключ TLS.
  • congestion_control — алгоритм управления перегрузкой (например, bbr, cubic).
  • log_level — уровень логирования.

На клиенте параметры зависят от используемого приложения (sing-box, NekoBox, оригинальный TUIC-клиент). Общий набор:

  • server — IP или домен сервера.
  • server_port — UDP-порт, который слушает сервер.
  • uuid — идентификатор пользователя (в некоторых версиях TUIC v5).
  • password или token — тот же токен, что и на сервере.
  • congestion_control — может совпадать с сервером.
  • udp_relay_mode — режим ретрансляции UDP (например, native).
  • zero_rtt_handshake — включение 0-RTT, если требуется.

В официальной документации TUIC (GitHub) можно найти актуальные параметры для каждой версии. Обязательно сверяйтесь с версией вашего клиента, так как синтаксис может меняться.

Пошаговая настройка TUIC: сервер и клиент

Настройка TUIC не требует специфических сложных действий, но важно выполнить шаги по порядку.

1. Подготовка сервера

Скачайте и скомпилируйте TUIC-сервер с официального репозитория. Установите сертификат TLS (например, с помощью Let's Encrypt). Создайте конфигурационный файл сервера, указав порт, токен, сертификаты и параметры конгестии. Запустите сервер с проверкой логов.

2. Настройка клиента

В выбранном клиенте добавьте новое подключение TUIC. Укажите адрес и UDP-порт сервера, а также токен и UUID (если требуются). При необходимости включите 0-RTT и выберите алгоритм управления перегрузкой. Для защиты от блокировок можно настроить обфускацию на уровне UDP, если это предусмотрено клиентом.

3. Проверка подключения

Сначала проверьте сеть на сервере: доступен ли UDP-порт (например, командой nc -u -v itls.example.com 18000). Затем используйте клиент, чтобы подключиться к серверу. Смотрите логи клиента и сервера. Если рукопожатие проходит успешно, можно переходить к использованию.

Диагностика и устранение неполадок: клиент, сервер, сеть, DNS

Типичные проблемы с TUIC возникают из-за сетевых ограничений или неправильной конфигурации. Разберём диагностику по четырём уровням.

Клиент

Убедитесь, что клиент настроен правильно: URL-адрес, порт, токен, UUID. Проверьте версию протокола — если сервер поддерживает только TUIC v1, а клиент пытается использовать v5, соединение не установится. Логи клиента часто показывают ошибку TLS-рукопожатия или неверный токен.

Сервер

Проверьте, что сервер запущен и слушает UDP-порт. Команда ss -ulpn | grep 18000 покажет, слушается ли порт. Посмотрите логи сервера на предмет ошибок аутентификации или TLS. Убедитесь, что сертификат валиден и не истёк, а закрытый ключ соответствует сертификату.

Сеть

QUIC требует, чтобы UDP-пакеты не блокировались файерволом или провайдером. Проверьте, что правила iptables/nftables разрешают входящие UDP-пакеты на порту TUIC. Можно протестировать UDP-соединение с клиента на сервер через nc -u. Если UDP не проходит, TUIC не заработает.

DNS

Если вы используете доменное имя для подключения, убедитесь, что DNS-записи корректны и не отравлены. Некоторые провайдеры блокируют домены по IP. Рекомендуется использовать DoH/DoT на клиенте для защиты DNS. Проверьте резолвинг домена с помощью dig +short yourdomain.example.

Типичные ошибки и как их избежать

Мы собрали несколько частых ошибок, которые допускают пользователи TUIC.

  • Несоответствие токена или UUID между клиентом и сервером — всегда проверяйте правописание и пробелы.
  • Использование TCP-порта вместо UDP — TUIC работает именно на UDP, не перепутайте.
  • Неверный путь к сертификату или использование самоподписанного сертификата без добавления в доверенные на клиенте.
  • Включение 0-RTT без поддержки на сервере — может привести к сбоям рукопожатия.
  • Блокировка UDP на файерволе — обязательно открывайте нужный порт.
  • Игнорирование рекомендаций по конгестии — для высоких скоростей используйте BBR на Linux-сервере.

Чтобы исключить эти проблемы, проверяйте конфигурации по официальному репозиторию TUIC и не стесняйтесь включать лог-вывод на обоих концах.

Заключение

TUIC — это современный прокси-протокол, который использует QUIC поверх UDP для быстрого и стабильного подключения. Понимание роли TLS и QUIC помогает правильно настраивать клиенты и серверы, а системная диагностика по уровням (клиент, сервер, сеть, DNS) позволяет быстро находить неполадки. Всегда сверяйтесь с официальной документацией, так как протокол активно развивается.

Проверено на практике

  • Дата проверки: 2025-04-08
  • Среда: TUIC-сервер из исходников (ревизия 1.0.0) и клиенты sing-box, NekoBox
  • Версии: TUIC 1.0.0+, sing-box 1.10+

Мини-чеклист

  • Проверьте, что UDP-порт TUIC открыт на сервере и доступен из интернета (например, с помощью nc -u).
  • Убедитесь, что токен и UUID совпадают на клиенте и сервере.
  • Активируйте логирование и просмотрите сообщения об ошибках на обеих сторонах.
  • Проверьте, что TLS-сертификат валиден, не истёк и соответствует домену.
  • Настройте DNS на клиенте для использования DoH, чтобы избежать отравления DNS.
  • Откройте UDP-порт в файерволе, если соединение не проходит.
  • Сравните используемые параметры с актуальной документацией TUIC.

Частые ошибки

  • Несоответствие токена или UUID между клиентом и сервером
  • Использование TCP-порта вместо UDP
  • Самоподписанный сертификат без импорта в доверенные
  • Блокировка UDP-трафика на файерволе
  • Включение 0-RTT без поддержки на сервере

Источники и документация

FAQ

Какой порт использует TUIC?

TUIC слушает UDP-порт, который указывается в конфигурации сервера (например, 18000). Порт может быть любым, но многие выбирают нестандартные номера для снижения вероятности блокировки.

Что такое QUIC и почему TUIC работает поверх UDP?

QUIC — это транспортный протокол, работающий поверх UDP. Он обеспечивает мультиплексирование, шифрование TLS 1.3 и контроль перегрузки. TUIC использует QUIC для повышения скорости и устойчивости соединения.

Нужно ли мне открывать UDP-порт на сервере?

Да. Для работы TUIC необходимо, чтобы UDP-порт, который слушает сервер, был открыт в файерволе и доступен из интернета.

Как отличить проблемы с DNS от проблем с сетью?

Проверьте резолвинг домена через dig или nslookup. Если IP-адрес возвращается, но подключение не работает, проблема скорее всего в UDP-блокировке. Если DNS не резолвится, используйте DoH/DoT.

Какие алгоритмы конгестии можно использовать в TUIC?

Обычные варианты — cubic и bbr. BBR рекомендуется для сетей с потерями пакетов. Убедитесь, что алгоритм поддерживается на сервере и клиенте.

Хотите перейти сразу к рабочему доступу?

Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.

Получить доступ

Дальше по теме

Связанные статьи