Кратко — скорее всего не проблема самого VLESS/Reality-кода, а сети оператора (блокировка/переписывание/CGNAT/IPv6-only/MTU/APN и т.д.). Когда Android-прокси не устанавливается, весь трафик идёт в туннель и «интернета нет», поэтому нужно пошагово выяснить, где теряется соединение.
Что проверить (пошагово)
1) Проверить, доходит ли вообще TCP-пакет до сервера
- С мобильного (в Termux или с компьютера в мобильной сети) попробуйте простое подключение по TCP к порту сервера:
- openssl s_client -connect your.domain:443 -servername your.domain
- или curl -v https://your.domain:443/ (замените порт/домен)
- На сервере смотрите, приходят ли SYN-пакеты:
- sudo tcpdump -n -i any host <IP_клиента_или_ваш_домен> and port <порт>
Если SYN не приходит — блокировка/маршрутизация со стороны оператора (или DNS указывает не туда).
2) Посмотрите логи Xray/VLESS/Reality на сервере и клиента
- На сервере: journalctl -u xray -f (или /var/log/xray.log), включите debug-уровень логов временно.
- На клиенте включите debug-логи в Streisand/Amnezia/V2Ray и посмотрите ошибку (timeout, handshake failed, connection reset и т.д.).
Если на сервере нет записей, клиент не доходит до сервера.
3) DNS и адреса
- На мобильном проверьте, на какой IP резолвится ваш домен (nslookup/dig).
- Проверьте, нет ли у оператора перехвата DNS (резолвит в IP оператора).
- Если мобильная сеть — IPv6-only (часто бывает), а сервер только IPv4, соединение не пройдет. Уточните IP-адрес клиента (whatismyip) и APN settings.
4) Порт и SNI/Host
- Многие операторы блокируют нестандартные порты. Попробуйте временно поставить слушание на 443 и протестировать.
- xHTTP использует Host header / SNI — убедитесь, что SNI/host выглядит как легитимный домен, и что оператор не переписывает HTTP-заголовки.
5) CGNAT / APN / tethering
- Некоторые APN блокируют VPN/прокси. Проверьте настройки APN (тип APN, протокол IPv4/IPv6).
- Попробуйте другой APN (если доступно) или попросите оператора убрать ограничения.
6) MTU / PMTUD
- На мобильных сетях часто падает MSS/PMTU, из‑за чего большие пакеты теряются и соединение «виснет». На сервере временно включите MSS-clamping:
- sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Это частая причина когда соединение устанавливается, но данные не идут.
7) Проверка с альтернативным транспортом
- Для отладки временно включите на сервере простой TLS (nginx/пустой https) на том же домене/порте и попробуйте подключиться с мобильного. Если простой HTTPS проходит, значит проблема в конфигурации xHTTP/Reality; если нет — в сети.
8) Подозрительные вещи для Reality/xHTTP
- Reality использует специфический handshake и fake SNI. Операторы могли научиться его детектировать/блокировать. Попробуйте:
- сменить порт на 443 и использовать легитимный SNI/host,
- или временно переключиться на plain TLS/VLESS для теста.
Полезные команды (пример)
- На сервере:
- sudo ss -tunlp | grep xray
- sudo tcpdump -n -i any port 443
- sudo journalctl -u xray -f
- sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
- На телефоне (Termux):
- curl -v --resolve your.domain:443:<IP> https://your.domain:443/
- ping / traceroute (если доступны)
- busybox nslookup your.domain
Что помочь вам дальше
Если хотите — пришлите:
- вывод client log при попытке подключиться (debug),
- вывод server log в момент попытки,
- результат tcpdump (пару секунд) или заметки: приходит ли SYN, есть ли ответ,
- какая сеть/оператор и APN- настройки, IP-набор клиента (IPv4 или IPv6).
С этими данными смогу точнее подсказать, где именно «обрывается» соединение и какие настройки менять.