Короткий ответ
Добавьте A-запись, указывающую ваш субдомен на IP сервера, с прокси
Cloudflare, установленным на DNS Only (серое облако). Если ваш сервер
работает на порту, отличном от 25565, добавьте также SRV-запись с именем
_minecraft._tcp.play, priority 0, weight 0, вашим портом и вашим субдоменом
в качестве target.
Ключевые моменты
- Выделенный IP на стандартном порту: нужна только A-запись.
- Общий IP или нестандартный порт: A-запись плюс SRV-запись.
- Прокси Cloudflare должен быть отключён. Minecraft это не HTTP-трафик.
- A-запись содержит только IP, никогда порт.
- Bedrock не читает SRV-записи. Порт нужно вводить отдельно.
Какая у вас настройка
Всё, что дальше, зависит от одного вопроса: есть ли у вашего сервера собственный IP-адрес, или он делит его с другими серверами на отдельном порту?
- Выделенный IP
- У вашего сервера есть собственный IP, и он может работать на стандартном порту Minecraft, 25565. Одна A-запись, и всё готово.
- Общий IP
- Ваш сервер делит IP с другими и отличается своим портом, например 28017. Вам нужны A-запись и SRV-запись, потому что один домен не может передать порт.
Если не уверены, посмотрите адрес подключения в панели управления. Если он заканчивается на
:25565 или вообще без порта, это первый случай. Любое другое число, значит второй.
Выделенный IP: A-запись
-
Войдите в панель Cloudflare
Войдите в свой аккаунт Cloudflare и выберите домен, который хотите использовать.
-
Добавьте A-запись
Создайте новую DNS-запись типа A со следующими значениями:
- Name: субдомен. Используйте
play, чтобы получитьplay.yourdomain.com. - IPv4 address: IP-адрес вашего сервера, без номера порта.
- Proxy status: отключите это. Облако должно быть серым и показывать DNS Only.
- TTL: Auto.
- Name: субдомен. Используйте
-
Сохраните
Это вся работа. Теперь игроки могут вводить
play.yourdomain.comв клиенте Minecraft и подключаться.
Общий IP: A-запись плюс SRV
На общем IP именно порт определяет ваш сервер, а доменному имени некуда поместить порт. SRV-запись это способ, которым DNS решает эту задачу: она передаёт порт отдельно, и клиент Minecraft знает, что нужно его искать.
-
Сначала создайте A-запись
Точно как выше: тип A, имя
play, IP вашего сервера без порта, proxy установлен на DNS Only, TTL Auto. SRV-записи нужно на что-то указывать, и это именно она. -
Создайте SRV-запись
Добавьте вторую запись, на этот раз типа SRV:
- Name: служба и протокол, за которыми следует ваш субдомен, например
_minecraft._tcp.play. - Priority:
0 - Weight:
0 - TTL: Auto
- Port: порт вашего сервера Minecraft, например
28017. - Target: ваш домен, например
play.yourdomain.com.
- Name: служба и протокол, за которыми следует ваш субдомен, например
-
Сохраните обе записи
Теперь игроки могут подключаться, используя только
play.yourdomain.com, а клиент сам найдёт порт.
Что на самом деле делает SRV-запись
A-запись отвечает на вопрос "какой IP у этого имени". SRV-запись отвечает на более конкретный вопрос: "для этой службы, по этому протоколу, для этого имени, какой хост и порт мне использовать".
Вот почему имя выглядит странно. _minecraft._tcp.play разбирается так:
_minecraft- Служба. Клиент Minecraft ищет именно это.
_tcp- Протокол. Minecraft Java использует TCP.
play- Ваш субдомен, часть, которую игроки реально вводят.
Оба подчёркивания обязательны. Это не украшение и не опция, и пропуск одного из них самая частая причина, по которой в остальном правильная SRV-запись вообще не работает.
Почему прокси должен быть отключён
Оранжевое облако Cloudflare проксирует трафик через их сеть, что реально полезно для сайтов. Оно обрабатывает HTTP и HTTPS.
Minecraft не то и не другое. Это собственный протокол поверх TCP, поэтому проксированная запись передаёт соединения ваших игроков системе, которая не знает, что с ними делать. Симптом это домен, который резолвится, но никогда не подключается, что выглядит как проблема сервера, но ей не является.
Установите proxy status на DNS Only, чтобы значок облака был серым, а не оранжевым. Если у вас уже есть рабочий сайт на этом же домене, оставьте эти записи проксированными и измените только субдомен Minecraft. Эта настройка задаётся для каждой записи, а не для всего домена.
Оговорка про Bedrock
Всё сказанное выше про SRV-записи относится к Minecraft Java Edition. Bedrock
читает SRV-записи иначе, поэтому игрок на Bedrock, указавший
play.yourdomain.com, не будет направлен на ваш нестандартный порт.
Есть два способа это обойти:
- Пусть игроки на Bedrock вводят порт в поле порта при добавлении сервера, а домен в поле адреса. A-запись всё так же выполняет свою работу, просто SRV-запись не используется.
- Получите выделенный IP для сервера, чтобы он мог работать на стандартном порту, и порт вообще не придётся указывать.
Как проверить, что всё сработало
Изменения DNS с TTL Auto обычно вступают в силу в течение нескольких минут, но распространение происходит не везде мгновенно. Прежде чем решить, что что-то не так:
- Попробуйте домен с устройства в другой сети, например с телефона без wifi. Если там работает, а дома нет, это локальное кэширование DNS, а не ваша запись.
- Убедитесь, что A-запись содержит IP и только IP. Вставка полной строки подключения с портом в A-запись частая ошибка, и она приводит к молчаливому сбою.
- Перепроверьте proxy status. Легко создать запись правильно, а Cloudflare по умолчанию снова включит прокси.
- Для SRV перепроверьте оба подчёркивания и то, что target это домен, а не IP.
Если домен резолвится в правильный IP, но подключение обрывается по таймауту, проблема переместилась из DNS на сам сервер, и дальше стоит смотреть, запущен ли сервер и доступен ли он на указанном вами порту.