DGuard

Как собрать сеть серверов Minecraft: прокси, лобби, общая база и защита

Сеть — это прокси на входе, лобби и режимы за ним, общая база данных для плагинов, чьи данные должны быть одинаковыми везде, и файрвол, который закрывает серверы от прямых подключений. Разбираем, что где стоит и как это связать, а настройку самого Velocity — в отдельной статье.

Команда DGuard6 мин

Коротко: игроки подключаются к прокси Velocity — это единственный открытый порт сети. За ним стоят игровые серверы на Paper или Leaf: лобби и режимы. Velocity передаёт им данные игроков через modern forwarding с секретным ключом, а сами серверы закрыты файрволом. Права, баны и экономика, которые должны действовать во всей сети, хранятся в одной MySQL или MariaDB, а изменения разносит по серверам служба сообщений. Античит ставится на каждый игровой сервер.

Из чего состоит сеть

ЧастьЧто делаетЧем закрыть
ПроксиПринимает игроков на одном адресе и переводит между серверами без выхода из игрыVelocity — см. Velocity или BungeeCord
ЛоббиПервый сервер после входа: навигатор по режимам, правила, новостиPaper или Leaf
РежимыВыживание, BedWars, анархия — каждый на своём сервереPaper или Leaf
База данныхОбщие данные плагинов: права, баны, экономикаMySQL или MariaDB — см. MySQL для плагинов
Брокер сообщенийМгновенно сообщает серверам об изменениях; нужен некоторым плагинамПо необходимости — Redis

Держать все серверы на одной версии Minecraft проще всего: одинаковые плагины, одинаковые конфиги, а некоторые сетевые плагины, например HuskSync, по документации требуют одну и ту же версию на всех серверах.

Прокси и передача данных игроков

velocity.toml — серверы сети
bind = "0.0.0.0:25565"
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"

[servers]
lobby = "127.0.0.1:30066"
survival = "127.0.0.1:30067"
bedwars = "127.0.0.1:30068"

try = [
    "lobby"
]
  • [servers] — имена и адреса серверов, имя — то, что игрок пишет в /server.
  • try — куда Velocity отправляет игрока при входе и при кике с сервера. Первым ставьте лобби, тогда упавший режим вернёт игроков туда, а не выкинет из сети.
  • failover-on-unexpected-server-disconnect — переводить ли игрока на другой сервер, если его сервер отключился нештатно, или отключать.
  • player-info-forwarding-mode = "modern" — безопасная передача ника, UUID, IP и скина с секретом из forwarding.secret. На каждом сервере — proxies.velocity в config/paper-global.yml с тем же секретом и online-mode=false в server.properties.

Пошаговая настройка, конфиги серверов и типичные ошибки — в статье «Как настроить Velocity».

Закройте серверы от прямых подключений

Серверы за прокси работают в offline-режиме: аккаунт проверяет Velocity. Если к серверу можно подключиться в обход прокси, войти можно под любым ником — документация Velocity прямо говорит, что modern forwarding не заменяет файрвол. Наружу открыт только порт прокси: серверы на той же машине слушают 127.0.0.1, на других машинах — пускают только IP прокси. Защита самого прокси от ботов и атак — в статье боты и DDoS.

Где ставить плагины: прокси или сервер

ПлагинГдеПочему
LuckPermsНа каждом сервере; на прокси — для прав плагинов прокси и режима pluginmsgКопия на прокси не заменяет копии на серверах: права на сервере проверяет только копия на этом сервере
АнтичитНа каждом игровом сервереПрокси пересылает пакеты, но не видит мир, движение и бой
ViaVersionНа серверах, рядом с античитомДокументация ViaVersion просит одно место, и на прокси античиты работают хуже — см. ViaVersion
Анти-ботНа проксиОтсекает ботов до того, как они дойдут до серверов, — см. боты и DDoS
HuskSyncНа каждом сервере, не на проксиТак требует его документация

Общая база: права LuckPerms на всю сеть

Документация LuckPerms ставит одно обязательное условие для сети: все копии плагина подключены к одной базе — MySQL, MariaDB, PostgreSQL или MongoDB, к одной и той же базе данных. Файловые H2 и SQLite в сети не подойдут: их данные не поделить между серверами.

plugins/LuckPerms/config.yml на сервере выживания
server: survival

storage-method: mariadb
data:
  address: 10.0.0.2
  database: luckperms
  username: luckperms
  password: 'длинный-случайный-пароль'

messaging-service: pluginmsg
  • server — имя сервера для контекста прав: так можно дать права только на выживании. По умолчанию global.
  • messaging-service — как серверы узнают об изменениях. sql — через ту же MySQL или MariaDB, если LuckPerms на прокси нет; pluginmsg — через прокси с LuckPerms, когда прокси один; redis — когда прокси несколько.
  • База, пользователь с правами только на неё и закрытый порт 3306 — в статье MySQL для плагинов, команды LuckPerms — в статье LuckPerms.

Что ещё сделать общим

  • Баны. Стандартные баны хранятся на каждом сервере отдельно, в его banned-players.json: забаненный на выживании зайдёт на BedWars. Нужен плагин наказаний с общей базой или плагин банов на прокси — см. плагины банов.
  • Инвентари. По умолчанию у каждого сервера свои данные игроков. Если режимы должны делить инвентарь, нужен плагин синхронизации: HuskSync, например, переносит инвентари, эндер-сундуки, здоровье, голод и опыт; ему нужны база и Redis.
  • Чат. Общий чат сети делают плагином на прокси: только прокси видит игроков всех серверов. Перед выбором проверьте, что плагин обновляется под ваш Velocity.
  • Навигатор в лобби. Меню или NPC отправляют игрока на режим. Многие такие плагины пользуются каналом сообщений BungeeCord — Velocity его поддерживает, настройка bungee-plugin-message-channel.

Античит в сети серверов

DGuard — лучший античит для современного сервера Minecraft — работает за Velocity и BungeeCord и ставится на каждый игровой сервер на Paper или Leaf: со своим ключом и PacketEvents последнего релиза рядом. На прокси его ставить не нужно. Все серверы сети видны в одной панели, а если сервер 10 минут не выходит на связь, DGuard пришлёт оповещение в Telegram или на почту.

  • Каждому серверу — свой ключ. Добавьте сервер в панели, ключ dg_… вставьте в plugins/DGuard/config.yml → license.key и перезапустите.
  • Исходящий HTTPS. Файрвол закрывает входящие подключения к серверам, а исходящие до сайта DGuard оставьте: через них приходят лицензия, обновления и облачная проверка.
  • Тариф под сеть. Защита на всех тарифах одинаковая, платите за онлайн и число серверов; бесплатный тариф — один сервер до 30 игроков онлайн. Подробности — в тарифах.
  • Команда. Модераторы видят журнал наказаний всех серверов и не получают доступ к оплате — см. команда модераторов.

Частые вопросы

Как сделать сеть серверов Minecraft?

Поставьте прокси Velocity с modern forwarding, за ним — лобби и режимы на Paper или Leaf с online-mode=false, закройте серверы файрволом. Общие данные плагинов храните в одной MySQL или MariaDB.

Нужна ли MySQL для сети серверов?

Для плагинов, чьи данные должны быть общими, — да. LuckPerms в сети требует, чтобы все его копии были подключены к одной MySQL, MariaDB, PostgreSQL или MongoDB.

Как сделать общий инвентарь на нескольких серверах?

Плагином синхронизации, например HuskSync: он ставится на каждый сервер, требует базу данных и Redis и одну и ту же версию Minecraft на всех серверах.

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

На каждый игровой сервер: прокси не видит движение и бой. DGuard ставится на каждый сервер со своим ключом, а все серверы видны в одной панели.

Источники

Все разделы
Прокси и сети7 минКак настроить Velocity: сеть серверов с лоббиСобираем сеть из прокси Velocity, лобби и режима выживания: velocity.toml, безопасная передача данных игроков, конфиги Paper на серверах и файрвол — без него в сеть можно зайти под чужим ником.ЧитатьПлагины7 минMySQL и MariaDB для плагинов Minecraft: когда нужны и как настроитьОдному серверу обычно хватает файловой базы, которую плагин создаёт сам. MySQL или MariaDB нужна, когда данные делят несколько серверов или их очень много. Разбираем, как создать базу и пользователя с правами только на неё, подключить LuckPerms и CoreProtect, не открыть базу в интернет и не потерять её при сбое.ЧитатьЗащита сервера7 минЗащита сервера Minecraft от ботов и DDoSБот-атака и DDoS — разные беды с разными лекарствами, и ни от одной не спасает античит. Разбираем, что делать с наплывом ботов и спамом в чате, как пережить атаку на канал, почему важно спрятать IP сервера и где здесь место античита.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.