В обзоре протоколов, глоссарии Clash и заметках о Hysteria и VLESS явно указано, что переключатель «VPN», «Режим VPN» или «VPN mode» в приложениях включает именно TUN — виртуальный сетевой интерфейс. Подпись на кнопке разная, механизм один; на мобильных он вообще неотделим от подключения. Отдельно оговорено, что похожесть не равна тождеству: при TUN заворачивается весь трафик системы, но протокол под ним остаётся прокси — клиент лишь сам собирает соединения из перехваченных IP-пакетов, поэтому ICMP через туннель по-прежнему не проходит. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
13 KiB
| date | tags | aliases | link | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-07-11 |
|
|
https://v2.hysteria.network/docs/getting-started/Client/ |
🦎 Hysteria 2 — конфиг клиента
[!info] О чём заметка Как настроить клиентскую часть Hysteria 2 на своём устройстве: адрес сервера, пароль, локальный SOCKS5/HTTP-прокси и режим TUN (полноценный VPN-туннель). Серверную часть нужно поднять заранее — см. Hysteria/config-server. Полный справочник по всем полям — в официальной документации Full Client Config.
TL;DR
- Клиент — тот же бинарник
hysteria, запускается в режиме клиента (./hysteriaили./hysteria client). Конфиг —config.yamlрядом с бинарником. - Минимум:
server(адрес вашего сервера),auth(пароль с сервера) и хотя бы один режим —socks5илиhttp(локальный прокси). bandwidthвключает алгоритм Hysteria/bandwidth-brutal. Ставьте значения ЧУТЬ НИЖЕ реальной скорости канала — завышение только вредит.- Для самоподписанного сертификата на сервере — на клиенте
tls.insecure: trueвместе сtls.pinSHA256(проверка отпечатка защищает от подмены). - Начиная с версии 2.4.1 SOCKS5 и HTTP можно повесить на один порт — просто задайте им одинаковый
listen. - TUN-режим превращает клиент в системный VPN (заворачивает весь трафик), работает на Windows, Linux, macOS.
Базовый конфиг: SOCKS5 + HTTP прокси
Самый частый сценарий — поднять локальный прокси, который приложения (браузер и т.д.) используют для выхода через ваш сервер.
server: your.domain.net:443
auth: Se7RAuFZ8Lzg
bandwidth:
up: 20 mbps
down: 100 mbps
socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080
Поля:
server— адрес сервера в форматеhost:port(порт по умолчанию 443, можно опустить). Вместо этого можно вставить готовый URIhysteria2://...— тогда пароль и часть настроек уже внутри URI, и отдельно их не указывают.auth— пароль, заданный на сервере. Если сервер используетuserpass-аутентификацию, форматusername:password.bandwidth— заявленная скорость канала, включает Brutal. Подробно — Hysteria/bandwidth-brutal.socks5.listen/http.listen— на каком локальном адресе поднять прокси.127.0.0.1— доступ только с этого же устройства.
[!tip] SOCKS5 и HTTP на одном порту С версии 2.4.1 клиент умеет отдавать оба протокола на одном порту: пропишите и
socks5, иhttp, и укажите им одинаковыйlisten(например, оба127.0.0.1:1080). Тогда приложение может подключаться к этому порту как по SOCKS5, так и по HTTP.
[!note] IPv6-адрес сервера берите в кавычки Некоторые значения конфликтуют с синтаксисом YAML. Например, IPv6-адрес с портом (
[2001:db8::1]:443) сломает разбор файла. Оборачивайте такие значения в кавычки:server: "[2001:db8::1]:443".
Настройка скорости (bandwidth)
Секция bandwidth определяет, использовать ли Brutal — фирменный алгоритм Hysteria, который держит фиксированную скорость и не проседает при потерях пакетов. Если секцию убрать, клиент возьмёт обычный контроль перегрузки (по умолчанию BBR).
[!warning] Больше — не значит лучше Не завышайте
bandwidthвыше реальной пропускной способности вашего канала. Brutal попытается «выжать» указанную скорость независимо от потерь — если задать больше, чем канал тянет, это ударит по вам же: перегрузка, нестабильность, потеря данных. Ставьте значения чуть НИЖЕ реального максимума. Механика подробно разобрана в Hysteria/bandwidth-brutal.
TLS для самоподписанного сертификата
Если сервер использует валидный сертификат (через Hysteria/config-server), секция tls на клиенте не нужна. Она требуется, только если сертификат самоподписанный.
Лучший вариант — не отключать проверку полностью, а закрепить отпечаток сертификата:
tls:
insecure: true
pinSHA256: BA:88:45:17:A1...
insecure: trueотключает стандартную проверку доверия (иначе самоподписанный сертификат будет отвергнут).pinSHA256закрепляет SHA-256 отпечаток сертификата сервера. Это возвращает защиту: клиент соединится, только если отпечаток совпал, — так атака «человек посередине» не пройдёт.
Отпечаток можно получить из файла сертификата: openssl x509 -noout -fingerprint -sha256 -in your_cert.crt.
[!danger] Не используйте
insecureв одиночкуinsecure: trueбезpinSHA256делает соединение уязвимым к подмене (MITM): клиент примет любой сертификат, в том числе подставленный провайдером или цензором. Если сертификат самоподписанный — всегда добавляйтеpinSHA256. А ещё лучше — используйте валидный сертификат через ACME и вообще не трогайтеinsecure.
Альтернатива — указать доверенный CA-файл вместо отключения проверки: tls: { ca: ca.crt }.
TUN-режим — системный VPN
SOCKS5/HTTP-прокси заворачивают только те приложения, которые настроены на прокси. TUN-режим создаёт виртуальный сетевой интерфейс и перехватывает трафик всей системы — это то, что в интерфейсах других клиентов обычно и подписано как «режим VPN». Работает на Windows, Linux и macOS.
Важно не спутать похожесть с тождеством: заворачивается весь трафик, но сам Hysteria 2 остаётся protocols/00-overview, а не VPN. Он по-прежнему переносит отдельные TCP- и UDP-соединения, просто теперь клиент сам собирает их из перехваченных IP-пакетов. Отсюда и ограничение ниже: ICMP через TUN не проходит.
server: your.domain.net:443
auth: Se7RAuFZ8Lzg
tun:
name: "hytun"
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"]
[!danger] Обязательно исключите адрес сервера из маршрутов В
ipv4Exclude/ipv6Excludeдобавьте IP вашего Hysteria-сервера (в примере192.0.2.1/32— замените на реальный). Иначе трафик до самого сервера пойдёт в туннель, который идёт через этот же сервер, — получится петля маршрутизации, и соединение не поднимется.
Особенности TUN: он умеет только TCP и UDP (не проксирует ICMP, то есть ping через туннель не пойдёт). На macOS имя интерфейса должно быть вида utunN (например, utun123). На FreeBSD TUN не поддерживается.
[!note] Для Linux-шлюза есть альтернатива — TPROXY TUN — самый простой способ прозрачного проксирования и работает на всех ОС. Но если вы строите шлюз/роутер на Linux, который заворачивает трафик всей локальной сети, традиционный выбор — Hysteria/tproxy: он работает через правила фаервола, а не виртуальный интерфейс.
Запуск клиента
./hysteria # клиент — режим по умолчанию, config.yaml подхватится сам
./hysteria -c whatever.yaml # произвольное имя конфига
Windows: можно просто дважды кликнуть по .exe, если рядом лежит config.yaml.
Признак успеха — в логах строка «connected to server» без ошибок. Клиент также выведет строку «use this URI to share your server» с готовым URI hysteria2://... — его удобно вставлять в другие клиенты как значение server (пароль и часть настроек уже внутри). При проблемах с подключением — Hysteria/troubleshooting.
[!note] Для новичков в прокси SOCKS5/HTTP-прокси нужно ещё «подключить» в приложении. Для браузера удобно расширение ZeroOmega (Chrome/Firefox): в нём указываете адрес прокси (
127.0.0.1:1080) и переключаете профили.
📚 См. также
- Hysteria/config-server — серверную часть надо настроить до клиента.
- Hysteria/bandwidth-brutal — как правильно выставить
bandwidth. - Hysteria/obfs-port-hopping — если провайдер режет UDP/QUIC.
- Hysteria/tproxy — для Linux-шлюза на всю сеть.
- Hysteria/realms-nat — подключение к серверу без белого IP.
- Hysteria/troubleshooting — расшифровка ошибок подключения.
- 🔗 Client tutorial · Full Client Config
[!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: исходник этой заметки · весь репозиторий.