No description
  • Shell 70.1%
  • Batchfile 29.9%
Find a file
2026-10-23 20:11:18 +03:00
configSocksHttp.yaml Обновить configSocksHttp.yaml 2026-09-29 00:23:39 +03:00
configTun.yaml Обновить configTun.yaml 2026-09-30 22:45:00 +03:00
README.md Обновить README.md 2026-09-30 22:48:18 +03:00
run.bat для Виндовс 2026-10-03 16:42:28 +03:00
run.sh For Linux 2026-10-23 20:11:18 +03:00

Пример конфигурации клиента

server: example.com:443

auth: Password
tls:
  sni: example.com
  # insecure: false

# ----------- Для тоннеля ----------- 
tun:
  name: hytun
  mtu: 1400
  address:
    ipv4: 100.100.100.101/30
    ipv6: "2001::ffff:ffff:ffff:fff1/126"
  route:
    ipv4: [0.0.0.0/0]
    ipv6: ["2000::/3"]
    ipv4Exclude:
      - 0.0.0.0/32
# ----------- Для тоннеля ----------- 

# ----------- Скорость ----------- 
bandwidth: 
  up: 20 mbps
  down: 100 mbps

# ----------- Скорость ----------- 

# ----------- Socks5h ----------- 
socks5:
  listen: 127.0.0.1:1080
# ----------- Socks5h ----------- 

# ----------- Http ----------- 
http:
  listen: 127.0.0.1:1080
# ----------- Http ----------- 

Полная конфигурация клиента

Примечание: в конфигурации часто используется «селектор типа»:

example:
  type: a
  a:
    something: something
  b:
    something: something

type определяет активный режим и обрабатываемое подполе. Если выбран a, блоки b и c игнорируются.

Адрес сервера

server — адрес сервера Hysteria в виде host:port или просто host. Если порт не указан, используется 443.

server: example.com

Можно указать URI Hysteria 2. В таком случае пароль и часть других параметров уже содержатся в URI и отдельно в YAML их указывать не нужно.

server: hysteria2://user:[email protected]/

Поддерживается URI Hysteria Realms для подключения к серверу в P2P-режиме:

server: realm://[email protected]/your-realm-name

Realm

Тонкая настройка Hysteria Realms. Все параметры необязательны.

realm:
  stunServers:
    - stun.nextcloud.com:3478
    - global.stun.twilio.com:3478
  stunTimeout: 5s
  punchTimeout: 5s
  insecure: false
  ipMode: dual
  portMapping:
    enabled: false
    timeout: 10s
    lifetime: 10m
  • stunServers — STUN-серверы для определения публичного UDP-адреса клиента.
  • stunTimeout — таймаут запроса к отдельному STUN-серверу.
  • punchTimeout — максимальное время ожидания успешного UDP hole punching.
  • insecure — отключает проверку TLS rendezvous-сервера с самоподписанным сертификатом; предназначено только для разработки.
  • ipMode — семейство IP для NAT traversal: dual, v4 или v6.
  • portMapping.enabled — попытка создать UPnP/NAT-PMP port mapping на шлюзе.
  • portMapping.timeout — таймаут одной операции с роутером.
  • portMapping.lifetime — время аренды проброса порта; продлевается автоматически.

Аутентификация

auth: some_password

Если сервер использует аутентификацию userpass, формат должен быть таким:

auth: username:password

TLS

tls:
  sni: another.example.com
  insecure: false
  pinSHA256: BA:88:45:17:A1...
  ca: custom_ca.crt
  clientCertificate: client.crt
  clientKey: client.key
  ech: AEz+DQBIAAAg...
  • sni — имя для TLS-проверки. Если не указано, извлекается из server.
  • insecure — отключает проверку TLS-сертификата.
  • pinSHA256 — SHA-256 fingerprint сертификата сервера.
openssl x509 -noout -fingerprint -sha256 -in your_cert.crt
  • ca — пользовательский CA-сертификат.
  • clientCertificate и clientKey — клиентский сертификат и ключ для mTLS.
  • ech — ECH config list от сервера в base64 либо путь к файлу с ним. ECH должен быть включён и на сервере.

Транспорт

Секция transport задаёт базовый транспорт QUIC. Сейчас доступен только UDP.

transport:
  type: udp
  udp:
    hopInterval: 30s

Либо можно задать случайный интервал смены портов:

transport:
  type: udp
  udp:
    minHopInterval: 15s
    maxHopInterval: 45s

Нельзя одновременно указывать hopInterval и пару minHopInterval/maxHopInterval. Если ничего не указано, используется hopInterval: 30s.

Обфускация

По умолчанию Hysteria похожа на HTTP/3. Если сеть блокирует QUIC/HTTP3, но не UDP целиком, можно включить обфускацию.

  • salamander превращает пакеты в случайные байты.
  • gecko — экспериментальная надстройка над Salamander, дополнительно фрагментирующая QUIC handshake-пакеты.

Пароль должен совпадать с серверным. Неправильный пароль проявится как таймаут подключения.

Salamander

obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

Gecko

obfs:
  type: gecko
  gecko:
    password: cry_me_a_r1ver
    minPacketSize: 512
    maxPacketSize: 1200

maxPacketSize должен быть не меньше minPacketSize и не больше 2048.

Параметры QUIC

quic:
  initStreamReceiveWindow: 8388608
  maxStreamReceiveWindow: 8388608
  initConnReceiveWindow: 20971520
  maxConnReceiveWindow: 20971520
  maxIdleTimeout: 30s
  keepAlivePeriod: 10s
  disablePathMTUDiscovery: false
  disableChromeParrot: false
  sockopts:
    bindInterface: eth0
    fwmark: 1234
    fdControlUnixSocket: ./test.sock
  • initStreamReceiveWindow, maxStreamReceiveWindow — начальное и максимальное окно приёма QUIC-потока.
  • initConnReceiveWindow, maxConnReceiveWindow — начальное и максимальное окно приёма QUIC-соединения.
  • maxIdleTimeout — период отсутствия пакетов, после которого соединение считается неактивным.
  • keepAlivePeriod — частота keepalive-пакетов.
  • disablePathMTUDiscovery — отключает Path MTU Discovery.
  • disableChromeParrot — отключает имитацию QUIC fingerprint Google Chrome.
  • sockopts.bindInterface — принудительная отправка QUIC через указанный Linux-интерфейс.
  • sockopts.fwmark — SO_MARK для QUIC-пакетов на Linux.
  • sockopts.fdControlUnixSocket — Unix socket для передачи файлового дескриптора QUIC-сокета другому процессу.

Значения окон по умолчанию — 8 MiB на поток и 20 MiB на соединение. Документация не рекомендует менять их без необходимости; при изменении рекомендуется сохранять пропорцию 2:5.

При включённой имитации Chrome параметры Chrome переопределяют часть настроек: maxIdleTimeout фиксируется на 30 секундах, а receive windows стартуют со значений Chrome. Сертификат Ed25519 в этом режиме не сможет завершить handshake; используйте ECDSA или RSA. v2.hysteria

Mimic

mimic маскирует соединение под TCP. Работает только на Linux и требует установленный mimic, его kernel module и запуск Hysteria с правами root.

mimic:
  enabled: true
  interface: eth0
  xdpMode: skb
  path: /usr/bin/mimic
  extraArgs: []
  • enabled должен совпадать на клиенте и сервере.
  • interface — интерфейс, к которому подключается XDP; по умолчанию определяется автоматически.
  • xdpMode — native или skb.
  • path — путь к бинарнику mimic.
  • extraArgs — дополнительные параметры процесса mimic.

Mimic несовместим с port hopping и отключает UDP GSO, уменьшая пропускную способность. v2.hysteria

Управление перегрузкой

congestion:
  type: bbr
  bbrProfile: standard

Поддерживаются:

  • bbr — Google BBR v1, значение по умолчанию.
  • reno — New Reno.

Профили BBR:

  • standard
  • conservative
  • aggressive

Настройка локальна: она не согласовывается с сервером по протоколу. Она используется, если для соответствующего направления не выбран Brutal через bandwidth.

Полоса пропускания

bandwidth:
  up: 100 mbps
  down: 200 mbps
  disableLossCompensation: false
  • up — лимит исходящего трафика клиента.
  • down — лимит входящего трафика клиента.
  • Наличие значения up или down определяет применение Brutal congestion control в соответствующем направлении.
  • disableLossCompensation: true отключает компенсацию потерь у Brutal.

Если нужен BBR/Reno вместо Brutal, удали соответствующее поле скорости или весь блок bandwidth.

Поддерживаемые единицы:

bps, b
kbps, kb, k
mbps, mb, m
gbps, gb, g
tbps, tb, t

Не устанавливай скорость выше реальной пропускной способности соединения: это вызывает перегрузку, потери пакетов и нестабильность. Реальная скорость ограничивается меньшим значением между лимитом клиента и соответствующим лимитом сервера. v2.hysteria

Fast Open

fastOpen: true

Позволяет сэкономить один RTT, но меняет семантику SOCKS5/HTTP proxy: клиент принимает входящее соединение до подтверждения, что сервер может открыть целевое соединение.

Lazy

lazy: true

Клиент не подключается к серверу сразу при запуске, а ждёт первого входящего соединения от включённого режима. Это полезно при нестабильной сети во время старта системы или если прокси используется редко.

SOCKS5

socks5:
  listen: 127.0.0.1:1080
  username: user
  password: pass
  disableUDP: false

SOCKS5 поддерживает TCP и UDP.

HTTP-proxy

http:
  listen: 127.0.0.1:8080
  username: king
  password: kong
  realm: martian

Поддерживаются HTTP и HTTPS через CONNECT.

Начиная с Hysteria 2.4.1, SOCKS5 и HTTP могут одновременно слушать один порт, если их listen совпадают. v2.hysteria

TCP forwarding

tcpForwarding:
  - listen: 127.0.0.1:6600
    remote: 127.0.0.1:6600
  - listen: 127.0.0.1:6601
    remote: other.machine.internal:6601

listen — локальный адрес на клиенте, remote — адрес, доступный с сервера или его сети.

UDP forwarding

udpForwarding:
  - listen: 127.0.0.1:5300
    remote: 127.0.0.1:5300
    timeout: 20s
  - listen: 127.0.0.1:5301
    remote: other.machine.internal:5301
    timeout: 20s

timeout — время жизни неактивной UDP-сессии. По умолчанию — 60s.

TCP TProxy

Только Linux. Режим прозрачного проксирования TCP.

tcpTProxy:
  listen: :2500

UDP TProxy

Только Linux. Режим прозрачного проксирования UDP.

udpTProxy:
  listen: :2500
  timeout: 20s

Если timeout не указан, используется 60s.

TCP Redirect

Старый Linux-способ прозрачного TCP-проксирования через REDIRECT. Если ядро поддерживает TPROXY, рекомендуется TPROXY.

tcpRedirect:
  listen: :3500

Пример iptables:

iptables -t nat -N HYSTERIA
iptables -t nat -A HYSTERIA -d 0.0.0.0/8 -j RETURN
iptables -t nat -A HYSTERIA -d 10.0.0.0/8 -j RETURN
iptables -t nat -A HYSTERIA -d 127.0.0.0/8 -j RETURN
iptables -t nat -A HYSTERIA -d 169.254.0.0/16 -j RETURN
iptables -t nat -A HYSTERIA -d 172.16.0.0/12 -j RETURN
iptables -t nat -A HYSTERIA -d 192.168.0.0/16 -j RETURN
iptables -t nat -A HYSTERIA -d 224.0.0.0/4 -j RETURN
iptables -t nat -A HYSTERIA -p tcp -j REDIRECT --to-ports 3500
iptables -t nat -A OUTPUT -p tcp -j HYSTERIA
iptables -t nat -A PREROUTING -p tcp -j HYSTERIA

TUN

TUN — кроссплатформенный режим прозрачного проксирования для Windows, Linux и macOS. Hysteria создаёт виртуальный сетевой интерфейс, настраивает адреса и маршруты, затем перехватывает TCP/UDP-трафик.

В отличие от WireGuard/OpenVPN, TUN Hysteria не поддерживает ICMP и другие не-TCP/UDP протоколы. Например, ping через него не проходит.

tun:
  name: hytun
  mtu: 1500
  timeout: 5m
  address:
    ipv4: 100.100.100.101/30
    ipv6: 2001::ffff:ffff:ffff:fff1/126
  route:
    ipv4: [0.0.0.0/0]
    ipv6: ["2000::/3"]
    ipv4Exclude: [192.0.2.1/32]
    ipv6Exclude: ["2001:db8::1/128"]
  • name — имя TUN-интерфейса.
  • mtu — MTU интерфейса, по умолчанию 1500.
  • timeout — UDP idle timeout, по умолчанию 5m.
  • address.ipv4, address.ipv6 — адреса интерфейса; выбери приватные адреса, не конфликтующие с LAN.
  • route.ipv4, route.ipv6 — сети, направляемые в TUN.
  • route.ipv4Exclude, route.ipv6Exclude — исключения из TUN-маршрутизации.

В ipv4Exclude и/или ipv6Exclude обязательно нужно добавить IP-адрес Hysteria-сервера, иначе получится петля: пакет к самому серверу тоже уйдёт в TUN и соединение перестанет работать.

Например, если сервер доступен по IPv4 203.0.113.10:

tun:
  name: hytun
  address:
    ipv4: 100.100.100.101/30
  route:
    ipv4: [0.0.0.0/0]
    ipv4Exclude: [203.0.113.10/32]

На Linux иногда требуется отключить строгий reverse path filtering:

sysctl net.ipv4.conf.default.rp_filter=2
sysctl net.ipv4.conf.all.rp_filter=2

Известные ограничения:

ОС Особенность
macOS Имя интерфейса должно соответствовать формату utun<number>, например utun123
Windows Server 2022 Для работы требуется отключить Windows Firewall
CentOS 7 Требуется отключить firewall; на ядрах ниже 4.17 автоматически добавляемые маршруты работают некорректно
FreeBSD Не поддерживается