Порт Hysteria2 на VPS: firewall, security group и проверка UDP
Как выбрать порт для Hysteria2, разрешить UDP в firewall и security group, проверить доступность порта без публикации конфига и не отключать защиту целиком. Пошаговая инструкция для VPS.
Содержание
Запустили Hysteria2 на VPS, а клиент не подключается? В большинстве случаев дело не в конфигурации, а в закрытом UDP-порту. Hysteria2 работает поверх QUIC и использует UDP, поэтому его нужно разрешить и в firewall самой операционной системы, и в security group облачного провайдера. Сделать это можно точечно, не отключая защиту целиком.
В этой статье разберём, как выбрать порт для сервера, открыть его в ufw/iptables и панели провайдера, а затем проверить доступность без публикации конфигурации. Выполните шаги по порядку — это уберёт большинство ошибок на старте.
Какой UDP-порт выбрать для Hysteria2
Hysteria2 не требует какого-то конкретного порта. Можно использовать стандартный 443/UDP для маскировки под обычный HTTPS-трафик, либо любой другой в диапазоне 1024–65535. При выборе учитывайте два момента: порт не должен конфликтовать с уже запущенными сервисами, и он должен быть доступен снаружи.
Если у вас уже настроен веб-сервер на 443/TCP, порт 443/UDP останется свободным, потому что QUIC использует отдельное пространство. Но на некоторых VPS-панелях security group привязана к протоколу, поэтому нужно явно указывать UDP. Рекомендую выбрать порт выше 10000 — так меньше шансов, что какой-нибудь сетевой фильтр провайдера задушит его из-за подозрительной активности. Пример в конфиге сервера:
listen: :443
Если поставите другой порт, например 5678, замените его в конфиге и в правилах firewall.
Открываем UDP-порт в ufw
На большинстве Ubuntu-серверов firewall управляется утилитой ufw. Проверьте статус:
sudo ufw status
Если статус inactive, то firewall выключен и порт не блокируется. Но лучше включить его и добавить только нужные правила. Например, для порта 443/UDP:
sudo ufw allow 443/udp
sudo ufw enable
После этого проверьте:
sudo ufw status verbose
Вы должны увидеть строку с 443/udp и статусом ALLOW. Если порт другой — подставьте его. Важно не отключать firewall полностью, иначе вы потеряете защиту от несанкционированного доступа. Точечное открытие UDP-порта не снижает безопасность.
Разрешаем UDP в iptables
Если ufw не установлен или вы используете iptables напрямую, добавьте правило для входящих UDP-пакетов. Например, для порта 443:
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
Не забудьте сохранить правило, иначе после перезагрузки сервера оно исчезнет. На Ubuntu это делается так:
sudo netfilter-persistent save
Если используете другой firewall (firewalld, CSF), синтаксис будет другим, но принцип тот же: разрешить входящий UDP на конкретный порт. Проверьте документацию вашей системы.
Security group у облачного провайдера
Многие забывают, что у VPS от AWS, DigitalOcean, Vultr, Hetzner и других есть внешний брандмауэр — security group. Даже если ufw открыт, провайдер может блокировать порт на уровне сети. Зайдите в панель управления вашего сервера, найдите раздел "Firewall" или "Security Groups" и добавьте правило:
- Тип: UDP
- Порт: ваш порт Hysteria2
- Источник: 0.0.0.0/0 (или конкретные IP, если нужен доступ только для вас)
Примените правило к инстансу. На некоторых панелях это занимает несколько секунд, на других — до минуты. После этого проверьте доступность порта.
Проверяем UDP-порт без публикации конфигурации
Есть несколько способов убедиться, что порт открыт и пакеты доходят. Самый быстрый — посмотреть, слушает ли Hysteria2 порт:
sudo ss -ulpn | grep 443
Если строка есть — сервер запущен и привязан к порту. Если нет, сервер, вероятно, не запущен или использует другой порт.
Для проверки с другого компьютера можно использовать nc с опцией -u (UDP). Например:
nc -u -v ваш_сервер 443
Но учтите: Hysteria2 не отвечает на произвольные UDP-пакеты, поэтому nc может показать ошибку даже при открытом порту. Более надёжный способ — запустить клиент с заведомо верными параметрами и посмотреть логи. Однако если вы не хотите публиковать конфиг, можно использовать tcpdump на сервере:
sudo tcpdump -i eth0 udp port 443
Затем попробуйте подключиться с клиента и посмотрите, появляются ли пакеты. Если да — порт открыт и пакеты приходят. Если нет — проблема на стороне сети или провайдера.
Что делать, если UDP не проходит
Если пакеты не доходят до сервера даже после открытия в ufw и security group, проверьте:
- Правильный ли порт указан в конфиге сервера и в правилах.
- Не конфликтует ли порт с другим процессом (используйте
ss -ulpn). - Не блокирует ли UDP сам интернет-провайдер (часто бывает на домашних сетях, но у VPS обычно нет).
- Не включён ли на VPS какой-то дополнительный сетевой фильтр от панели провайдера (например, "Anti-DDoS" или "Packet filter").
Убедитесь, что в конфиге клиента указан тот же порт и протокол hysteria2. Иногда ошибка возникает из-за того, что клиент настроен на TCP, а сервер слушает UDP. Проверьте настройки обеих сторон.
Типичные ошибки при настройке порта Hysteria2
- Открытие порта только в ufw, но не в security group провайдера.
- Ошибочное указание TCP вместо UDP в правиле firewall.
- Использование порта, который уже занят другим процессом.
- Перезагрузка сервера без сохранения правил iptables.
- Попытка проверить UDP-порт с помощью
pingилиtelnet— эти инструменты работают с TCP/ICMP.
После открытия порта проверьте подключение. Если оно не появляется, обратитесь к статье о базовой настройке сервера — там описан полный шаблон конфигурации. Для более глубокого понимания работы протокола полезно изучить принципы UDP и QUIC. Не забывайте, что при смене порта нужно менять его и в клиентских конфигах.
Мини-чеклист
- Выбран UDP-порт (например, 443 или 10000-60000)
- В конфиге сервера указан этот порт в listen
- Правило ufw: sudo ufw allow <port>/udp
- Правило iptables сохранено: sudo netfilter-persistent save
- В security group облачного провайдера добавлено правило для UDP и этого порта
- Проверка командой ss -ulpn | grep <port>
- Проверка с клиента через tcpdump на сервере
Частые ошибки
- Открыли TCP-порт вместо UDP в firewall
- Забыли про security group у облачного провайдера
- Не проверили, что порт не занят другим сервисом
- Полностью отключили firewall, чтобы всё работало
- Проверяли UDP-порт через telnet или ping
- Использовали порт ниже 1024 без прав root
FAQ
Какой порт лучше всего использовать для Hysteria2?
Рекомендуется 443/UDP — он имитирует обычный HTTPS-трафик и обычно не блокируется. Но можно взять любой свободный порт в диапазоне 1024-65535. Главное — разрешить его в firewall и security group.
Почему мой порт Hysteria2 не работает, если я открыл его в ufw?
Скорее всего, вы не добавили правило в security group облачного провайдера. Проверьте панель управления VPS. Также убедитесь, что правило именно UDP, а не TCP.
Как проверить, открыт ли UDP-порт на сервере без публикации конфигурации?
Используйте tcpdump на сервере и попробуйте подключиться с клиента. Если пакеты видны — порт открыт. Также можно использовать ss -ulpn для проверки, слушает ли сервер порт.
Нужно ли полностью отключать firewall для работы Hysteria2?
Нет, не нужно. Достаточно добавить разрешающее правило для UDP на нужном порту. Полное отключение firewall создаёт лишние риски безопасности.
Что делать, если провайдер VPS блокирует UDP-трафик?
Большинство провайдеров не блокируют UDP. Если пакеты не доходят, проверьте настройки фильтрации в панели (например, защита от DDoS). Если проблема на стороне интернет-провайдера, попробуйте сменить порт или использовать другой протокол.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ