Коротко — проблема почти наверняка не в протоколах (vless/vmess/trojan и т. д.) сама по себе, а в том, как мобильный оператор (МТС) определяет «доверенные» подключения: он смотрит на IP/ASN, TLS‑рукопожатие (SNI, сертификат, ALPN/JA3) и/или использует DPI и белые диапазоны. Поэтому простая подмена SNI у вашего сервера часто не помогает.
Почему дешёвый VPN проходит, а ваш сервер — нет — возможные причины
- Белые диапазоны IP/ASN. Рабочий VPN может использовать IP‑адреса в ASN/диапазонах, которые МТС явно разрешил (CDN, крупные провайдеры, «мобильные»/residential диапазоны). Hynet — дата‑центрный ASN, который у операторов обычно помечен как «потенциальный» провайдер VPN и блокируется/фильтруется.
- SNI + сертификат. Оператор может проверять не только SNI (имя в TLS), но и совпадение SNI с реальным сертификатом/известным CDNs. Если вы ставите SNI=eh.vk.com, но у вас сертификат для вашего домена, это выглядит «подозрительно». Некоторые операторы также сопоставляют SNI с IP (ожидают, что eh.vk.com будет резолвиться в IP VK).
- TLS‑фингерпринт (JA3), ALPN, ciphers. Обычные HTTPS‑клиенты имеют отличительный TLS‑рукопожатие; серверы в дата‑центре с «чужим» стэком могут иметь иной JA3/ALPN и это детектируется DPI.
- DPI/протокольный анализ. Некоторые операторы умеют распознавать VLESS/VMESS/XTLS/троян/шадовсоккс даже в TLS и блокируют такие сессии, если трафик не выглядит как обычный HTTPS.
- IPv6 vs IPv4 / CGNAT. На Hynet может быть только IPv6, или оператор по‑другому маршрутизует IPv6 мобильного трафика, из‑за чего соединение не проходит.
- Черный рейт/история IP. IP вашего сервера мог быть в блоклистах (shared blacklists), и МТС применяет дополнительные фильтры к таким адресам.
Как диагностировать (что можно сделать прямо сейчас)
1) Узнать ASN и гео IP вашего сервера:
- whois <IP> или https://ipinfo.io/<IP>
- посмотрите ASN и провайдера — если это дата‑центр (ASXXXX), это первый знак.
2) Проверить TLS с SNI, как это увидит клиент:
- openssl s_client -connect <IP>:443 -servername eh.vk.com
Посмотрите, какой сертификат приходит. Если не eh.vk.com — оператор это увидит и, возможно, заблокирует.
3) Сравнить рабочий VPN и ваш сервер:
- Получите IP рабочего VPN и выполните те же проверки (whois, openssl). Часто видно, что у рабочего VPN — CDN/крупный ASN.
4) Проверить доступность с мобильной сети:
- С мобильного через LTE попробуйте ping/traceroute/mtr к вашему IP и к IP рабочего VPN. Сравните разницу в маршруте/потерях/latency.
Что реально помогает (решения)
1) Использовать «белый» CDN/ресурс в качестве фронта (рекомендуемый путь)
- Поставьте свой сервис за CDN (Cloudflare) или используйте Cloudflare Tunnel / Argo / Spectrum. Тогда входящие соединения будут идти на IP CDN (ASNs, которые операторы обычно разрешают), а CDN уже проксирует к вам.
- Для vless/vmess/trojan: запускайте протокол поверх WebSocket или HTTP/2 + TLS и делайте DNS на ваш домен, включите проксирование (orange cloud) в Cloudflare. Клиент подключается по домену и порт 443 — для оператора это обычный HTTPS к Cloudflare.
- Минус: для некоторых типов трафика Cloudflare может потребоваться платный тариф (Spectrum) или наличие WebSocket‑совместимого режима; но часто websocket+tls хватает.
2) Использовать nginx/http reverse proxy + websocket
- На сервере поставить nginx с валидным сертификатом (Let's Encrypt) на ваш домен. Проксировать websocket endpoint к backend (v2ray/xtls/trojan-go). Тогда TLS, сертификат, SNI будут «человеческими», трафик будет похож на HTTPS.
- Это часто проходит проверку у мобильных операторов.
3) Подобрать «правильный» IP/ASN
- Перенести сервер в провайдер/хостинг, чей ASN/диапазоны не блокирует МТС (например, крупные CDN/хостинги). Или попросить Hynet выдать IP из другого диапазона (мало вероятно).
- Использовать residential/ISP proxies или VPS в ASN, которые мобильный оператор не блокирует.
4) Маскировка TLS/фингерпринта
- Настроить ALPN=h2,http/1.1, поддерживать современные cipher suites — чтобы TLS‑рукопожатие выглядело как у браузера. Некоторые клиенты (trojan-go, v2ray+websocket+tls) уже близки к обычному HTTPS.
- Полная подгонка JA3/JA3S сложна и ненадёжна.
5) Если ничего не помогает — использовать уже работающий провайдер
- Иногда проще купить доступ к проверенному провайдеру, который использует рабочие IP/CDN.
Практический план действий (что советую сделать прямо сейчас)
1) Проверьте ASN вашего IP и сравните с IP рабочего VPN (whois/ipinfo).
2) Запустите на вашем домене nginx с Let's Encrypt и проксируйте websocket на ваш v2ray/trojan. Настройте клиент на WS+TLS, SNI = ваш домен.
3) Если есть возможность, подключите ваш домен к Cloudflare (orange cloud) и тестируйте подключение через него.
4) Проверьте соединение с мобильной сети после каждого шага; если после проксирования через nginx/Cloudflare всё заработало — причина была в IP/сертификате/TLS‑фингерпринте.
Могу помочь лично
Если хотите, пришлите:
- IP вашего Hynet‑сервера + ASN (или я подскажу, как посмотреть),
- IP или пример SNI/сертификат работающего VPN (если можете),
- конфигурацию того, как вы сейчас запускаете сервер (например, v2ray/trojan config, как вы ставите SNI/WS/tls).
Я покажу конкретную конфигурацию nginx + v2ray/trojan (или настройку Cloudflare) шаг за шагом.
Если нужно — дам пример конфигурации nginx + v2ray-websocket + TLS/Let's Encrypt и клиентские настройки, которые чаще всего проходят у мобильных операторов.