Текстовые каналы работают, друзья онлайн, но при входе в голосовой канал Discord бесконечно крутит RTC Connecting, а потом падает в No Route. Или вас слышно, а вы не слышите никого. Или связь рвётся каждые двадцать секунд.
Почему голос ломается первым
Текст и голос в Discord ездят по совершенно разным маршрутам и на разных протоколах.
Текстовые сообщения идут по TCP, через постоянное WebSocket-соединение с гейтвеем — тот же самый TLS на 443-м порту, что и обычный сайт. Голос идёт по UDP, напрямую к голосовым узлам Discord, на порты из широкого диапазона (примерно 50000–65535), в виде RTP-потока внутри WebRTC.
Для DPI это два совершенно разных объекта. Зашифрованный TCP-поток к 443-му порту выглядит как любой другой HTTPS. А UDP-поток с RTP-заголовками к голосовому узлу — это отдельный, легко узнаваемый профиль трафика, который не спрячешь за «обычный сайт». Поэтому его отсекают в первую очередь: голос перестаёт работать раньше, чем ломается сам чат.
Что означают конкретные ошибки
- RTC Connecting — клиент получил адрес голосового узла и пытается установить UDP-сессию. Пакеты уходят, ответы не приходят.
- No Route — клиент сдался: маршрут до голосового сервера не построился. Классический признак того, что UDP до узла не доходит.
- Awaiting Endpoint — не получен даже адрес узла: сломано соединение с гейтвеем, то есть проблема шире голоса.
- Вас слышно, вас не слышно — часть потока проходит, часть режется. Обычно это уже не блокировка, а NAT или потери на канале.
Отдельная ловушка: VPN, который не пропускает UDP
Это причина, по которой люди с включённым VPN всё равно сидят в No Route. Если ваш туннель не проксирует UDP — а так ведут себя многие HTTP- и SOCKS-прокси, а также браузерные расширения «VPN» — то текстовый Discord через него поедет, а голос нет. Клиент будет честно пытаться отправить UDP-пакеты мимо туннеля, в открытую сеть, где их и отсекут.
Отсюда практическое требование: протокол должен уметь пробрасывать UDP. VLESS с Reality это умеет — голосовой трафик уходит в тот же зашифрованный канал, что и всё остальное, и до голосового узла Discord доезжает целиком.
Как проверить
Сначала посмотрите, доходит ли до вас хотя бы сам Discord: откройте страницу проверки — она из вашего браузера постучится в discord.com и в CDN. Если красным горит уже сайт, разбираться с голосом рано: у вас заблокирован Discord целиком.
Если сайт зелёный, а голос не подключается, порядок такой:
- зайдите в голосовой канал с мобильного интернета вместо Wi-Fi (и наоборот) — если где-то работает, дело точно в фильтрации у одного из каналов;
- проверьте, включён ли у вас VPN и умеет ли он UDP: если голос не работает только с включённым туннелем, вы нашли причину;
- в настройках Discord отключите
Enable Quality of Service High Packet Priority— этот флаг помечает пакеты QoS-меткой, и часть провайдеров такие пакеты обрабатывает отдельно; - смените голосовой регион в настройках сервера — маршрут до другого узла может оказаться целее.
Что помогает
Стабильно работает один сценарий: полное туннелирование трафика через протокол, который пропускает UDP и при этом не распознаётся DPI. В этом случае голосовой поток от клиента до узла Discord идёт внутри одного зашифрованного соединения, и разобрать его на RTP-пакеты, чтобы отсечь, уже нельзя.
Наши серверы работают на VLESS + Reality с проксированием UDP — голосовые каналы, демонстрация экрана и стримы в Discord поднимаются без дополнительной настройки.