TUIC timeout: как отличить блокировку UDP от неверного профиля
Пошаговая диагностика для определения причины таймаута TUIC: блокировка UDP провайдером или ошибка в профиле. Практические советы и команды.
Содержание
Что такое 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 от неверного профиля, следуйте этой последовательности:
- Проверьте общее интернет-соединение. Убедитесь, что вы вообще можете открывать сайты через обычное TCP-соединение. Это поможет исключить полное отсутствие сети.
- Проверьте DNS-резолвинг имени сервера. Выполните
pingилиnslookup. Если имя не резолвится, исправьте DNS. - Проверьте доступность сервера на уровне TCP. Если вы используете порт, который обычно TCP-порт (например, 443), можно попробовать подключиться через telnet или nc:
nc -vz. Если TCP-соединение устанавливается, но TUIC по-прежнему даёт таймаут, это указывает на возможную блокировку UDP. - Проверьте, слушает ли сервер нужный 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.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ