VPN на своём сервере не подключается: пошаговая диагностика

Где искать причину, когда AmneziaWG, VLESS, WireGuard или OpenVPN перестал подключаться: сервер, контейнеры, порты, брандмауэр, сеть провайдера, MTU и DNS. Команды для Linux, macOS и Windows.

24 октября 2026 г.·5 мин чтения·vpn, diagnostics, docker, ufw

Когда VPN перестаёт подключаться, первый порыв — снести и поставить заново. Обычно это лишнее: причина почти всегда на одном конкретном участке, и найти её можно за несколько минут. Алгоритм ниже подходит для любого VPN на своём сервере — AmneziaWG, VLESS в 3X-UI, Marzban или Remnawave, WireGuard, OpenVPN, Outline.

Где может сломаться

Подключение проходит цепочку: приложение на устройстве → ваша домашняя или мобильная сеть → провайдер и магистрали → сервер → программа VPN на нём. Сбой в любом звене выглядит одинаково: «не удалось подключиться».

Искать удобнее с конца. Сначала убеждаемся, что сервер жив и VPN на нём запущен, потом — что до него можно достучаться, и только затем разбираемся с сетью и настройками устройства. Каждый шаг отсекает часть цепочки.

Что происходит С какого шага начать
Не подключается ничего, даже SSH 1
SSH работает, VPN нет 2
Не работает только в одной сети, например на мобильном 4
Подключается, но сайты не открываются 5

1. Сервер жив?

Попробуйте зайти по SSH. Проходит — к шагу 2.

Если SSH молчит, проверьте в кабинете tanaka.host, что сервер включён и оплачен, и откройте консоль сервера — она работает даже когда сеть недоступна.

  • В консоли приглашение входа — сервер работает, недоступна только сеть. Частая причина — брандмауэр, закрывший порт SSH, или смена порта SSH без правки правил.
  • Сервер не загружается — смотрите, на чём остановился, и используйте режим восстановления из кабинета.

2. VPN на сервере запущен?

Большинство панелей и Amnezia работают в Docker. Список контейнеров:

# Все контейнеры, включая остановленные
docker ps -a

У рабочего контейнера в столбце STATUS — Up. Если Exited или Restarting, VPN упал. Журнал, подставив имя из первой колонки:

# Последние 50 строк журнала контейнера
docker logs --tail 50 ИМЯ_КОНТЕЙНЕРА

OpenVPN и WireGuard без Docker — через systemd:

systemctl status openvpn-server@server
systemctl status wg-quick@wg0

Затем — слушает ли сервер нужный порт:

# Все порты, которые слушает сервер, с названиями программ
ss -lntup

В выводе должен быть порт вашего VPN: для VLESS обычно 443 в строке tcp, для AmneziaWG и WireGuard — порт протокола в строке udp, для OpenVPN — 1194 udp. Нет порта — VPN не запущен или запущен на другом.

Для Amnezia протокол и порт видны в приложении в настройках сервера. Для Marzban, 3X-UI и Remnawave откройте панель и проверьте, что ядро Xray запущено.

3. Порт доступен снаружи?

Сервис может работать, но порт закрыт брандмауэром. Для TCP-протоколов (VLESS, OpenVPN в режиме TCP, панели) это проверяется с вашего компьютера.

macOS и Linux:

# Проверяем, открыт ли TCP-порт 443 на сервере
nc -vz IP_сервера 443

succeeded — порт открыт. Connection refused — на порту ничего не слушает. Долгое ожидание и тайм-аут — порт закрыт брандмауэром или соединение режется по пути.

Windows, PowerShell:

Test-NetConnection IP_сервера -Port 443

TcpTestSucceeded : True — открыт.

Если порт закрыт, откройте его на сервере:

ufw allow 443/tcp          # TCP-протокол
ufw allow 1234/udp         # AmneziaWG, WireGuard — ваш порт

RHEL-семейство:

firewall-cmd --permanent --add-port=443/tcp && firewall-cmd --reload

UDP так не проверить. UDP-протоколы не отвечают на пустые запросы, поэтому nc и Test-NetConnection для AmneziaWG и WireGuard бесполезны. Для них надёжнее смотреть на сервере, доходят ли попытки подключения (tcpdump -ni any udp port 1234), и проверять сеть по шагу 4.

4. Сеть

Если сервер и VPN в порядке, причина между вами и сервером.

  • Другая сеть. Не работает на мобильном, но работает по Wi-Fi (или наоборот) — дело в провайдере, а не в сервере.
  • Другой протокол. Обычные WireGuard и OpenVPN распознаются и блокируются. Протоколы с маскировкой — AmneziaWG и VLESS с REALITY — устойчивее, а если режут UDP целиком, выручает VLESS, потому что он поверх TCP. Почему так — в статье что такое VLESS и Reality.
  • Другой порт. Часть провайдеров ограничивает UDP на высоких портах. Для AmneziaWG разработчики советуют порт не выше 9999.
  • Не заблокирован ли IP сервера. Сделайте трассировку:
mtr -rwc 20 IP_сервера          # Linux, macOS (brew install mtr)
tracert IP_сервера               # Windows

Если на последних хопах теряются все пакеты, а из другой сети сервер доступен, адрес может быть заблокирован на пути. В этом случае пишите в поддержку tanaka.host с результатом трассировки — поможем с заменой адреса.

5. Подключается, но сайты не открываются

Приложение показывает «подключено», а страницы не грузятся или открываются через раз. Две типичные причины.

MTU. Наибольший размер пакета, который проходит без разбиения. Внутри VPN к каждому пакету добавляются заголовки, и крупный пакет перестаёт проходить: мелкие запросы работают, а большие страницы и загрузки зависают. Уменьшите MTU в настройках подключения, например до 1280, и подключитесь заново. В конфиге WireGuard это строка MTU = 1280 в секции [Interface].

DNS. Сайты не открываются по имени, но открываются по IP — проблема в DNS. Проверка с подключённым VPN:

curl -I https://1.1.1.1          # работает — сеть есть
curl -I https://example.com      # не работает — DNS

Укажите в настройках VPN публичный DNS, например 1.1.1.1 или 8.8.8.8.

Что прислать в поддержку

Если разобраться не удалось, напишите в поддержку tanaka.host из кабинета. Чтобы не тратить время на уточнения, приложите сразу:

  • IP сервера и какой VPN установлен: «AmneziaWG через приложение Amnezia», «VLESS в 3X-UI».
  • Где не работает: домашний интернет или мобильный, какой провайдер, работает ли в другой сети.
  • Вывод docker ps -a и ss -lntup с сервера.
  • Трассировку до сервера.
  • Текст ошибки из приложения, если он есть.

Полезные команды

Команда Что показывает
docker ps -a Все контейнеры и их статус
docker logs --tail 50 имя Журнал контейнера
ss -lntup Кто какие порты слушает
ufw status verbose Правила брандмауэра
journalctl -u имя_службы -n 50 Журнал службы systemd
tcpdump -ni any udp port 1234 Доходят ли UDP-пакеты до сервера