НейроАгент

Telegram звонки не работают с VLESS+REALITY: полное решение

Полное решение проблемы с зависанием голосовых звонков в Telegram при использовании VLESS+REALITY VPN. Узнайте, как настроить маршрутизацию UDP-трафика и исправить соединение между устройствами.

Вопрос

Не работают звонки в Telegram при использовании VLESS+REALITY VPN: как решить проблему?

У меня есть сервер (провайдер aeza) с панелью 3X-UI, настроенной на протоколы VLESS, XTLS Vision и REALITY. В целом VPN работает стабильно: обходит блокировки, обеспечивает нормальное подключение к интернету. Однако последние несколько дней возникла проблема с голосовыми звонками в Telegram - они зависают на этапе “Соединение…” и не устанавливаются.

Ключевой момент: проблема возникает только при следующих условиях:

  • Оба устройства (телефоны или планшеты) подключены к моему VPN-серверу
  • Звонок между двумя мобильными устройствами не проходит

При этом:

  • Звонок с мобильного устройства на компьютер (подключенный к тому же VPN) работает нормально
  • Звонок проходит, если одно из устройств использует другой VPN (например, PaperVPN)

Я уже предпринял следующие шаги для решения проблемы:

  1. Настроил SOCKS-прокси
  2. Изменил режим передачи с TCP(RAW) на WebSocket и другие доступные варианты
  3. Включил функцию Sniffing
  4. Изменил Flow с xtls-rprx-vision на xtls-rprx-vision-udp443
  5. Пробовал различные варианты SNI, включая те, что должны работать с белыми списками
  6. Включил принудительное использование TCP в настройках Telegram

Ни одно из этих решений не помогло. Если кто-то сталкивался с подобной проблемой, пожалуйста, поделитесь опытом решения.

НейроАгент

VLESS+REALITY VPN конфигурация по умолчанию часто не обрабатывает UDP-трафик должным образом, что вызывает проблемы с голосовыми звонками в Telegram, так как они используют UDP для передачи данных. Эта проблема возникает, когда оба устройства подключены к одному и тому же VPN-серверу, потому что трафик между клиентами не проходит через правильные маршруты, а пытается соединиться напрямую по UDP.

Содержание


Основные причины проблемы

Проблема с голосовыми звонками в Telegram при использовании VLESS+REALITY VPN возникает из-за того, что:

  1. UDP-трафик не маршрутизируется правильно: Как указано в GitHub issue #3283, Telegram voice и video calls используют UDP под капотом, и стандартная конфигурация VLESS/Reality не всегда правильно обрабатывает этот трафик между клиентами.

  2. Прямое соединение между клиентами: Когда оба устройства подключены к одному VPN-серверу, Telegram пытается установить прямое UDP-соединение между ними, минуя сервер. Это вызывает зависание на этапе “Соединение…”.

  3. Отсутствие правильных правил маршрутизации: Без специальных правил трафик между клиентами может идти через стандартный интернет, а не через защищенный VPN-канал.

Интересно, что звонки с мобильного на компьютер работают, потому что десктопные клиенты Telegram могут использовать альтернативные методы связи, такие как TCP-туннелирование или WebRTC через TURN-серверы.


Решение через настройки маршрутизации в 3X-UI

Вам нужно настроить правильные правила маршрутизации в 3X-UI панели:

1. Настройка Outbounds

Перейдите в раздел Xray Configuration → Outbounds и убедитесь, что у вас есть правильные настройки:

json
{
  "tag": "direct",
  "protocol": "freedom",
  "settings": {}
}
json
{
  "tag": "proxy",
  "protocol": "vless",
  "settings": {
    "vnext": [
      {
        "address": "your-server-ip",
        "port": 443,
        "users": [
          {
            "id": "your-uuid",
            "encryption": "none",
            "flow": "xtls-rprx-vision"
          }
        ]
      }
    ]
  }
}

2. Правила маршрутизации (Routing Rules)

Это ключевой момент. В разделе Xray Configuration → Routing Rules добавьте следующие правила:

json
{
  "type": "field",
  "outboundTag": "proxy",
  "inboundTag": ["vless"],
  "network": ["udp"],
  "domain": ["domain:telegram.org", "domain:tdesktop.com"]
}

Также добавьте правило для принудительного использования TCP для всего Telegram трафика:

json
{
  "type": "field",
  "outboundTag": "proxy",
  "inboundTag": ["vless"],
  "network": ["tcp"],
  "domain": ["domain:telegram.org", "domain:tdesktop.com"]
}

3. Включение UDP support

В настройках вашего VLESS inbound убедитесь, что UDP включен:

  • Перейдите в Inbounds → ваш VLESS inbound
  • В разделе Stream убедитесь, что sockopt включает UDP:
json
{
  "sockopt": {
    "mark": 255,
    "tcpFastOpen": true,
    "udp": true
  }
}

Альтернативные методы исправления

1. Использование прокси для UDP трафика

Если стандартные маршруты не работают, попробуйте настроить SOCKS5 прокси специально для UDP:

  1. В 3X-UI создайте отдельный SOCKS5 inbound
  2. Настройте его для работы с UDP:
json
{
  "listen": "127.0.0.1",
  "port": 10808,
  "protocol": "socks",
  "settings": {
    "auth": "noauth",
    "udp": true,
    "ip": "127.0.0.1"
  }
}
  1. В Telegram настройте SOCKS5 прокси для звонков

2. Изменение режима работы VLESS

Попробуйте использовать режим xtls-rprx-vision вместо xtls-rprx-vision-udp443, но с дополнительными настройками:

json
{
  "flow": "xtls-rprx-vision",
  "settings": {
    "vnext": [
      {
        "address": "your-server-ip",
        "port": 443,
        "users": [
          {
            "id": "your-uuid",
            "encryption": "none",
            "flow": "xtls-rprx-vision"
          }
        ]
      }
    ]
  }
}

3. Использование WireGuard как дополнительного слоя

Добавьте WireGuard поверх вашего VLESS+REALITY соединения для лучшей обработки UDP:

bash
# Пример настройки WireGuard для UDP трафика
[Interface]
PrivateKey = your-private-key
Address = 10.0.0.2/24
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = server-public-key
Endpoint = your-server-ip:51820
AllowedIPs = 0.0.0.0/0

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

После внесения изменений выполните следующие проверки:

1. Проверка UDP соединения

Используйте ping или mtr для проверки UDP соединения между устройствами:

bash
# Проверка UDP доступности
nc -u -z -w2 your-server-ip 443

# Проверка маршрутизации
mtr --udp --tcp your-server-ip

2. Тестирование звонков

  1. Перезапустите Telegram на обоих устройствах
  2. Попробуйте совершить звонок между двумя мобильными устройствами
  3. Если проблема остается, проверьте логи сервера на наличие ошибок UDP

3. Анализ трафика

Используйте tcpdump для анализа UDP трафика:

bash
tcpdump -i any -n udp port 443 or udp port 80 or udp port 5228

Дополнительные рекомендации

1. Обновление 3X-UI и X-Ray

Убедитесь, что у вас установлена последняя версия 3X-UI и X-Ray core:

bash
# Обновление 3X-UI
bash <(curl -Ls https://github.com/MHSanaei/3x-ui/raw/main/install.sh)

2. Альтернативные протоколы

Если проблема не решается, рассмотрите альтернативные протоколы:

  • VMESS+REALITY: может лучше обрабатывать UDP трафик
  • Shadowsocks: работает отлично с UDP
  • Trojan+REALITY: поддерживает UDP natively

3. Профессиональные VPN-сервисы

Как временное решение, можно использовать PaperVPN или аналогичные сервисы для звонков, а основной трафик направлять через ваш VLESS+REALITY VPN.

Источники

  1. GitHub issue #3283: Telegram voice/video calls not working – how to enable UDP for my VLESS inbound?
  2. FASTVPS documentation: 3X-UI configuration
  3. SpaceCore WIKI: Installing 3X UI
  4. Hostkey documentation: 3X-UI Graphics Panel
  5. Reddit: VLESS Reality configuration issues

Заключение

Проблема с голосовыми звонками в Telegram при использовании VLESS+REALITY VPN является распространенной и связана с неправильной обработкой UDP-трафика между клиентами. Основные решения включают:

  1. Настройку правильных правил маршрутизации для принудительного прохождения всего Telegram трафика через VPN
  2. Включение UDP поддержки в настройках VLESS inbound
  3. Использование альтернативных протоколов или прокси для UDP трафика
  4. Обновление ПО до последних версий

Наиболее эффективным решением обычно является настройка правильных правил маршрутизации, которые заставляют весь Telegram трафик (включая UDP) проходить через VPN-сервер, а не пытаться установить прямые соединения между клиентами. Если проблема не решается, стоит рассмотреть использование альтернативных VPN-протоколов или профессиональных сервисов для голосовых звонков.