Как настроить SRV-запись для сервера Minecraft

Введение

SRV-запись (Service Record) позволяет игрокам подключаться к вашему серверу Minecraft по доменному имени (например, play.example.com) без указания порта в клиенте. Это особенно актуально, если сервер работает на нестандартном порту (не 25565) или если вы используете прокси (BungeeCord, Velocity) и хотите скрыть реальный порт бэкенда.

В данной инструкции рассматривается настройка на выделенном сервере с Ubuntu, управляемом через панель proxify.cloud (Proxmox VE), и настройка DNS на стороне регистратора домена / DNS-хостинга.


1. Подготовка: получение данных сервера

Перед созданием записи соберите необходимую информацию.

1.1. Узнайте публичный IP-адрес сервера

В панели proxify.cloud перейдите в раздел Серверы → выберите ваш выделенный сервер → вкладка Сеть. Там указан основной IPv4-адрес. Альтернативно, выполните в консоли сервера (SSH или консоль Proxmox → Shell):

curl -4 ifconfig.me

Пример результата: 203.0.113.42

1.2. Определите порт Minecraft-сервера

По умолчанию — 25565. Если вы меняли server-port в server.properties или используете прокси (Velocity/BungeeCord), укажите именно тот порт, на который должны попадать игроки. Проверьте файл конфигурации:

cat /opt/minecraft/server.properties | grep server-port
# или для Docker-контейнеров
docker exec <container_name> cat /data/server.properties | grep server-port

1.3. Выберите поддомен

Решите, какой поддомен будет использоваться для входа. Например:

  • mc.example.com — для прямого подключения к серверу.
  • play.example.com — стандартный алиас для игроков.

2. Настройка DNS-записей у регистратора / DNS-хостинга

Панель proxify.cloud не предоставляет встроенного DNS-хостинга для ваших доменов. Настройку SRV-записей нужно выполнять в панели того сервиса, где куплен домен или куда делегированы NS-серверы (Cloudflare, Reg.ru, Timeweb, GoDaddy, Яндекс 360 и др.).

2.1. Создайте A-запись (целевой хост)

SRV-запись должна указывать на хостнейм (FQDN), а не на IP напрямую. Создайте A-запись для технического поддомена (обычно mc или srv).

Тип Имя (Хост) Значение (IP) TTL Проксирование
A mc 203.0.113.42 Auto / 300 Выключено (DNS Only)

Важно: Если вы используете Cloudflare, обязательно отключите оранжевое облако (Proxy status = DNS only) для этой A-записи. Minecraft-трафик (TCP) не проходит через HTTP/HTTPS прокси Cloudflare (если не используется Spectrum / TCP Shield).

2.2. Создайте SRV-запись

Теперь создайте саму SRV-запись, указывающую на mc.example.com.

Поля записи (названия могут отличаться у разных провайдеров):

Поле Значение Пояснение
Тип SRV
Имя / Хост / Name _minecraft._tcp.play Если хотите заходить по play.example.com. Если корневой домен — @ или оставить пустым (зависит от панели).
Сервис / Service _minecraft Фиксированное значение для Minecraft.
Протокол / Proto _tcp Minecraft использует TCP.
Приоритет / Priority 0 Чем меньше, тем выше приоритет.
Вес / Weight 5 Распределение нагрузки (если несколько серверов).
Порт / Port 25565 Реальный порт вашего сервера (из шага 1.2).
Цель / Target / Destination mc.example.com Точное FQDN из A-записи шага 2.1. Точка в конце обычно не нужна, но если панель требует FQDN — добавьте: mc.example.com.
TTL 300 / Auto Время кэширования.

Примеры для популярных панелей:

Cloudflare (DNS → Records → Add record):

  • Type: SRV
  • Name: play (для play.example.com) или @ (для example.com)
  • Service: _minecraft
  • Protocol: _tcp
  • Priority: 0
  • Weight: 5
  • Port: 25565
  • Target: mc.example.com
  • TTL: Auto
  • Proxy: DNS Only (серое облако)

Reg.ru / Timeweb / Beget (режим "Эксперт" / "Ручная настройка"):

_minecraft._tcp.play 300 IN SRV 0 5 25565 mc.example.com.

Обратите внимание на точку в конце таргета в BIND-формате.


3. Проверка распространения DNS

DNS-изменения применяются не мгновенно. Проверьте корректность записей утилитами.

3.1. Проверка через dig (Linux/macOS/WSL)

# Проверка A-записи
dig +short mc.example.com

# Проверка SRV-записи для поддомена play
dig +short SRV _minecraft._tcp.play.example.com

Ожидаемый вывод SRV:

0 5 25565 mc.example.com.

3.2. Проверка через nslookup (Windows)

nslookup -type=SRV _minecraft._tcp.play.example.com

3.3. Онлайн-проверка

Используйте MXToolbox SRV Lookup или DNS Checker.


4. Настройка firewall на Ubuntu (UFW)

Даже если DNS настроен верно, порт должен быть открыт на уровне ОС. На выделенном сервере в proxify.cloud по умолчанию может быть открыт только SSH (22).

4.1. Разрешите порт Minecraft

sudo ufw allow 25565/tcp comment "Minecraft Server"
sudo ufw reload

4.2. Проверьте статус

sudo ufw status numbered

Должно быть правило:

[ 3] 25565/tcp                ALLOW IN    Anywhere            # Minecraft Server

Примечание: Если вы используете Docker и пробрасываете порт через -p 25565:25565, Docker сам манипулирует iptables и правило UFW может быть не нужно (или даже мешать). Проверяйте sudo iptables -L -n | grep 25565.


5. Настройка server.properties (опционально, но рекомендуемо)

Для корректной работы мотивации (MOTD), иконки сервера в списке и защиты от спама ботов, настройте параметры в файле конфигурации.

5.1. Откройте файл

nano /opt/minecraft/server.properties

Путь может отличаться: /home/minecraft/server.properties, /srv/mc/server.properties или внутри Docker-тома.

5.2. Ключевые параметры

# Порт должен совпадать с SRV-записью (шаг 2.2)
server-port=25565

# Включите онлайн-режим (проверка лицензии Mojang) — настоятельно рекомендуется
online-mode=true

# Максимальное количество игроков
max-players=50

# MOTD — отображается в списке серверов (поддерживает MiniMessage/hex в новых версиях)
motd=\u00A7aМой Сервер \u00A77| \u00A7bplay.example.com

# Включить query для отображения игроков в списке (порт query.port, по умолчанию server-port)
enable-query=true
query.port=25565

# Защита от ботов (требует поддержки клиентом/прокси)
# prevent-proxy-connections=false

Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X). Перезапустите сервер:

# Systemd
sudo systemctl restart minecraft

# Docker
docker restart <container_name>

# Screen/Tmux (в консоли сервера)
/stop
# затем запустите скрипт запуска

6. Тестирование подключения

6.1. Из клиента Minecraft (Java Edition)

  1. Откройте MultiplayerAdd Server.
  2. Server Address: play.example.com (порт не указывать).
  3. Нажмите Done. Сервер должен появиться в списке с правильным MOTD и количеством игроков.
  4. Зайдите на сервер.

6.2. Проверка через консоль (telnet / nc)

# Проверка TCP-соединения
nc -zv play.example.com 25565
# или
telnet play.example.com 25565

Результат: Connection to play.example.com 25565 port [tcp/*] succeeded!

6.3. Проверка SRV резолва клиентом (диагностика)

В логах сервера (latest.log) при подключении по домену должно быть видно, что игрок зашел. Если в логах пусто — проверяйте фаервол и проброс портов на уровне хостинга (если есть отдельный файрвол в панели proxify.cloud → Сеть → Firewall).


7. Особенности работы с прокси (Velocity / BungeeCord / Waterfall)

Если у вас стоит прокси на порту 25565, а бэкенд-серверы (Spigot/Paper) на других портах (25566, 25567):

  1. SRV-запись указывает на прокси. Порт в SRV = 25565 (порт прокси). Target = mc.example.com (A-запись на IP прокси).
  2. BungeeCord config.yml:
    listener:
      host: "0.0.0.0:25565"
      # ...
    server_priorities:
      - lobby
      - survival
    
  3. Velocity velocity.toml:
    [servers]
    lobby = "127.0.0.1:25566"
    survival = "127.0.0.1:25567"
    
    [configuration]
    bind = "0.0