Кастомный домен и SRV-запись для игрового сервера
Скинуть друзьям адрес сервера вида 185.xx.xx.xx:27016 — рабочий вариант, но неудобный: цифры забываются, при смене хостинга или IP всем приходится заново рассылать новый адрес, а на любом мониторинге серверов домен смотрится солиднее голого IP. Разберём, как повесить нормальный домен на игровой сервер — от простой A-записи до SRV, которая умеет прятать нестандартный порт прямо в DNS.
Содержание
Зачем вообще домен, если есть IP
IP-адрес сервера — штука не вечная: сменили тариф, переехали на другую ноду, хостер выдал новый пул адресов после миграции — и старая ссылка в закладках у игроков умерла. Домен решает это одним движением: меняете A-запись на новый IP, а адрес, который все знают и куда ведут ссылки в Discord и на сайтах-мониторингах, остаётся прежним.
Второй момент — память. mc.mojang-friends.ru игрок наберёт по памяти через месяц, а 185.212.44.17:25577 — нет. Для паблик-серверов с открытым набором это прямо конверсия в удержание игроков.
Третий — если у вас несколько серверов на одном хостинге (например, ванильный Minecraft и модовая сборка), поддомены vanilla.example.com и modded.example.com разводят их по разным адресам, оставаясь на одном корневом домене, который уже куплен и настроен.
Из минусов: домен — это ещё одна точка, которую нужно поддерживать (продлевать, следить за DNS), и лишняя секунда на резолвинг при первом подключении (DNS-кэш решает это после первого захода).
Покупка домена и куда его привязать
Домен покупается у любого регистратора — REG.RU, Namecheap, Timeweb и десятки других, разницы для игрового сервера никакой, важна только панель управления DNS-записями и цена продления (у некоторых регистраторов первый год дешёвый, а продление в 3-5 раз дороже — смотрите сразу на второй год).
Для игрового сервера обычно берут либо отдельный домен (mycraftworld.ru), либо поддомен на уже существующем сайте проекта (play.mycraftworld.ru). Поддомен добавляется в той же панели DNS, где лежит основной домен, отдельно покупать ничего не нужно.
После покупки заходите в раздел управления DNS-записями (обычно называется "DNS management", "Управление зоной" или "Redactor DNS-записей") — именно там будете добавлять A- и SRV-записи. Если домен куплен у одного регистратора, а DNS вы хотите вести через другого (например, через Cloudflare — это бесплатно и даёт удобный интерфейс с проверкой) — придётся сначала прописать NS-записи регистратора на серверы имён Cloudflare, это отдельная настройка вне темы статьи.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверA-запись: базовый вариант для игр со стандартным портом
Если игра слушает стандартный порт (или вы готовы смириться с тем, что игроки вводят порт вручную), достаточно одной A-записи — она просто говорит "это имя = вот этот IPv4-адрес", ничего про порт DNS не знает в принципе.
Пример записи в панели DNS:
Тип: A
Имя: play (или @ для корня домена)
Значение: 185.212.44.17
TTL: 3600
Получится play.mycraftworld.ru → 185.212.44.17. Если игра требует указывать порт отдельно (Rust, ARK: Survival, CS2 через консоль connect), игрок всё равно вводит play.mycraftworld.ru:28015 — цифры порта из адреса никуда не деваются, просто вместо IP теперь домен.
Для IPv6-адреса аналогично используется AAAA-запись — по возможности заведите обе, если хостинг выдал IPv6, часть игроков подключается именно по нему.
TTL (Time To Live) — время в секундах, которое DNS-серверы и резолверы игроков будут кэшировать запись перед повторным запросом. Пока настраиваете и проверяете — ставьте TTL пониже (300-600), чтобы изменения применялись быстро. После того как всё стабильно заработало, можно поднять до 3600-86400: меньше нагрузки на DNS, реже перезапросы.
SRV-запись: когда нужно спрятать нестандартный порт
SRV-запись (Service record) умеет то, чего не может A-запись: указать одновременно и хост, и порт для конкретного сервиса, чтобы игрок вводил только домен без :порт. Из массовых игр это из коробки умеет по сути только Minecraft (клиент сам ищёт SRV-запись перед подключением). У большинства других игр такой поддержки в клиенте нет — тогда домен указывает только на IP через A-запись, а порт игроку придётся вводить отдельно, как в примере выше. SRV в этом случае можно даже не создавать.
Формат SRV-записи содержит пять частей:
_service._proto.name. TTL IN SRV priority weight port target.
Разберём на примере Minecraft. Клиент Minecraft при подключении к play.mycraftworld.ru (без порта) автоматически делает DNS-запрос вида _minecraft._tcp.play.mycraftworld.ru и, если находит SRV-запись, использует указанные в ней хост и порт. Сама запись в панели DNS обычно оформляется отдельными полями:
Тип: SRV
Сервис: _minecraft
Протокол: _tcp
Имя: play (то же имя, что и в A-записи)
Приоритет: 0
Вес: 5
Порт: 25577
Target: play.mycraftworld.ru. (обратите внимание на точку в конце)
TTL: 3600
Что означают числа:
- Priority (приоритет) — если у вас несколько SRV-записей для одного имени (например, резервный сервер), клиент сначала пробует запись с меньшим числом. Для одного сервера просто ставьте
0. - Weight (вес) — распределение нагрузки между записями с одинаковым приоритетом (чем больше вес, тем чаще клиент выбирает эту запись). Для одного сервера значение не критично, обычно ставят
5или1. - Port — реальный порт, на котором слушает игровой сервер (в Minecraft по умолчанию
25565, но если вы менялиserver-portвserver.propertiesна нестандартный — сюда идёт именно он). - Target — куда в итоге резолвится подключение. Это должно быть A-имя (тот же
play.mycraftworld.ru, у которого уже есть своя A-запись на IP сервера), не голый IP-адрес — SRV не принимает IP напрямую в target, только доменное имя.
После такой настройки игрок вводит в клиенте Minecraft просто play.mycraftworld.ru — без порта, без :25577 — и подключается на нужный порт автоматически.
Важный нюанс: у некоторых регистраторов и панелей DNS поле "Сервис" и "Протокол" объединены в одно поле имени записи — тогда вводите их вручную единой строкой: _minecraft._tcp.play (или _minecraft._tcp в зависимости от того, добавляет ли панель домен автоматически). Смотрите документацию конкретной панели, если поля не совпадают с примером выше — концепция везде одна, отличается только форма ввода.
Проверка через dig и nslookup
Прежде чем звать друзей на сервер, проверьте, что запись реально применилась и раздаётся правильно.
Проверка A-записи:
dig play.mycraftworld.ru A +short
Должен вернуться IP сервера, например 185.212.44.17. Если ответ пустой — запись ещё не разошлась по DNS-серверам (см. ниже про TTL и время распространения) либо опечатка в имени.
Проверка SRV-записи для Minecraft:
dig _minecraft._tcp.play.mycraftworld.ru SRV +short
Ожидаемый вывод в формате приоритет вес порт target.:
0 5 25577 play.mycraftworld.ru.
Если вывод пустой, но A-запись при этом резолвится нормально — значит SRV-запись не создана, не сохранена или создана под неправильным именем сервиса (_minecraft._tcp — регистр и подчёркивания важны, опечатка ломает всё).
На Windows аналог через nslookup:
nslookup -type=SRV _minecraft._tcp.play.mycraftworld.ru
и для A-записи:
nslookup play.mycraftworld.ru
Если dig или nslookup показывают верный результат, а игра всё равно не подключается — проверьте, не залипло ли старое значение в локальном DNS-кэше самого игрока (у него ещё может висеть старый TTL) и попробуйте зайти с мобильного интернета или через VPN как независимую проверку. Полезно свериться и с онлайн-инструментами вроде https://dnschecker.org — они показывают, как запись резолвится из разных точек мира, что особенно важно, если у вас сервер в UK-локации с игроками из разных регионов.
Время распространения и типичные грабли
Изменения в DNS не появляются мгновенно везде одновременно — это называется распространением (propagation). Реальное время зависит от TTL старой записи (если был TTL 86400 — старые резолверы могут отдавать кэш ещё почти сутки) и от того, как быстро обновляются NS-серверы регистратора. На практике для новой записи с разумным TTL (300-3600) обычно всё встаёт за 15-60 минут, но полное распространение по всем резолверам мира иногда занимает до 24-48 часов — это нормально, паниковать не стоит.
Частые ошибки, которые встречаются на практике:
- Забыли точку в target у SRV-записи. Некоторые панели требуют FQDN с точкой на конце (
play.mycraftworld.ru.), без неё запись может резолвиться некорректно или не сохраниться вовсе. - SRV указывает на IP вместо доменного имени. Target должен быть именем, у которого есть собственная A-запись, а не сырой адрес.
- Порт в SRV не совпадает с реальным портом сервера. Если меняли порт в конфиге игры после создания SRV-записи — не забудьте обновить и запись, иначе игроки будут получать "Connection refused".
- Проверяют домен раньше, чем прошло распространение, и делают вывод, что "не работает", хотя нужно просто подождать.
- Не выставили TTL пониже перед экспериментами — потом при любой правке приходится ждать час-два, пока применится новое значение.
- Путают SRV с A при играх, которые SRV не поддерживают — создают SRV-запись для Rust или CS2 и удивляются, что порт всё равно приходится вводить вручную. SRV работает только там, где клиент игры сам её запрашивает.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверЧастые вопросы
Можно ли использовать один домен для нескольких игровых серверов?
Да, через поддомены: mc.example.com на A-запись с IP Minecraft-сервера, rust.example.com — на IP Rust-сервера (или тот же IP, если серверы на одном хостинге, но разных портах). Каждый поддомен настраивается отдельной A-записью в той же зоне DNS.
Работает ли SRV-запись для Rust или ARK?
По умолчанию нет — клиенты этих игр не делают SRV-запрос при подключении. Домен для них работает только как замена IP через A-запись, а порт всё равно указывается отдельно после двоеточия.
Нужно ли что-то настраивать на самом сервере, чтобы заработал домен?
Нет, DNS-запись — это исключительно настройка на стороне регистратора/DNS-провайдера, сервер игры про домен ничего не знает и продолжает слушать порт как обычно.
Сколько ждать, чтобы новая запись заработала у всех игроков?
Обычно 15-60 минут при TTL 300-3600, но у части резолверов из-за кэша старого значения может занять до суток — это нормальное поведение DNS, а не признак ошибки.
Можно ли поставить SRV-запись без A-записи для того же имени?
Технически SRV может ссылаться на другое имя, у которого есть A-запись, но проще и надёжнее держать A-запись под тем же именем, на которое смотрит target в SRV — меньше путаницы при отладке.
Что делать, если хостинг выдаёт динамический IP, который может смениться?
Либо просить у хостинга статический IP (обычно доступен как опция), либо настраивать Dynamic DNS-клиент, который сам обновляет A-запись при смене адреса — но для стабильного игрового сервера правильнее сразу брать план со статическим IP.