TeaHost
Minecraftminecraftbungeecordпроксисеть5 мин. чтения

Настройка BungeeCord и подключение серверов

Настройка BungeeCord с нуля: config.yml, ip_forward, подключение бэкендов, защита портов, общая авторизация и переход между серверами сети.

Кратко

Для сети на BungeeCord пропишите бэкенды в config.yml прокси и включите ip_forward: true, а на каждом бэкенде выставьте online-mode=false, bungeecord: true в spigot.yml и закройте порт от внешнего мира. Прокси хватает 512 МБ–1 ГБ памяти, права и экономику переводите на общую MySQL-базу. Для новой сети безопаснее Velocity с modern forwarding.

Когда на одном сервере уже тесно — хочется лобби, выживание, креатив и мини-игры одновременно — начинается настройка BungeeCord. Прокси принимает всех игроков на один адрес и раскидывает их по внутренним серверам, а переход между режимами происходит без переподключения: человек просто проваливается в другой мир командой или через портал.

Разберём схему целиком: прокси, бэкенды, форвардинг IP и то, что обязательно сломается, если пропустить один пункт.

Как устроена сеть

Игрок соединяется только с прокси. Прокси держит соединение и пересылает пакеты на нужный бэкенд.

Отсюда три следствия:

  1. Наружу торчит один порт — 25565 у прокси. Порты бэкендов должны быть закрыты для внешнего мира.
  2. Бэкенды работают в офлайн-режиме, лицензию проверяет прокси.
  3. Прокси — точка отказа. Упал он — недоступна вся сеть.

BungeeCord держит на себе только трансляцию, поэтому памяти ему нужно немного: 512 МБ – 1 ГБ хватает на сотню игроков. Основная нагрузка остаётся на бэкендах.

Запуск прокси

Скачайте BungeeCord.jar с сервера сборок MD_5 (форк Waterfall больше не развивается — для новой сети разработчики PaperMC рекомендуют Velocity). Положите в отдельную папку и запустите:

код
java -Xms512M -Xmx1G -jar BungeeCord.jar

После первого старта появится config.yml — главный файл, ради которого всё и затевается.

config.yml: настройка BungeeCord по пунктам

Минимально рабочий конфиг выглядит так:

код
listeners:
- host: 0.0.0.0:25565
  motd: '&aМоя сеть'
  max_players: 200
  priorities:
  - lobby
  force_default_server: true
servers:
  lobby:
    address: 127.0.0.1:25566
    restricted: false
    motd: 'Лобби'
  survival:
    address: 127.0.0.1:25567
    restricted: false
    motd: 'Выживание'
  creative:
    address: 127.0.0.1:25568
    restricted: false
    motd: 'Креатив'
ip_forward: true
online_mode: true

Что здесь важно:

  • priorities — куда попадает игрок при входе. Первый в списке становится основным лобби.
  • force_default_server: true — возвращать в лобби даже тех, кто был на другом сервере в прошлый раз.
  • ip_forward: true — передавать бэкендам настоящий IP игрока. Без него все игроки будут выглядеть как 127.0.0.1, и любые баны по IP, антибот-плагины и логи станут бесполезны.
  • online_mode: true — проверка лицензии на прокси. Отключать только если сознательно строите офлайн-сеть с AuthMe.
  • restricted: true у сервера означает, что попасть туда можно только с правом bungeecord.server.<имя> — удобно для тестового бэкенда.

Адреса бэкендов пишите через 127.0.0.1, если всё на одной машине: трафик не пойдёт наружу и не будет лишних задержек.

Настройка бэкендов

На каждом Minecraft-сервере сети правим два файла.

server.properties:

код
server-port=25566
online-mode=false
server-ip=127.0.0.1

Порты у всех разные, online-mode везде false. Строка server-ip=127.0.0.1 заставляет сервер слушать только петлю — снаружи к нему не подключатся физически. Это самый надёжный способ закрыть дыру, но работает он, только если прокси и бэкенды запущены на одной машине. Если серверы сети живут в отдельных контейнерах или на разных машинах, оставьте внутренний адрес и закройте порты бэкендов фаерволом. Остальные параметры файла разобраны в настройке server.properties.

spigot.yml (для Paper/Spigot):

код
settings:
  bungeecord: true

Без этой строки бэкенд не поймёт форвардинг и будет кидать Unable to authenticate или пускать всех как 127.0.0.1.

На Paper 1.19+ есть ещё paper-global.yml с секцией proxies.bungee-cord.online-mode: true — оставьте по умолчанию, если прокси в онлайн-режиме. Значение должно совпадать с online_mode прокси, так написано в справочнике PaperMC.

Ядро на бэкендах должно быть Bukkit-совместимым. Установка Paper описана здесь.

Безопасность

Слабое место любой bungee-сети — открытый бэкенд. Если порт 25566 доступен снаружи и сервер в офлайн-режиме, кто угодно подключается напрямую под ником администратора.

Три уровня защиты, лучше все сразу:

  • server-ip=127.0.0.1 на бэкендах;
  • фаервол, разрешающий доступ к портам бэкендов только с адреса прокси;
  • плагин BungeeGuard или встроенный modern-forwarding (в BungeeCord его нет, это аргумент в пользу Velocity).

Проверяйте результат снаружи, а не с самой машины: попробуйте зайти на ваш_ip:25566 с домашнего компьютера. Должен быть отказ соединения.

Плагины прокси

BungeeCord держит свои плагины, они не совместимы с bukkit-версиями. Стандартный набор:

  • BungeeGuard — защита от прямого подключения к бэкендам.
  • LuckPerms (bungee-версия) — общие группы и права на всю сеть. Про команды читайте в отдельной статье.
  • BungeeTabListPlus — единый таб-лист со всеми серверами.
  • ServerListPlus — нормальный MOTD и иконка.
  • AdvancedPortals или лобби-плагин — переходы порталами вместо команд.

Команда перехода по умолчанию — /server <имя>, список серверов — /server без аргументов.

Общие данные между серверами

Отдельная головная боль: игрок переходит из лобби в выживание, а денег и прав у него нет. Причина в том, что каждый бэкенд хранит данные у себя.

Решается переводом плагинов на MySQL:

  • LuckPerms — общая база прав, ставится на прокси и все бэкенды;
  • экономика — XConomy или CMI вместо файлового EssentialsX, подробности в статье про Vault и экономику;
  • AuthMe — общая база аккаунтов, чтобы пароль спрашивали один раз.

Инвентарь между серверами синхронизируют MultiPaper-подобными решениями или плагинами вроде MySQLInventoryBridge, но чаще этого просто не делают: у лобби и выживания инвентари разные по смыслу.

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

If you wish to use IP forwarding, please enable it in your BungeeCord config as well! — ip_forward: true есть на прокси, но bungeecord: true не выставлен на бэкенде (или наоборот).

Игроков кидает обратно в лобби. Бэкенд не запущен или указан неверный порт. Смотрите лог прокси, там будет Could not connect to target server.

Все игроки с одним IP. Форвардинг выключен. Заодно проверьте, что баны по IP вообще имеют смысл — про них в заметке о банах и ban-list.

Тайм-аут при переходе между серверами. Обычно бэкенд подвисает на сохранении мира. Помогает разнести автосохранение по времени и заняться оптимизацией.

Коротко

Порядок: поднять прокси → прописать серверы в config.yml → ip_forward: true → на бэкендах online-mode=false, bungeecord: true, server-ip=127.0.0.1 → закрыть порты → перевести права и экономику на общую базу. Сравнение BungeeCord с более современным Velocity есть в обзорной статье.

Держать несколько серверов сети на одной площадке проще, чем разносить по разным хостерам — тарифы TeaHost.