Кратко — такое поведение типично для проблем на UDP-слое/транспорте (Reality использует UDP-подобный канал и «незаметную» обфускацию), либо для ошибок/перегрузок сервера или багов в софте. Ниже — список вероятных причин и конкретные шаги для диагностики и устранения.
Возможные причины
- Потеря пакетов/фрагментация UDP по пути (ISP/маршрутизатор/файрвол блокирует или роняет фрагменты). Большие UDP‑пакеты могут теряться, тогда соединение «зависает», пока не произойдёт повторная установка или рестарт сессии.
- NAT/conntrack timeouts и отсутствие keepalive: NAT/маршрутизаторы закрывают UDP‑маппинг, и при попытке клиента продолжить трафик требуется повторный долгий хэндшэйк.
- Ограничение/фильтрация UDP со стороны провайдера (особенно мобильные сети, CGNAT, DPI/Rate limiting).
- Ошибки/баги в xray/v2ray/3x‑ui (старые версии, несовместимость с реалити‑реализацией) — иногда появляются «зависания» при определённых версиях.
- Перегрузка сервера (CPU, диск, сеть) — пакеты не обрабатываются вовремя.
- Неправильная конфигурация reality (несоответствие серверного/клиентского публичных ключей, server name/short id и т. п.), из‑за чего периодически происходит повторный хэндшэйк.
- Проблемы с MTU/TSO/GSO/GRO на сервере/клиенте — приводят к плохой фрагментации UDP‑пакетов.
- DNS (иногда браузер «виснет» из‑за DNS, особенно при проксировании через proxy chain).
Что проверить и как диагностировать (порядок действий)
1. Обновление
- Обновите xray/v2ray-core и 3x-ui до последних стабильных версий (часто баги уже исправлены).
2. Логи
- Включите debug/trace уровень логирования на клиенте и сервере и воспроизведите проблему. Ищите сообщения об ошибках reality/handshake, таймаутах, packet lost.
- systemctl status/ journalctl -u xray -f (или где у вас ведутся логи 3x-ui).
3. Проверка пакетов/потерь
- Сделайте mtr (или traceroute) к серверу с проблемного клиента, проверьте потерю на промежуточных узлах.
- Запустите tcpdump на сервере: tcpdump -i any udp and port <порт_reality> -w cap.pcap — посмотреть, идут ли пакеты в момент «зависания». Если клиент шлёт, а сервер не отвечает — проблема на сервере/фаерволе. Если пакетов нет — проблема сети/клиента.
- iperf3 UDP тест между клиентом и сервером для оценки потерь/джиттера.
4. Проверка нагрузки
- top, htop, iostat, iftop/ntop на сервере — нет ли spikes CPU/IO/сети в момент залипания.
5. Firewall / NAT / conntrack
- Убедитесь, что UDP‑порт открыт в iptables/nftables, что нет limit/conntrack‑правил, которые закрывают мэппинги быстро.
- При подозрении на NAT timeout — попробуйте настроить частые keepalive или уменьшить idle timeout на клиенте/сервере.
6. MTU / offload
- Попробуйте временно уменьшить MTU (на клиенте и/или сервере), отключить GRO/TSO/GSO (иногда решает проблему with UDP fragmentation).
Пример: ethtool -K eth0 gro off gso off tso off
- Или уменьшите размер сегментов у приложения (если есть настройка).
7. Тест альтернативных трансопртов
- Временно переключите профиль на WebSocket/TCP (или другой transport). Если проблема исчезает — это явно указывает на проблемы с UDP/Reality в сети/сервере.
8. Проверить конфигурацию Reality
- Убедиться, что ключи (server_short_id, private/public keys, server name) на сервере и клиенте совпадают и не используются некорректно.
- Проверить параметры времени жизни/handshake в конфиге.
Что можно попробовать как быстрые решения
- Обновить xray/3x-ui.
- Включить keepalive (если есть) или уменьшить интервал re-handshake.
- Переключиться на WebSocket/TLS на порту 443 как fallback для клиентов, у которых проблемы.
- Отключить offload (GRO/TSO/GSO) на серверном интерфейсе (часто помогает при фрагментации UDP).
- Уменьшить MTU (например, 1400) и проверить.
Какие данные пришлите — чем быстрее найдём причину
- Логи xray (server и client) за время зависания (debug).
- Выдержки tcpdump (pcap) во время инцидента.
- Версии xray/3x-ui, схема сети (сервер: VPS провайдер/тип сети, клиент: мобиль/домашний провайдер).
- Конфигурация streamSettings/reality (без приватных ключей — публичные ключи и server_name/short_id хватит).
Если хотите — пришлите логи (лог уровня debug) и короткую конфигурацию сервера/клиента (без приватных ключей), я помогу проанализировать и предложить точечные правки.