HYSTERIA 2 работает плохо и вовсе не подключается через мобильный интернет — какие изменения в конфигурации нужно внести?

Не понимаю, в чём ошибка. Предполагаю, что провайдер может блокировать порт-хоппинг, но прошу помощи — возможно, я некорректно настроил сервер. Мой VPS: 1 поток, 1 ГБ ОЗУ; на сервере используется self-sni. Ниже — моя конфигурация: <br/> { <br/> "listen": "", <br/> "port": 15973, <br/> "protocol": "hysteria", <br/> "tag": "in-15973-udp", <br/> "settings": { <br/> "clients": [ <br/> { <br/> "auth": "00000000000000", <br/> "email": "try", <br/> "limitIp": 0, <br/> "totalGB": 0, <br/> "expiryTime": 0, <br/> "enable": true, <br/> "tgId": 0, <br/> "subId": "000000000000", <br/> "comment": "", <br/> "reset": 0, <br/> "created_at": 0000000000000, <br/> "updated_at": 0000000000000 <br/> } <br/> ], <br/> "version": 2 <br/> }, <br/> "sniffing": { <br/> "enabled": true, <br/> "destOverride": [ <br/> "http", <br/> "tls", <br/> "quic", <br/> "fakedns" <br/> ] <br/> }, <br/> "streamSettings": { <br/> "network": "hysteria", <br/> "hysteriaSettings": { <br/> "version": 2, <br/> "udpIdleTimeout": 60 <br/> }, <br/> "security": "tls", <br/> "tlsSettings": { <br/> "serverName": "{myselfsniserver}.duckdns.org", <br/> "minVersion": "1.2", <br/> "maxVersion": "1.3", <br/> "cipherSuites": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", <br/> "rejectUnknownSni": false, <br/> "disableSystemRoot": false, <br/> "enableSessionResumption": true, <br/> "certificates": [ <br/> { <br/> "certificateFile": "/etc/letsencrypt/live/makinggoodsoutofwood.duckdns.org/fullchain.pem", <br/> "keyFile": "/etc/letsencrypt/live/makinggoodsoutofwood.duckdns.org/privkey.pem", <br/> "oneTimeLoading": false, <br/> "usage": "encipherment", <br/> "buildChain": true, <br/> "useFile": true <br/> } <br/> ], <br/> "alpn":
  • 2 июня 2026 г. 17:01
Ответы на вопрос 1
Короткий ответ — скорее всего дело не в самой Hysteria, а в том, как мобильный оператор обращается с UDP (блокировка/фрагментация/NAT timeout) и/или в том, что сервер слушает нестандартный порт/интерфейс и TLS-SNI не «маскирует» трафик как HTTPS. Что можно и стоит сделать прямо сейчас:

Общие рекомендованные изменения в конфигурации (Xray/V2Ray + hysteria)
- Явно слушать на всех интерфейсах:
  "listen": "0.0.0.0"
- Использовать UDP-порт, который мобильный оператор с большей вероятностью пропускает — 443 (UDP) или 8443:
  "port": 443
  (Не забудьте открыть порт в iptables/ufw/в панели провайдера и разрешить UDP.)
- В tlsSettings включить ALPN, имитирующий HTTPS:
  "alpn": ["h2", "http/1.1"]
  Это помогает обойти простую DPI-фильтрацию.
- Увеличить время UDP keep‑alive (чтобы не «падали» сессии из‑за NAT timeout):
  "hysteriaSettings": { "version": 2, "udpIdleTimeout": 300 }
  (300 сек — пример; можно выставить 300–600.)
- Проверить serverName и сертификат: serverName должен совпадать с доменом в сертификате (duckdns.org). Если вы делаете SNI‑spoofing/self‑sni, то продумайте логику rejectUnknownSni:
  - если вы обязуете клиентов шифровать SNI конкретным именем — поставить "rejectUnknownSni": true;
  - если хотите принимать любые SNI — false (но это хуже с точки маскировки).
- Понизить MTU/избежать фрагментации (возможно): если есть опции client-side (hysteria client) — задать меньшую максимальную полезную нагрузку (примерно 1200–1350 байт), чтобы не было фрагментации по мобильной сети.

Пример минимально изменённых фрагментов (вставьте в ваш JSON):
- listen и port
  "listen": "0.0.0.0",
  "port": 443,
- hysteriaSettings
  "hysteriaSettings": {
    "version": 2,
    "udpIdleTimeout": 300
  },
- tlsSettings (включаем alpn и проверку SNI при необходимости)
  "tlsSettings": {
    "serverName": "makinggoodsoutofwood.duckdns.org",
    "alpn": ["h2", "http/1.1"],
    "minVersion": "1.2",
    "maxVersion": "1.3",
    "rejectUnknownSni": true,
    ...
  }

Что дополнительно проверить на сервере
- Что процесс слушает UDP на нужном порте:
  ss -u -lnp | grep :443   (или ваш порт)
- Что iptables/ufw/панель VPS разрешают UDP на этот порт:
  sudo iptables -L -n -v
- Сниффинг входящих пакетов при попытке подключиться с мобилки (на сервере):
  sudo tcpdump -n -i any udp port 443
  Это покажет, доходят ли UDP-пакеты до VPS.
- Логи xray/v2ray (journalctl -u xray -f или лог-файл) — есть ли ошибки TLS/handshake/authorization.
- Убедитесь, что certfificates корректны и путь к pem/privkey верный; можно перезапустить службу и смотреть ошибки старта.

Пробный план для диагностики
1) Подключитесь к серверу с Wi‑Fi/проводного интернета — работает ли Hysteria? Если да — проблема на стороне мобильного оператора.
2) На мобилке включите режим модема (раздача Wi‑Fi) и попробуйте подключить клиент — если через раздачу (AP hotspot) работает, но напрямую нет — оператор блокирует мобильный UDP.
3) Сделайте tcpdump при подключении с мобилки: если пакеты не доходят — оператор/маршрут блокирует.
4) Если пакеты доходят, но сессия не устанавливается — посмотрите логи сервера для детали (TLS mismatch, auth fail).

Если моб. оператор действительно блокирует UDP (и вы это подтвердили)
- Лучшее решение — иметь TCP/TLS fallback: запустить на том же домене ещё один слушатель TCP+TLS (vless/trojan/tcp) на 443 и переключаться на клиенте при неудаче. Hysteria не «перепрыгнёт» на TCP сама.
- Или использовать CDN/Cloudflare Spectrum/Reverse proxy, который проксирует UDP (не все CDN проксируют UDP; Cloudflare Spectrum платный).
- Можно также поставить Wireguard/SSH/VLESS(TCP) на 443 как резерв.

Про ресурсы VPS
- 1 vCPU/1 GB RAM обычно достаточно для небольших подключений, но если у вас высокий шифрованный трафик — CPU может быть узким местом (особенно с ChaCha20 vs ECDHE). Для диагностики начните с низкой нагрузки; если CPU 100% — думайте про апгрейд.

Если хотите, помогу дальше — пришлите:
- полные логи сервера (ошибки xray/hysteria) при попытке подключения с мобильного,
- вывод ss/tcpdump (что видно при попытке),
- клиентский конфиг и модель мобильного оператора (какой APN/имя оператора).
Похожие вопросы