Minecraft: Address already in use — порт занят, что делать
Ошибка BindException значит, что порт уже слушает другой процесс или RCON выбрал порт игры. Разбираем, как найти виновника и как не сломать соединение.
Содержание 15
- Коротко
- Шаги
- Что за порт и где он нужен
- Почему нельзя просто «поменять порт»
- Кто занял порт на самом деле
- Что менять, а что нет
- Симптом → причина → решение
- Как сделать в панели EGN
- Частые ошибки
- Вопросы и ответы
- Что значит Address already in use?
- Почему RCON мешает игровому порту?
- Можно ли менять server-port вручную?
- Нужно ли открывать RCON в интернет?
- Итог
Сервер не запускается и пишет java.net.BindException: Address already in use. Или сервер работает, но в логе есть предупреждение про RCON, а удалённые программы не подключаются. Оба случая означают одно: программа пытается занять порт, который уже занят. Ниже разберём, откуда берётся конфликт и как его устранить, не ломая адрес, по которому к серверу подключаются игроки.
Коротко
Address already in use значит, что нужный TCP- или UDP-порт уже слушает другой процесс. В Minecraft чаще всего конфликтуют игровой порт и RCON: если в server.properties для rcon.port стоит тот же номер, что и для server-port, RCON не может занять порт. Решение: выключить RCON, если он не нужен, или перенести его на свободный порт из вкладки «Сеть». Игровой порт меняйте только вместе с адресом подключения.
Шаги
-
Найдите строку ошибки. Откройте «Консоль» или «Файлы» →
logs/latest.log. ИщитеBindException,Address already in useилиUnable to initialise RCON. Точный текст подскажет, какой порт занят: игровой или RCON. -
Сверьте порты в
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— это классическая поломка. Один порт не может слушать два сервиса. -
Посмотрите, какие порты выданы серверу. Вкладка «Сеть» показывает адрес подключения и список всех портов тарифа: игровой, голосовой чат, карта, RCON. Там же видно, какой порт за каким сервисом закреплён.
На скриншоте доктора видно две вещи. Сам сервер работает, а RCON не запустился, потому что
java.net.BindException: Address already in use. Доктор предлагает два пути: «Исправить порт RCON» (переносит RCON на дополнительный порт сервера) или выключить его. Выбирайте выключить, если RCON вам не нужен: панель и так даёт консоль. -
Исправьте RCON. Если RCON нужен для бота или программы управления, перенесите его на свободный порт из «Сети» (кнопка «Исправить порт RCON» в карточке доктора делает это сама) и проверьте, что
rcon.portобновился. Если свободного порта нет, выключите RCON:enable-rcon=false. -
Проверьте, не занят ли порт другим сервером. Если порты в файле и в «Сети» не пересекаются, а ошибка осталась, возможно, предыдущий процесс ещё не завершился. Остановите сервер, подождите полминуты и запустите снова. Если ошибка повторяется, напишите в поддержку с текстом ошибки: порт на ноде могут держать только они.
-
Проверьте результат. Запустите сервер, дождитесь строки
Done (…)!и подключитесь с игрового клиента. Если нужен RCON, проверьте подключение из программы управления.
Что за порт и где он нужен
Схема ниже показывает, какие порты обычно открыты у одного сервера Minecraft с плагинами.
Игровой порт 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
- Откройте сервер и перейдите в «Сеть». Там список всех портов тарифа с назначением.
- Найдите строку RCON. Если RCON включён и совпадает с игровым портом, нажмите «Исправить порт RCON» в карточке доктора или выключите RCON строкой
enable-rcon=falseвserver.properties. - Если RCON нужен, выберите свободный порт из списка тарифа. Если свободного порта нет, оставьте RCON выключенным: консоль в панели и так доступна.
- Перезапустите сервер и проверьте лог на наличие
BindException. - Сообщите игрокам адрес из «Сети» ещё раз, если он менялся.
Карточка на скриншоте предлагает два варианта: перенести 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
Читать далее
Вся рубрика →Bedrock-сервер Minecraft: отличия от Java и настройка для телефонов и консолей
Чем Bedrock-сервер отличается от Java, какие порты он использует, как пустить Bedrock-игроков на Java-сервер через Geyser и Floodgate.
Свой домен для сервера Minecraft: SRV-запись и адрес EGN
Как настроить домен для сервера Minecraft: SRV-запись _minecraft._tcp, адрес ноды и порт из раздела «Сеть», и почему Bedrock нужен отдельный адрес.
EULA Minecraft: почему сервер не стартует без eula.txt и как его принять
Что такое EULA сервера Minecraft, почему eula=false останавливает запуск, как принять соглашение в панели EGN и как не потерять настройки при этом.