Своя Hysteria 2: развёртывание и настройка из терминала
Hysteria 2 можно установить через готовые панели управления, однако ручной вариант лучше помогает понять, что именно происходит на сервере. Во время настройки приходится работать с SSH, исполняемыми файлами, сетевыми портами, конфигурациями и правилами межсетевого экрана. Эти навыки пригодятся не только для Hysteria 2, но и при развёртывании Nginx, WireGuard, Docker и других сервисов в Linux.
Перед началом убедитесь, что использование прокси разрешено законодательством вашей страны, правилами хостинг-провайдера и политиками организации. В статье рассматривается связка Debian/Ubuntu. В системах семейства RHEL команды `apt` потребуется заменить на аналогичные команды `dnf`.
Что понадобится
Для работы нужен VPS с виртуализацией KVM и статическим IPv4-адресом. Конкретного провайдера выбирать не обязательно: важнее, чтобы сервер имел стабильный внешний адрес, поддерживал UDP и позволял настраивать правила сетевого доступа.
Желательно использовать свежую версию Debian или Ubuntu. Минимальных ресурсов обычно достаточно для самого сервиса, но точные требования зависят от числа подключений и особенностей маршрутизации трафика. Также проверьте, что провайдер не блокирует входящие UDP-соединения.
Подключение к серверу выполняется по SSH:
```bash
ssh root@IP_АДРЕС
```
При первом соединении клиент спросит, нужно ли сохранить отпечаток сервера. Введите `yes`, после чего укажите пароль, выданный хостинг-провайдером. Если соединение не устанавливается, проверьте, завершилось ли создание VPS, правильность IP-адреса и доступность порта 22.
Защищаем SSH-доступ
Постоянная работа под паролем повышает риск перебора. Лучше заранее создать пару SSH-ключей на локальном компьютере:
```bash
ssh-keygen -t ed25519
```
Если парольная фраза не нужна, можно несколько раз нажать Enter. В выбранной директории появятся закрытый ключ `ed25519` и открытый `ed25519.pub`. Никому не передавайте закрытый ключ: его компрометация позволит войти на сервер.
Содержимое файла `ed25519.pub` необходимо добавить в файл авторизованных ключей пользователя root:
```bash
mkdir -p /root/.ssh
chmod 700 /root/.ssh
nano /root/.ssh/authorized_keys
```
Вставьте публичный ключ отдельной строкой, сохраните файл и задайте корректные права:
```bash
chmod 600 /root/.ssh/authorized_keys
```
Теперь откройте конфигурацию SSH:
```bash
nano /etc/ssh/sshd_config
```
Проверьте или измените следующие параметры:
```text
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
```
Последняя настройка запрещает вход root по паролю, но оставляет возможность авторизации с помощью ключа. Перед отключением паролей обязательно откройте второе окно терминала и убедитесь, что вход по ключу работает:
```bash
ssh -i ~/.ssh/ed25519 root@IP_АДРЕС
```
После успешной проверки перезапустите SSH:
```bash
systemctl restart ssh
```
Если новая сессия открывается без пароля, базовая защита готова. В случае ошибки не закрывайте старое подключение, пока не исправите конфигурацию.
Устанавливаем Hysteria 2
Сначала обновим список пакетов и установим необходимые инструменты:
```bash
apt update
apt install -y ufw wget
```
Исполняемый файл Hysteria 2 скачивается из официального репозитория проекта. Конкретное имя архива и URL зависят от актуальной версии и архитектуры системы, поэтому выбирайте подходящий релиз для `amd64` или `arm64`.
После загрузки переместите бинарный файл в системный каталог:
```bash
mv hysteria /usr/local/bin/hysteria
chmod +x /usr/local/bin/hysteria
```
Проверьте, что программа запускается:
```bash
hysteria version
```
Hysteria 2 написана на Go и обычно распространяется как статически собранный бинарник. Это упрощает установку: не требуется отдельно загружать многочисленные библиотеки или компилятор. Однако совместимость зависит не только от приложения, но и от ядра, сетевой подсистемы и корректно открытых портов.
Конфигурация сервера
Hysteria 2 поддерживает YAML, JSON и TOML. Для ручной настройки удобно использовать YAML или TOML: такие форматы легче читать и редактировать. Создадим отдельный каталог:
```bash
mkdir -p /etc/hysteria
nano /etc/hysteria/server.yaml
```
Минимальная серверная конфигурация должна включать порт, сертификат, пароль и параметры маскировки. Пример структуры:
```yaml
listen: :443
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key
auth:
type: password
password: "СЛОЖНЫЙ_ПАРОЛЬ"
masquerade:
type: proxy
proxy:
url: https://example.com
rewriteHost: true
```
Вместо самоподписанного сертификата желательно использовать сертификат для собственного домена. Если домена нет, применяются другие варианты, но клиентская конфигурация в таком случае потребует дополнительной настройки проверки сертификата. Пароль должен быть длинным, случайным и не использоваться в других сервисах.
В разных версиях Hysteria 2 синтаксис отдельных параметров может отличаться, поэтому перед запуском проверьте конфигурацию встроенной командой:
```bash
hysteria server -c /etc/hysteria/server.yaml check
```
Если проверка проходит, создайте системный сервис.
Запуск через systemd
Файл службы:
```bash
nano /etc/systemd/system/hysteria-server.service
```
Пример:
```ini
[Unit]
Description=Hysteria 2 Server
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/hysteria server -c /etc/hysteria/server.yaml
Restart=on-failure
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
```
Активируем службу:
```bash
systemctl daemon-reload
systemctl enable --now hysteria-server
```
Проверить состояние можно так:
```bash
systemctl status hysteria-server
journalctl -u hysteria-server -e
```
Журнал особенно полезен, если сервис не запускается из-за ошибки в YAML, отсутствующего сертификата или занятого порта.
Ограничиваем входящие подключения
По умолчанию VPS может принимать соединения на большом количестве портов. Оставлять такую поверхность атаки без необходимости не стоит. Настроим UFW:
```bash
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 443/udp
ufw enable
```
Если SSH работает на другом порту, замените `22`. До включения UFW убедитесь, что правило для SSH добавлено, иначе текущая сессия может стать последней.
Проверить правила:
```bash
ufw status verbose
```
Hysteria 2 использует UDP, поэтому разрешение только TCP-порта 443 недостаточно. Это одна из наиболее частых причин, по которым установленный сервер оказывается недоступен.
Клиентская сторона
На клиентском устройстве создаётся конфигурация с адресом сервера, портом, паролем и параметрами TLS. Упрощённый пример:
```yaml
server: your-domain.example:443
auth: СЛОЖНЫЙ_ПАРОЛЬ
tls:
sni: your-domain.example
socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080
```
SOCKS5 обычно используется приложениями, которые умеют работать с прокси напрямую. HTTP-прокси может понадобиться браузерам, пакетным менеджерам и командным инструментам. Если используется самоподписанный сертификат, потребуется отдельный параметр, отключающий его проверку, однако в рабочей среде такой подход снижает безопасность.
Запуск клиента выполняется командой, соответствующей версии программы:
```bash
hysteria client -c client.yaml
```
После старта приложение будет слушать локальный порт. В браузере или нужной программе укажите SOCKS5-адрес `127.0.0.1:1080`.
Что означают masquerade и salamander
`masquerade` применяется на серверной стороне и позволяет обслуживать дополнительный сценарий при обращении к серверу. Внешне такой режим может напоминать работу обычного веб-сервиса, но он не заменяет полноценную защиту инфраструктуры.
В Hysteria 2 также встречаются режимы обфускации, включая `salamander`. Он использует пароль для преобразования трафика и скрывает характерный вид соединения. Более новые механизмы могут добавлять фрагментацию служебных пакетов и заполнение трафика, но экспериментальные возможности не всегда одинаково стабильны на разных версиях клиента и сервера. Для первого запуска лучше использовать самый простой и документированный вариант, а усложнение добавлять только после проверки базовой связки.
Диагностика неполадок
Если сервис не работает, проверяйте систему последовательно:
```bash
systemctl status hysteria-server
journalctl -u hysteria-server
ss -lunp | grep 443
ufw status
```
Также убедитесь, что UDP-порт разрешён в панели самого хостинг-провайдера. Некоторые VPS используют внешний firewall, который работает независимо от UFW. Если DNS-имя указывает не на тот IP-адрес, клиент тоже не сможет подключиться.
При нестабильной работе полезно проверить загрузку процессора, объём памяти и сетевую активность:
```bash
top
free -h
ip -s link
```
Не стоит сразу менять все параметры одновременно. Сначала добейтесь соединения с минимальной конфигурацией, затем отдельно добавляйте сертификат, маскировку, дополнительные пользователей и ограничения.
Практические меры безопасности
Регулярно обновляйте систему:
```bash
apt update && apt upgrade -y
```
Не храните конфигурации с паролями в общедоступных каталогах и не передавайте их через открытые чаты. Для нескольких пользователей лучше создавать отдельные учётные данные, чтобы при утечке одного пароля не пришлось менять настройки у всех.
Следите за журналами и неожиданными процессами. При подозрительной активности смените пароль Hysteria 2, обновите SSH-ключи и проверьте список служб systemd. Резервную копию конфигурации можно хранить локально, но закрытые ключи и секреты следует защищать отдельно.
Ручная установка занимает больше времени, чем развёртывание через панель, зато предоставляет полный контроль над бинарным файлом, конфигурацией, службами и сетевыми правилами. После настройки у вас будет понятная схема: SSH используется для администрирования, UFW оставляет открытыми только необходимые порты, а Hysteria 2 принимает UDP-трафик на 443 и запускается автоматически вместе с системой.
