# Сервер не виден снаружи: порты, фаервол и Docker

> Почему игроки не подключаются, хотя сервер запущен: какой порт проверять, как работает фаервол и почему Docker обходит ufw. Пошаговая проверка.

- Рубрика: Гайды по играм
- Опубликовано: 2026-11-13T20:00:00+03:00
- Обновлено: 2026-11-13T20:00:00+03:00
- Адрес: https://blog.egnetwork.ru/server-ne-viden-snaruzhi-porty-fayervol
- Автор: Команда EGN

Сервер горит зелёным в панели, в консоли написано «Done» или «Server started», но друзья не могут подключиться. Значит, соединение теряется где-то на пути от игрока до процесса. Путь длинный: интернет, провайдер, фаервол, проброс порта, сам процесс. Проверять его надо по очереди, а не гадать.

## Коротко

Игрок видит сервер, только если: процесс слушает нужный порт, фаервол его пропускает, адрес совпадает с выданным во вкладке «Сеть» и протокол (TCP или UDP) правильный. Порты EGN выдаёт панель, их не нужно подбирать вручную. Docker публикует порты через iptables и обходит правила ufw, поэтому закрыть порт одной командой ufw часто не получается. Проверяйте путь от конца к началу: процесс, проброс, фаервол, адрес.

## Шаги

1. **Убедитесь, что сервер действительно работает.** Статус «Запущен» и строка `Done` в консоли — хорошее начало. Если сервер упал через минуту, никто не подключится. Смотрите [чек-лист запуска](https://blog.egnetwork.ru/server-padaet-srazu-chek-list), прежде чем искать сетевую причину.

2. **Сверьте адрес и порт во вкладке «Сеть».** Там указан адрес подключения и список портов тарифа с их назначением. Игрокам передавайте именно этот адрес, включая порт. Если в клиенте введён адрес без порта, а игровой порт нестандартный, подключение не состоится.

   ![Вкладка «Сеть»: адрес подключения и список портов сервера](https://blog.egnetwork.ru/media/540)

   На тестовом сервере адрес — `stage-node1.egnetwork.ru:30546`, игровой порт 30546 TCP. Ниже видно, что голосовой чат, Bedrock-вход и веб-карта используют свои порты. У каждого порта есть протокол: например, голос работает по UDP. Не путайте протоколы: порт, открытый по TCP, не принимает UDP.

3. **Проверьте протокол.** Игровой порт Minecraft — TCP. Голосовой чат и query — UDP. Bedrock-вход через Geyser — UDP, а у Geyser 2.12 ещё и TCP на том же порту (сигналинг); смотрите протокол в «Сети». Если открыт только TCP, а голос по UDP, голос работать не будет, а сервер при этом будет доступен для игры. Проверяйте каждый сервис своим способом.

4. **Проверьте фаервол (только если сервер на вашем VPS).** На игровом хостинге фаервол настроен на стороне EGN, и порты из «Сети» уже открыты; там этот шаг пропустите. Если же вы запускаете сервер на своём VPS, посмотрите правила: `sudo ufw status verbose`. Нужные порты должны быть разрешены. Но помните про Docker.

   ```bash
   sudo ufw status verbose
   sudo ss -tulpn | grep ПОРТ
   ```

   Вместо `ПОРТ` подставьте свой номер. Вторая команда показывает, слушает ли процесс нужный порт. Если его нет в списке, проблема в процессе, а не в фаерволе.

5. **Поймите, почему Docker обходит ufw.** Docker добавляет правила iptables для проброса портов контейнеров. Эти правила обрабатываются раньше, чем цепочки ufw, поэтому порт может быть доступен из интернета, даже если вы его «закрыли» в ufw. Это описано в документации Docker: опубликованные порты контейнеров маршрутизируются в таблице `nat` до цепочек, которыми управляет ufw, и Docker с ufw несовместимы без дополнительной настройки.

   ![Путь пакета: игрок, интернет, фаервол, Docker, процесс](https://blog.egnetwork.ru/media/541)

   Схема показывает путь, на каждом звене может быть отказ. Поэтому проверка «открыл порт в ufw» ничего не гарантирует. Смотрите, какой порт реально опубликован и что слушает процесс.

6. **Проверьте доступность снаружи.** Для TCP можно проверить с другого компьютера: `nc -vz адрес порт`. Для UDP просто подключиться с клиента к плагину голосового чата или проверить через игрока: `nc` не даст уверенного ответа. Если TCP не отвечает, а процесс слушает, проблема где-то между вами и хостом.

7. **Проверьте результат.** Попросите игрока с другой сети подключиться по адресу из «Сети». Если заходит, вопрос закрыт. Если нет, соберите адрес, порт, протокол и время попытки и напишите в поддержку.

## Условный пример

Владелец открывает порт 25565 в ufw, но игроки не подключаются. Проверка: `ss -tulpn` показывает, что процесс слушает 30536. Значит, игровой порт выдан другой. Сверяете со вкладкой «Сеть»: порт 30536, а владелец передавал адрес с 25565. Исправили адрес, подключение прошло. Фаервол тут был ни при чём.

Второй пример: порт открыт в ufw, `ss` показывает процесс, но снаружи TCP не отвечает. Смотрите Docker-проброс: порт в контейнере опубликован на другой номер или не опубликован вовсе. Это не лечится правилом ufw, а настройкой публикации. Такие случаи решаются через поддержку.

## Проверка TCP и UDP из разных мест

Снаружи проверить TCP проще, чем UDP. Для TCP подойдёт `nc` с другого компьютера: `nc -vz адрес порт`. Если сообщение говорит, что соединение установлено, порт открыт. Если ответа нет, сначала проверьте адрес и порт во вкладке «Сеть», потом фаервол хоста, потом публикацию в Docker.

Для UDP надёжного способа без клиента нет. Голосовой чат и query проверяются тем, что игрок видит их в интерфейсе клиента или в статусе сервера. Если голоса нет, но игра работает, проверьте, что сам порт голоса открыт по UDP, а не только по TCP.

Полезно проверить путь и с другой стороны. Команда `traceroute` или `tracert` до адреса покажет маршрут, а не открытость порта. Но если маршрут обрывается на одном участке, проблема почти всегда у провайдера или на стороне хоста, а не в настройках сервера.

## Когда проблема у провайдера игрока

Бывает, что сервер доступен всем, кроме игроков одного провайдера или одного региона. Тогда проверка на вашей стороне ничего не покажет. Попросите игрока подключиться с мобильного интернета или через другой провайдер. Если там заходит, проблема у провайдера, и её решают в его поддержке. Если не заходит нигде, смотрите адрес и порт.

## Симптом → причина → решение

| Симптом | Причина | Решение |
|---|---|---|
| Игроки не подключаются, сервер «Запущен» | Адрес без порта или старый адрес | Передать адрес целиком из «Сети» |
| TCP не отвечает снаружи, процесс слушает порт | Фаервол или проброс Docker | Проверить правила и публикацию портов, обратиться в поддержку |
| Голос не работает, игра работает | Порт голоса закрыт для UDP | Проверить протокол в «Сети» |
| Порт открыт в ufw, но недоступен | Docker обходит ufw | Настроить публикацию портов в Docker |
| Доступ есть у части игроков | Провайдер или регион | Проверить через другого провайдера, сообщить поддержке |

## Как сделать в панели EGN

1. Откройте «Сеть» и скопируйте адрес подключения целиком.
2. Проверьте в списке портов, что игровой порт совпадает с адресом.
3. Если сервер не отвечает, откройте «Консоль» и убедитесь, что сервер запущен и не упал.
4. Попросите игрока с другой сети подключиться по адресу из «Сети».
5. Если не получилось, соберите адрес, порт, протокол и время попытки и напишите в поддержку.

![Вкладка «Сеть»: адрес подключения и порты сервера](https://blog.egnetwork.ru/media/540)

На скриншоте адрес и список всех портов тарифа: игровой, голос по UDP, Bedrock-вход и веб-карта. Именно эти значения надо передавать игрокам и сверять при диагностике.

## Частые ошибки

- **Передавать адрес без порта.** Игрок вводит только хост, а игровой порт нестандартный. Передавайте адрес целиком из «Сети».
- **Путать TCP и UDP.** Голос и query работают по UDP, игра по TCP. Проверяйте каждый протокол отдельно.
- **Полагаться на ufw при Docker.** Правило ufw не закроет порт, который Docker опубликовал. Проверяйте публикацию портов в Docker.
- **Менять игровой порт вручную.** Адрес для игроков изменится, а панель может не знать о новом порте. Не меняйте его вручную: снаружи доступны только порты, выданные серверу, список которых — во вкладке «Сеть».
- **Искать причину, не проверив процесс.** Если сервер не слушает порт, ни один фаервол не поможет.

## Вопросы и ответы

### Почему сервер не виден, хотя он запущен?

Чаще всего адрес или порт, переданные игрокам, не совпадают с выданными во вкладке «Сеть». Проверьте адрес целиком, а потом фаервол.

### Почему ufw не закрывает порт?

Docker публикует порты через iptables в обход правил ufw. Порт может быть открыт, даже если в ufw он закрыт. Проверяйте публикацию портов в Docker.

### Какие порты нужны Minecraft-серверу?

Игровой TCP-порт из «Сети» — обязательно. Голосовой чат и query — UDP. Bedrock-вход и веб-карта используют свои порты из «Сети».

### Как проверить доступность TCP-порта?

С другого компьютера выполните `nc -vz адрес порт`. Если соединение проходит, порт открыт снаружи. Для UDP проверка сложнее, её проще делать через клиента.

## Итог

Сервер не виден снаружи, когда рвётся путь от игрока до процесса. Сверьте адрес и порт во вкладке «Сеть», проверьте протокол, убедитесь, что процесс слушает нужный порт, и помните, что Docker обходит ufw. Смежные статьи: [про занятый порт](https://blog.egnetwork.ru/minecraft-address-already-in-use-port), [про чек-лист запуска](https://blog.egnetwork.ru/server-padaet-srazu-chek-list) и [про Timed out](https://blog.egnetwork.ru/minecraft-timed-out-igroki-vyletayut).

Сервер под игру за пару минут — [egnetwork.ru](https://egnetwork.ru/)

---

Материал EGN (blog.egnetwork.ru), обновлено 13 ноября 2026; при цитировании указывайте ссылку.
