All checks were successful
Published content check / validate (push) Successful in 3s
В обзоре протоколов, глоссарии Clash и заметках о Hysteria и VLESS явно указано, что переключатель «VPN», «Режим VPN» или «VPN mode» в приложениях включает именно TUN — виртуальный сетевой интерфейс. Подпись на кнопке разная, механизм один; на мобильных он вообще неотделим от подключения. Отдельно оговорено, что похожесть не равна тождеству: при TUN заворачивается весь трафик системы, но протокол под ним остаётся прокси — клиент лишь сам собирает соединения из перехваченных IP-пакетов, поэтому ICMP через туннель по-прежнему не проходит. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
149 lines
13 KiB
Markdown
149 lines
13 KiB
Markdown
---
|
||
date: 2026-07-11
|
||
tags:
|
||
- hysteria
|
||
- конфигурация
|
||
- клиент
|
||
- socks5
|
||
- tun
|
||
aliases:
|
||
- Конфиг клиента Hysteria 2
|
||
- Hysteria client config
|
||
- Hysteria SOCKS5 TUN
|
||
link: https://v2.hysteria.network/docs/getting-started/Client/
|
||
---
|
||
|
||
# 🦎 Hysteria 2 — конфиг клиента
|
||
|
||
> [!info] О чём заметка
|
||
> Как настроить клиентскую часть Hysteria 2 на своём устройстве: адрес сервера, пароль, локальный SOCKS5/HTTP-прокси и режим TUN (полноценный VPN-туннель). Серверную часть нужно поднять заранее — см. [[Hysteria/config-server|Конфиг сервера]]. Полный справочник по всем полям — в [официальной документации Full Client Config](https://v2.hysteria.network/docs/advanced/Full-Client-Config/).
|
||
|
||
## TL;DR
|
||
|
||
- Клиент — тот же бинарник `hysteria`, запускается в режиме клиента (`./hysteria` или `./hysteria client`). Конфиг — `config.yaml` рядом с бинарником.
|
||
- Минимум: `server` (адрес вашего сервера), `auth` (пароль с сервера) и хотя бы один режим — `socks5` или `http` (локальный прокси).
|
||
- **`bandwidth`** включает алгоритм [[Hysteria/bandwidth-brutal|Brutal]]. Ставьте значения ЧУТЬ НИЖЕ реальной скорости канала — завышение только вредит.
|
||
- Для **самоподписанного** сертификата на сервере — на клиенте `tls.insecure: true` вместе с `tls.pinSHA256` (проверка отпечатка защищает от подмены).
|
||
- Начиная с версии 2.4.1 SOCKS5 и HTTP можно повесить на **один порт** — просто задайте им одинаковый `listen`.
|
||
- **TUN-режим** превращает клиент в системный VPN (заворачивает весь трафик), работает на Windows, Linux, macOS.
|
||
|
||
## Базовый конфиг: SOCKS5 + HTTP прокси
|
||
|
||
Самый частый сценарий — поднять локальный прокси, который приложения (браузер и т.д.) используют для выхода через ваш сервер.
|
||
|
||
```yaml
|
||
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, можно опустить). Вместо этого можно вставить готовый URI `hysteria2://...` — тогда пароль и часть настроек уже внутри 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|заметке про Brutal]].
|
||
|
||
## TLS для самоподписанного сертификата
|
||
|
||
Если сервер использует валидный сертификат (через [[Hysteria/config-server|ACME]]), секция `tls` на клиенте не нужна. Она требуется, только если сертификат самоподписанный.
|
||
|
||
Лучший вариант — не отключать проверку полностью, а закрепить отпечаток сертификата:
|
||
|
||
```yaml
|
||
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 не проходит.
|
||
|
||
```yaml
|
||
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|прозрачный прокси через TPROXY]]: он работает через правила фаервола, а не виртуальный интерфейс.
|
||
|
||
## Запуск клиента
|
||
|
||
```bash
|
||
./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](https://github.com/zero-peak/ZeroOmega) (Chrome/Firefox): в нём указываете адрес прокси (`127.0.0.1:1080`) и переключаете профили.
|
||
|
||
## 📚 См. также
|
||
|
||
- [[Hysteria/config-server|Конфиг сервера]] — серверную часть надо настроить до клиента.
|
||
- [[Hysteria/bandwidth-brutal|Скорость и Brutal]] — как правильно выставить `bandwidth`.
|
||
- [[Hysteria/obfs-port-hopping|Обфускация и port hopping]] — если провайдер режет UDP/QUIC.
|
||
- [[Hysteria/tproxy|Прозрачный прокси (TPROXY)]] — для Linux-шлюза на всю сеть.
|
||
- [[Hysteria/realms-nat|Realms: сервер за NAT]] — подключение к серверу без белого IP.
|
||
- [[Hysteria/troubleshooting|Решение проблем]] — расшифровка ошибок подключения.
|
||
- 🔗 [Client tutorial](https://v2.hysteria.network/docs/getting-started/Client/) · [Full Client Config](https://v2.hysteria.network/docs/advanced/Full-Client-Config/)
|
||
|
||
---
|
||
|
||
> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
|
||
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/Hysteria/config-client.md) · [весь репозиторий](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main).
|