Диагностика и исправление Диагностика Обновлено 5 Windows, Android, iOS, macOS, Linux

TUIC timeout: как отличить блокировку UDP от неверного профиля

Пошаговая диагностика для определения причины таймаута TUIC: блокировка UDP провайдером или ошибка в профиле. Практические советы и команды.

TUICUDPQUICTimeoutДиагностикаНастройка
Содержание
КороткоTUIC работает по протоколу QUIC (поверх UDP). Если возникает timeout, важно определить, блокирует ли провайдер UDP или проблема в конфигурации. Проверьте доступность UDP-порта, корректность полей UUID, пароля, адреса и порта, а также логи клиента и сервера.

Что такое TUIC и почему возникает timeout

TUIC — это протокол проксирования, построенный на базе QUIC и TLS. Он использует UDP как транспортный протокол, что обеспечивает высокую скорость и низкую задержку, но делает его чувствительным к блокировкам UDP-трафика со стороны интернет-провайдеров или файрволов. Таймаут соединения — одна из самых частых проблем при использовании TUIC. Он проявляется в том, что клиент не может установить соединение с сервером, и через несколько секунд получает ошибку "timeout" или "connection failed". Важно правильно диагностировать причину: либо UDP-пакеты блокируются, либо конфигурация профиля содержит ошибки.

Как работает TUIC: UDP, QUIC и TLS

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

Типичные причины таймаута: блокировка UDP vs ошибки профиля

Причины таймаута TUIC можно разделить на две большие категории:

  • Блокировка UDP — провайдер или сетевой экран блокирует UDP-трафик на определённые порты или целиком. Это особенно распространено в странах с жёсткой интернет-цензурой. QUIC-соединение не может быть установлено, и клиент последовательно пытается подключиться, но не получает ответа.
  • Ошибки в профиле — неверно указаны адрес сервера, порт, UUID, пароль или параметры TLS. Если сервер недоступен по указанному адресу/порту, или учётные данные не совпадают, соединение также может истечь по таймауту. Однако в некоторых случаях сервер может сразу отбросить соединение (например, при неудачной аутентификации), но если имя сервера не разрешается через DNS, это тоже даст таймаут.

Пошаговая диагностика: с чего начать

Для того чтобы отличить блокировку UDP от неверного профиля, следуйте этой последовательности:

  1. Проверьте общее интернет-соединение. Убедитесь, что вы вообще можете открывать сайты через обычное TCP-соединение. Это поможет исключить полное отсутствие сети.
  2. Проверьте DNS-резолвинг имени сервера. Выполните ping или nslookup . Если имя не резолвится, исправьте DNS.
  3. Проверьте доступность сервера на уровне TCP. Если вы используете порт, который обычно TCP-порт (например, 443), можно попробовать подключиться через telnet или nc: nc -vz . Если TCP-соединение устанавливается, но TUIC по-прежнему даёт таймаут, это указывает на возможную блокировку UDP.
  4. Проверьте, слушает ли сервер нужный UDP-порт. С сервера выполните netstat -ulnp (Linux) или проверьте, что процесс запущен. Если порт не слушается, исправьте конфигурацию сервера.

Как проверить блокировку UDP

Существует несколько методов проверки доступности UDP-порта, которые помогут понять, блокируется ли UDP.

  • Использование netcat (nc) с опцией -u. На клиенте выполните: nc -u -vz . Однако эта команда не всегда корректно работает для UDP, так как netcat может не получить ответ. Лучше использовать -v и подождать. Если соединение не устанавливается и вы видите ошибку "Connection timed out", это может говорить о блокировке.
  • Использование nping (из Nmap). nping --udp -p — отправляет UDP-пакеты и показывает, получен ли ответ. Это более надёжный способ.
  • Временный UDP-сервер. Запустите на сервере простой UDP-эхо-сервер (например, через python -m pyftpdlib? нет, лучше использовать python -c ... или установить iperf3). Но для быстрого теста можно использовать socat - UDP-LISTEN: и подключиться с клиента.
  • Обратите внимание на настройки VLAN/сети. Если вы в корпоративной сети, администраторы могут блокировать UDP на фаерволе. Попробуйте использовать мобильный интернет или другую сеть.

Проверка профиля TUIC: клиентские параметры

Если UDP-порт доступен, проблема может быть в конфигурации. Основные поля профиля TUIC:

  • server — IP-адрес или домен сервера. Убедитесь, что он указан правильно и без лишних пробелов.
  • port — порт, на котором работает TUIC (обычно 443 или 8443). Проверьте, что он совпадает с портом на сервере.
  • uuid — идентификатор пользователя в формате UUID (например, 123e4567-e89b-12d3-a456-426614174000). Ошибка в одной букве/цифре приведёт к сбою аутентификации.
  • password — пароль, если он используется (в TUIC может быть пароль для дополнительной аутентификации).
  • sni — Server Name Indication для TLS. Если сервер ожидает определённое имя, оно должно совпадать с сертификатом.
  • alpn — список протоколов ALPN, например ["h3"]. Некоторые клиенты требуют точного совпадения.
  • udp_relay_mode — режим ретрансляции UDP (native, quic). Влияет на работу, но не на таймаут напрямую.
  • congestion_control — алгоритм контроля перегрузки (cubic, bbr). Не влияет на установку соединения.

Сравните свой профиль с образцом из документации TUIC или вашего клиента (Sing-box, NekoBox, etc.). Частая ошибка — неправильный формат UUID или неверный порт.

Проверка серверной части и логов

Если вы имеете доступ к серверу, проверьте логи TUIC (обычно в /var/log или в stdout). При ошибке аутентификации вы увидите соответствующие записи. Если лог пуст, возможно, пакеты не доходят до сервера — это указывает на блокировку UDP. Убедитесь, что процесс сервера запущен и слушает нужный порт. В Linux проверьте с помощью ss -ulpn | grep . Также убедитесь, что файрвол (iptables/nftables) разрешает входящие UDP-соединения.

Частые ошибки при настройке и диагностике

  • Путают TCP-порт и UDP-порт. TUIC работает только по UDP, поэтому порт должен быть открыт для UDP, а не только для TCP.
  • Используют неправильный SNI, не соответствующий сертификату сервера. Это вызывает сбой TLS и может выглядеть как таймаут.
  • Забывают обновить UUID или пароль после смены на сервере.
  • Не проверяют блокировку UDP на уровне сети. Иногда проблема в том, что провайдер режет UDP на всех портах, кроме 53 (DNS). Попробуйте изменить порт TUIC на нестандартный
  • Игнорируют логи клиента — там часто указана причина ошибки (например, "connection timeout", "handshake failed").

Заключение

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

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

  • Дата проверки: 2024-05-30
  • Среда: Windows 11, Android 13, iOS 17, Linux
  • Версии: TUIC v0.8.5, sing-box v1.9.0

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

  • Проверьте общее интернет-соединение и DNS
  • Проверьте доступность TCP-порта сервера
  • Используйте nc/nping для проверки UDP-порта
  • Сравните профиль с примером из документации
  • Проверьте логи сервера и клиента
  • Убедитесь, что UDP не блокируется файрволом или провайдером

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

  • Путают TCP и UDP порты
  • Используют неверный SNI или ALPN
  • Не обновляют UUID/пароль после смены
  • Игнорируют сообщения в логах
  • Не проверяют UDP-доступность до настроек конфигурации

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

FAQ

Как быстро понять, блокируется ли UDP на моей сети?

Используйте команду nping --udp -p <порт> <IP-адрес> и посмотрите, получаете ли ответ. Или запустите временный UDP-сервер на порту и попробуйте отправить данные с клиента. Если ответа нет, скорее всего, UDP блокируется.

Что делать, если TUIC сервер не отвечает, но TCP-порт открыт?

TCP и UDP независимы. Убедитесь, что сервер слушает UDP-порт (ss -ulpn), и что файрвол разрешает UDP. Попробуйте изменить порт на 443 или 53, так как некоторые сети блокируют нестандартные UDP-порты.

Может ли антивирус или VPN вызывать таймаут TUIC?

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

Как правильно заполнить поле SNI в профиле TUIC?

Поле SNI должно соответствовать домену, на который выпущен сертификат вашего сервера. Если вы используете IP-адрес, укажите IP, но тогда сертификат должен быть с IP SAN. Лучше использовать домен и правильно настроить DNS.

Нужен быстрый рабочий доступ?

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

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

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

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