todo/Hysteria/config-client.md
loop-uh e4049ceeac
All checks were successful
Published content check / validate (push) Successful in 3s
TUN-режим: отметить, что это и есть «VPN» из интерфейсов клиентов
В обзоре протоколов, глоссарии Clash и заметках о Hysteria и VLESS явно указано,
что переключатель «VPN», «Режим VPN» или «VPN mode» в приложениях включает
именно TUN — виртуальный сетевой интерфейс. Подпись на кнопке разная, механизм
один; на мобильных он вообще неотделим от подключения.

Отдельно оговорено, что похожесть не равна тождеству: при TUN заворачивается
весь трафик системы, но протокол под ним остаётся прокси — клиент лишь сам
собирает соединения из перехваченных IP-пакетов, поэтому ICMP через туннель
по-прежнему не проходит.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 16:08:43 +03:00

149 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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).