Minecraft: Address already in use — порт занят, что делать

Ошибка BindException значит, что порт уже слушает другой процесс или RCON выбрал порт игры. Разбираем, как найти виновника и как не сломать соединение.

Команда EGN 8 мин чтения
Minecraft: Address already in use — порт занят, что делать
Содержание 15
  1. Коротко
  2. Шаги
  3. Что за порт и где он нужен
  4. Почему нельзя просто «поменять порт»
  5. Кто занял порт на самом деле
  6. Что менять, а что нет
  7. Симптом → причина → решение
  8. Как сделать в панели EGN
  9. Частые ошибки
  10. Вопросы и ответы
  11. Что значит Address already in use?
  12. Почему RCON мешает игровому порту?
  13. Можно ли менять server-port вручную?
  14. Нужно ли открывать RCON в интернет?
  15. Итог

Сервер не запускается и пишет java.net.BindException: Address already in use. Или сервер работает, но в логе есть предупреждение про RCON, а удалённые программы не подключаются. Оба случая означают одно: программа пытается занять порт, который уже занят. Ниже разберём, откуда берётся конфликт и как его устранить, не ломая адрес, по которому к серверу подключаются игроки.

Коротко

Address already in use значит, что нужный TCP- или UDP-порт уже слушает другой процесс. В Minecraft чаще всего конфликтуют игровой порт и RCON: если в server.properties для rcon.port стоит тот же номер, что и для server-port, RCON не может занять порт. Решение: выключить RCON, если он не нужен, или перенести его на свободный порт из вкладки «Сеть». Игровой порт меняйте только вместе с адресом подключения.

Шаги

  1. Найдите строку ошибки. Откройте «Консоль» или «Файлы» → logs/latest.log. Ищите BindException, Address already in use или Unable to initialise RCON. Точный текст подскажет, какой порт занят: игровой или RCON.

  2. Сверьте порты в server.properties. Откройте файл в «Файлах» или в «Настройках сервера». Нужны три строки:

    • server-port — игровой порт, TCP, по умолчанию 25565;
    • enable-rcon и rcon.port — RCON, TCP, по умолчанию 25575, по умолчанию выключен;
    • enable-query и query.port — query, UDP, по умолчанию выключен.
    server.properties
    server-port=30536
    enable-rcon=true
    rcon.port=30536

    В этом примере rcon.port совпадает с server-port — это классическая поломка. Один порт не может слушать два сервиса.

  3. Посмотрите, какие порты выданы серверу. Вкладка «Сеть» показывает адрес подключения и список всех портов тарифа: игровой, голосовой чат, карта, RCON. Там же видно, какой порт за каким сервисом закреплён.

    Доктор сервера: RCON не запустился, порт занят

    На скриншоте доктора видно две вещи. Сам сервер работает, а RCON не запустился, потому что java.net.BindException: Address already in use. Доктор предлагает два пути: «Исправить порт RCON» (переносит RCON на дополнительный порт сервера) или выключить его. Выбирайте выключить, если RCON вам не нужен: панель и так даёт консоль.

  4. Исправьте RCON. Если RCON нужен для бота или программы управления, перенесите его на свободный порт из «Сети» (кнопка «Исправить порт RCON» в карточке доктора делает это сама) и проверьте, что rcon.port обновился. Если свободного порта нет, выключите RCON: enable-rcon=false.

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

  6. Проверьте результат. Запустите сервер, дождитесь строки Done (…)! и подключитесь с игрового клиента. Если нужен RCON, проверьте подключение из программы управления.

Что за порт и где он нужен

Схема ниже показывает, какие порты обычно открыты у одного сервера Minecraft с плагинами.

Порты одного сервера Minecraft: игровой, RCON, query и плагины
Порты одного сервера Minecraft: игровой, RCON, query и плагины

Игровой порт TCP — это адрес, который вы даёте игрокам. Query по умолчанию работает по UDP и выключен (в server.properties его порт по умолчанию совпадает с игровым, 25565). RCON — TCP и тоже выключен, пока вы его не включите. Голосовой чат, Bedrock-вход и веб-карта используют свои порты из «Сети»: у них свой протокол (UDP, TCP или оба), поэтому не путайте их с игровым.

Почему нельзя просто «поменять порт»

Соблазн понятен: взять другой номер в server-port и запустить. Но тогда адрес для игроков изменится, а старый перестанет работать. Игровой порт выдаётся серверу автоматически, и снаружи доступны только выданные порты (их список — во вкладке «Сеть»). Если вы вписали в server-port номер, которого нет в этом списке, сервер запустится, но игроки не смогут к нему подключиться.

Поэтому правило простое: игровой порт не трогаем, RCON переносим или выключаем.

Кто занял порт на самом деле

Если RCON и игровой порт разведены, а ошибка осталась, значит, порт занят другим процессом. Если сервер у вас на собственном VPS, проверка делается так (у игрового хостинга доступа к хосту нет, там это делает поддержка):

Терминал
sudo ss -tulpn | grep 30536

Вместо 30536 подставьте свой номер порта. Строка покажет протокол, адрес и процесс, который слушает порт. Если в ней виден тот же сервер, значит, это ваш предыдущий экземпляр, который не завершился. Если порт занят чужим процессом, напишите в поддержку с номером порта и временем ошибки: такие случаи решаются на стороне хоста.

Для пользователя панели проще другой путь. Откройте «Сеть» и проверьте, что у каждого сервиса свой номер. Если два сервиса в списке используют один порт, сообщите в поддержку. Если все разные, а ошибка повторяется, значит, конфликт внутри самого server.properties: RCON или query совпали с игровым портом вручную.

Что менять, а что нет

Меняйте rcon.port и query.port, если эти сервисы нужны. Не меняйте server-port без обновления адреса для игроков. Если вы переносите сервер на другую локацию, адрес тоже поменяется: сообщите игрокам новый адрес из «Сети» и не копируйте старый.

После изменений полезно проверить порты в ещё одном месте: в логе при старте сервер пишет адрес, на котором он слушает. Если там другой номер, чем в «Сети», значит, файл настроек и выданный порт разошлись.

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

Симптом Причина Решение
BindException: Address already in use при старте Порт занят другим процессом или предыдущим экземпляром Перезапустить через панель; если повторяется, поддержка проверит хост
Unable to initialise RCON при работающем сервере rcon.port совпал с игровым портом Перенести RCON на свободный порт из «Сети» или выключить
Игроки не заходят, сервер «запущен» Адрес передан с другим портом Передать адрес целиком из «Сети»
Голос не работает, игра работает Порт голоса закрыт для UDP Проверить протокол порта голоса в «Сети»
Конфликт после смены server-port вручную Файл и выданный порт разошлись Вернуть порт из «Сети» и не менять его вручную

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

  1. Откройте сервер и перейдите в «Сеть». Там список всех портов тарифа с назначением.
  2. Найдите строку RCON. Если RCON включён и совпадает с игровым портом, нажмите «Исправить порт RCON» в карточке доктора или выключите RCON строкой enable-rcon=false в server.properties.
  3. Если RCON нужен, выберите свободный порт из списка тарифа. Если свободного порта нет, оставьте RCON выключенным: консоль в панели и так доступна.
  4. Перезапустите сервер и проверьте лог на наличие BindException.
  5. Сообщите игрокам адрес из «Сети» ещё раз, если он менялся.
Доктор сервера: RCON не запустился, порт занят
Доктор сервера: RCON не запустился, порт занят

Карточка на скриншоте предлагает два варианта: перенести RCON или выключить его. В большинстве случаев подходит второй: если бот или программа управления не используется, RCON можно не включать вовсе.

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

  • Совпадающие server-port и rcon.port. Самая частая ошибка. Оставьте игровой порт, а RCON переведите на другой номер или выключите.
  • Включённый RCON без нужды. Если RCON не используется, выключите его. Меньше открытых портов — меньше проблем.
  • Смена порта без обновления адреса. Игроки будут подключаться к старому адресу. Сообщите новый адрес из «Сети» или не меняйте его вовсе.
  • Лечить ошибку перезагрузкой по кругу. Если конфликт не уходит, найдите виновника по логу. Повторный старт не исправит настройку.
  • Путать TCP и UDP. Игровой порт Java — TCP, query и голосовой чат — UDP, у Bedrock-входа (Geyser) смотрите протокол в «Сети»: в новых версиях Geyser используется и TCP, и UDP. Занятость проверяется для нужного протокола.

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

Что значит Address already in use?

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

Почему RCON мешает игровому порту?

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

Можно ли менять server-port вручную?

Не нужно: адрес игроков привязан к выданному серверу порту, а другие порты снаружи недоступны. Если нужен дополнительный порт (голос, карта), выдайте его во вкладке «Сеть».

Нужно ли открывать RCON в интернет?

Нет, если это не требуется. RCON даёт полный доступ к консоли. Включайте его только тогда, когда он нужен боту или программе, и не публикуйте пароль.

Итог

Address already in use почти всегда означает конфликт портов. Сверьте server-port, rcon.port и query.port с вкладкой «Сеть», выключите RCON, если он не нужен, или перенесите его на свободный порт. Игровой адрес не меняйте без необходимости. Смежные статьи: про Java-версию, про память и про сервер, который не виден снаружи.

Сервер под Minecraft за пару минут — egnetwork.ru

Читать далее

Вся рубрика →