Порт не проброшен — как проверить и исправить
Сервер запущен, в консоли всё зелёное, а друг пишет "не подключается" или "не вижу в списке серверов". Первая мысль почти всегда правильная — дело в порте: либо он не открыт снаружи, либо открыт не тот, либо не тем протоколом. Разберём по шагам, как быстро понять, где именно затык, и что чинить — на VPS, на выделенном сервере или на домашнем ПК за роутером.
Содержание
- Быстрая проверка: открыт порт снаружи или нет
- Сначала убедитесь, что сервер вообще слушает порт
- VPS и выделенный сервер: порт уже открыт хостером, дело в файрволе ОС
- Домашний роутер: NAT, форвардинг и почему это совсем другая история
- TCP или UDP — и почему путаница здесь стоит вам часов
- Проверка после исправления и типичные ложные срабатывания
- Что делать, если ничего не помогло
Быстрая проверка: открыт порт снаружи или нет
Прежде чем лезть в настройки, нужно точно узнать, действительно ли порт не виден снаружи — иначе можно час чинить то, что и так работало. Самый простой способ — открыть canyouseeme.org с любого устройства (сайт сам подставит ваш внешний IP) и ввести номер порта. Сервис пытается подключиться к вам снаружи и честно говорит, дошёл он или нет.
Второй вариант — portquiz.net: удобен, когда нужно проверить именно исходящее соединение или когда canyouseeme.org недоступен из вашего региона. Для входящего TCP-порта своего сервера он не подходит напрямую, но полезен как альтернативная точка сравнения.
Важный нюанс: оба сервиса по умолчанию проверяют TCP. Если ваша игра работает по UDP (а большинство современных игровых серверов — Minecraft на 25565 TCP, но Rust, ARK, Valheim, CS2 — в основном UDP), обычный веб-чекер покажет "порт закрыт" даже если UDP-порт открыт и всё нормально работает. Про разницу TCP/UDP — отдельный раздел ниже, это одна из самых частых причин ложной тревоги.
Быстрая проверка изнутри локальной сети без сторонних сайтов — команда на самом сервере:
# Linux
ss -tulnp | grep <порт>
# Windows (PowerShell)
Get-NetTCPConnection -LocalPort <порт>
Get-NetUDPEndpoint -LocalPort <порт>
Если строка с портом не появилась — проблема не в файрволе и не в роутере, а в том, что сама игра ещё не слушает этот порт (не запустилась, упала, или указан не тот порт при старте).
Сначала убедитесь, что сервер вообще слушает порт
Прежде чем что-то пробрасывать, нужно исключить самую банальную причину — процесс игры просто не открыл сокет на нужном порту. Команда ss -tulnp (или netstat -tulnp на старых системах) покажет все порты, которые реально слушает система, и какой процесс их держит:
ss -tulnp | grep java # для Minecraft-серверов на Java
ss -tulnp | grep :7777 # проверка конкретного порта, например ARK
Обратите внимание на адрес привязки. Если в выводе видно 127.0.0.1:25565 — сервер слушает только локальный loopback и снаружи недоступен в принципе, даже если все порты проброшены идеально. Нужно 0.0.0.0:25565 (IPv4, все интерфейсы) или [::]:25565 (IPv6). Это частая грабля с конфигами, где кто-то явно прописал server-ip=127.0.0.1 в server.properties (Minecraft) или похожий параметр bind-address в конфиге другой игры — уберите значение или укажите 0.0.0.0.
Ещё один момент: некоторые игры при первом запуске генерируют порт случайно или берут его из аргумента запуска, который отличается от того, что вы проверяете. Сверьте порт из лога старта сервера с тем, что пробрасываете — банально, но экономит часы.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверVPS и выделенный сервер: порт уже открыт хостером, дело в файрволе ОС
На арендованном VPS или dedicated-сервере, в отличие от домашнего роутера, обычно не нужно ничего "пробрасывать" в привычном смысле — у сервера уже есть белый IP, и весь трафик на него приходит напрямую. Проблема почти всегда в файрволе самой операционной системы — ufw, iptables или firewalld блокируют порт по умолчанию.
Проверка и открытие порта на Ubuntu/Debian через ufw:
sudo ufw status verbose
sudo ufw allow 25565/tcp
sudo ufw allow 7777:7778/udp # диапазон портов через двоеточие
sudo ufw reload
На CentOS/AlmaLinux с firewalld:
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --permanent --add-port=7777-7778/udp
sudo firewall-cmd --reload
Отдельно проверьте, нет ли у хостера дополнительного облачного файрвола — панели вроде security groups, отдельной от файрвола внутри ОС. Это частая причина, когда ufw status показывает порт открытым, а снаружи всё равно недоступно: правило в облачной панели правило внутри ОС не отменяет, работают оба уровня одновременно, и закрыт может быть любой из них. На выделенных игровых тарифах MAATRIX GAMES такого дополнительного слоя нет — если порт открыт в ОС, он открыт снаружи.
Подробнее про разделение портов по правилам "открыто только нужное" и работу с iptables — в статье про настройку портов и файрвола для игрового сервера.
Домашний роутер: NAT, форвардинг и почему это совсем другая история
Если сервер поднят дома на своём ПК, а не на арендованном сервере, у вас за спиной NAT (Network Address Translation) — роутер прячет ваш локальный IP (обычно вида 192.168.1.x) за одним внешним. Входящий трафик снаружи по умолчанию просто не знает, к какому устройству в локальной сети его направить, и роутер его отбрасывает. Порт нужно явно "пробросить" — сказать роутеру: весь входящий трафик на такой-то внешний порт отправлять на такой-то локальный IP и порт.
Общий алгоритм (интерфейс у каждой модели роутера свой, но логика одна):
- Зайти в веб-панель роутера (обычно
192.168.1.1или192.168.0.1, логин/пароль — на наклейке снизу). - Найти раздел Port Forwarding / Виртуальные серверы / NAT.
- Указать локальный IP компьютера с сервером — обязательно статический, иначе после перезагрузки роутер выдаст другой IP по DHCP и проброс "отвяжется" от вашего ПК.
- Указать внешний и внутренний порт (обычно совпадают) и протокол — TCP, UDP или оба, в зависимости от игры.
- Сохранить и перезагрузить роутер, если он это требует.
Статический локальный IP закрепляется либо в настройках самого ПК, либо через DHCP-резервацию на роутере (надёжнее — привязывается к MAC-адресу устройства, не слетает при переустановке системы).
Отдельная беда — двойной NAT. Если у вас роутер провайдера и за ним ещё свой домашний роутер (например, Wi-Fi роутер подключен к ONT-модему в режиме роутера, а не моста), пробросить порт нужно на обоих уровнях, иначе трафик застревает на первом. Проверить просто: узнать внешний IP на canyouseeme.org и сравнить с тем, что показывает панель вашего роутера в разделе WAN/Internet — если они разные, у вас двойной NAT.
Ещё хуже — CGNAT (Carrier-Grade NAT), которым часть провайдеров экономит IPv4-адреса. В этом случае внешний IP на вашем роутере вообще "серый" (обычно из диапазона 100.64.0.0/10), и проброс портов не поможет в принципе — провайдер должен либо выдать выделенный белый IP (часто платная опция), либо входящие соединения принимать физически некуда. Это одна из главных причин завести сервер на VPS или выделенном сервере вместо домашнего — там белый IP есть по умолчанию.
TCP или UDP — и почему путаница здесь стоит вам часов
Половина обращений "порт не пробрасывается" на деле — проброшен не тот протокол. TCP и UDP — разные механизмы передачи, и правило форвардинга для одного не работает для другого, даже если номер порта совпадает.
Как понять, что нужно вашей игре — смотрите документацию конкретного сервера, но общий ориентир:
| Игра/сервер | Протокол | Типичный порт |
|---|---|---|
| Minecraft (Java) | TCP | 25565 |
| Minecraft Bedrock | UDP | 19132 |
| Rust | UDP (+TCP для RCON) | 28015-28016 |
| CS2 | UDP | 27015 |
| ARK: Survival Ascended | UDP | 7777, 7778, 27020 |
| Valheim | UDP | 2456-2458 |
| Terraria | TCP | 7777 |
| FiveM (GTA V) | UDP (+TCP для HTTP) | 30120 |
Цифры портов — типичные значения по умолчанию, у вас в конфиге они могут отличаться, если меняли явно. Если сомневаетесь — откройте оба протокола на нужном порту, это не создаёт уязвимости само по себе (уязвимость — это открытая служба с дырой, а не открытый порт как таковой), а диагностику сильно упрощает.
Отдельно про ARK и похожие игры, которые слушают сразу несколько портов подряд под разные задачи (игровой трафик, Steam query, RCON) — забыть один из них при пробросе очень легко, и сервер при этом будет частично работать: например, вы зайдёте по прямому IP, а в браузере серверов игра не появится, потому что не отвечает query-порт.
Проверка после исправления и типичные ложные срабатывания
После того как изменили правило файрвола или проброс на роутере, не спешите считать, что не помогло — есть несколько частых ложных тревог.
Кеш роутера и таблицы NAT. После изменения правила иногда нужна перезагрузка роутера — не всегда применяется на лету. Дайте минуту-две и попробуйте снова.
Проверка изнутри той же сети не работает. Это нормально и называется NAT loopback (hairpin NAT) — не все роутеры умеют "заворачивать" запрос на собственный внешний IP обратно внутрь сети. Если друг из другого места подключается нормально, а вы сами по внешнему IP из дома — нет, это не баг проброса, это ограничение роутера. Проверяйте доступность именно с внешней точки — через canyouseeme.org или попросив кого-то снаружи.
Антивирус и Windows Defender Firewall. На домашнем ПК с Windows порт может быть проброшен на роутере идеально правильно, но заблокирован файрволом самой Windows или сторонним антивирусом ещё до того, как трафик дойдёт до игры. Проверить: Панель управления → Система и безопасность → Брандмауэр Защитника Windows → Разрешить приложение через брандмауэр, добавить исполняемый файл сервера или явно открыть порт через netsh advfirewall firewall add rule.
IPv6 vs IPv4. Если у вас дома есть IPv6 и клиент друга резолвит домен в IPv6-адрес, а проброс на роутере настроен только для IPv4 (так почти всегда — для IPv6 не нужен NAT, но нужен отдельный firewall-allow, о котором часто забывают), возможна путаница с недоступностью. Проще всего — временно отключить IPv6 на сервере или явно подключаться по IPv4-адресу.
Провайдер режет входящие порты. Некоторые мобильные и часть домашних провайдеров блокируют определённые диапазоны портов на своей стороне, до вашего роутера. Если проброс настроен верно, но canyouseeme.org всё равно не видит порт — напишите в поддержку провайдера и уточните ограничения, или попробуйте другой порт из нестандартного диапазона (например, вместо 25565 взять 25566).
Что делать, если ничего не помогло
Если вы прошли все пункты выше — сервер слушает нужный адрес и порт, файрвол ОС открыт, проброс на роутере настроен на правильный локальный IP и протокол, а порт всё равно закрыт снаружи — вероятнее всего дело в CGNAT (см. раздел про домашний роутер) или в блокировке на стороне провайдера, которую своими силами не обойти.
Практичный выход в такой ситуации — перенести сервер на VPS или выделенный сервер с белым IP, где вопрос форвардинга снимается полностью: нет вашего домашнего NAT, нет CGNAT, нет зависимости от того, что провайдер решил заблокировать на этой неделе. Это же решает попутно проблему с аптаймом — домашний сервер выключается вместе с вашим ПК и роутером, а арендованный работает круглосуточно независимо от вас.
Если же переносить сервер на игру вроде Valheim, у которой есть свои специфичные нюансы с портами — почитайте отдельный разбор проблемы с проброшенным портом в Valheim, там подробнее про конкретно её три последовательных порта.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверЧастые вопросы
Как узнать свой внешний IP-адрес?
Проще всего — открыть любой сервис вроде 2ip.ru или ввести в поисковике "мой IP". На VPS и выделенных серверах внешний IP обычно совпадает с тем, что указан в панели хостинга — он статический и не меняется.
Почему сервер виден по прямому IP, но не появляется в списке серверов игры?
Обычно это значит, что игровой порт открыт, а отдельный query/browser-порт (используется для отображения в общем списке серверов) — нет. У многих игр это два разных порта, посмотрите документацию конкретного сервера, какие порты нужны отдельно для listing.
Нужно ли пробрасывать порт, если сервер стоит на VPS?
В классическом смысле "проброса" — нет, у VPS уже есть выделенный белый IP. Нужно только открыть порт в файрволе операционной системы (ufw/iptables/firewalld) и, если есть, в облачном файрволе хостинга.
Можно ли поменять номер порта, если провайдер блокирует стандартный?
Да, в большинстве игр порт задаётся параметром запуска или в конфиге (например, -port для Valheim, server-port в server.properties у Minecraft). После смены обязательно откройте новый порт в файрволе и на роутере вместо старого.
Опасно ли держать порты открытыми постоянно?
Сама по себе открытая точка входа не опасна, если за ней стоит актуальная версия игрового сервера без известных уязвимостей — риск создаёт не открытый порт, а уязвимый или неправильно настроенный сервис за ним. Открывайте только те порты, которые реально нужны игре, и не больше.