Укажите запись A на адрес, который показывает панель для сервера, дождитесь, пока она разрешится, и дайте игрокам play.example.com вместе с портом. Для почти любой игры это вся работа, и занимает она две минуты. Интересная часть - порт, потому что домен несёт адрес и больше ничего, а лишь немногие игры сами отправляются искать порт.
Есть ровно три способа сделать так, чтобы порт исчез, и один способ жить с ним. Дальше разобраны все четыре, какая игра к какому относится и как проверить результат, прежде чем выкладывать его в Discord.
Разрыв: имя несёт адрес, а игре нужен порт#
Запись A сопоставляет имя адресу IPv4. Запись AAAA делает то же для IPv6. Ни в одной нет поля для номера порта, протокола или пути, и никакие настройки у вашего DNS-провайдера этого не изменят. Так что play.example.com разрешается в 203.0.113.10, а клиент по-прежнему стоит перед машиной с шестьюдесятью тысячами дверей и ждёт, чтобы ему сказали, в какую.
Ваши четыре варианта:
- Сказать людям порт.
play.example.com:27015. Некрасиво, универсально, работает везде и всё равно намного лучше адреса, который никто не запомнит и который нельзя перевыпустить. - Опубликовать запись `SRV`. Клиент ищет её и узнаёт порт сам. Работает только для игр, клиент которых действительно выполняет этот поиск, а на практике это Minecraft Java и несколько не игровых служб.
- Работать на порту, который клиент предполагает. Если игра по умолчанию использует 27015 и вы на 27015, порт никто не набирает. Это самый чистый ответ, когда он доступен.
- Поставить перед сервером прокси. Прокси слушает на ожидаемом порту и пересылает на настоящий изнутри. Стандарт для HTTP и доступно для Minecraft через прокси вроде Velocity. Для большинства UDP-игр недоступно.
Как найти адрес, на который указывать#
Прежде всего получите верный адрес. На хостинге с панелью страница самого сервера показывает адрес и порт, к которым он на самом деле привязан, и именно эта пара идёт в запись и в строку подключения. Копируйте её, а не набирайте по памяти, потому что порт в вашей голове нередко прошлогодний.
Три ловушки на этом шаге:
- Адрес панели - это не адрес сервера.
panel.renode.space- сайт. Это не то место, где слушает ваш игровой сервер, и запись на него ничего не даёт. - Общий адрес - это нормально. Несколько серверов могут стоять за одним адресом на разных портах. Поэтому порт и важен, и поэтому нельзя считать, что порт по умолчанию свободен. Два случая, когда выделенный адрес перестаёт быть необязательным, - когда вас вносят в белый список чужие и когда нужен порт по умолчанию, который нельзя делить, - описаны в статье статический адрес и когда он нужен.
- Порт запросов - не игровой порт. Большинство игр выделяют минимум два. Игроки подключаются к игровому порту; браузеры серверов обращаются к порту запросов. Порт запросов в записи даёт имя, которое разрешается, и подключение, которое никогда не завершается. Полная классификация - в статье порты игровых серверов простыми словами.
RE:NODE не продаёт домены и не ведёт DNS, поэтому сама запись создаётся там, где живёт ваша зона: у регистратора, в Cloudflare или у того, на кого указывают ваши неймсерверы. Ответ на этот вопрос окончательно даёт dig +short NS example.com, а правка записей в панели, которая не авторитетна, - популярный способ потратить впустую день.
Запись A, которая работает всегда#
Это вариант, к которому стоит обращаться, если нет особой причины поступить иначе.
- В редакторе вашего DNS-провайдера создайте запись
A. - Имя:
play, если форма принимает метку,play.example.com, если нужно полное имя. Посмотрите на существующую запись, чтобы понять, какая форма используется. - Значение: адрес IPv4 со страницы сервера.
- TTL:
300, пока вы настраиваете,3600, когда всё устоялось. - Сохраните и разрешите имя снаружи вашей сети, прежде чем кому-то говорить.
play 300 IN A 203.0.113.10node 300 IN AAAA 2001:db8::10Если у вашего провайдера есть функция HTTP-прокси - оранжевое облачко Cloudflare встречают чаще всего, - для этой записи её надо выключить. Такой прокси завершает HTTP и HTTPS. Игровой протокол - ни то ни другое, так что проксированная запись отдаёт игрокам адрес из сети прокси, которая никогда не примет игровое подключение. Запись должна быть только DNS, серое облачко. Что именно оранжевое облачко пропустит, а что нет, изложено в статье Cloudflare для сайтов и игровых серверов.
Когда серверов становится больше одного, перестаньте указывать имена служб прямо на адреса. Положите адрес в имя машины и указывайте имена служб на него через CNAME, чтобы переезд был одной правкой, а не девятью; этот приём разобран полностью в статье поддомены для серверов.
Записи SRV и игры, которые их читают#
Запись SRV несёт хост и порт вместе, так что клиенту, который её запрашивает, порт от игрока не нужен. Загвоздка в том, что клиент должен спросить, а почти никто этого не делает.
Minecraft Java делает. Когда игрок вводит имя хоста без порта, клиент сначала запрашивает _minecraft._tcp.<hostname>, и если запись пришла, берёт из неё цель и порт. Если ничего не пришло, он возвращается к обычному запросу A и предполагает 25565.
_minecraft._tcp.play 300 IN SRV 0 5 25571 node.example.com.node 300 IN A 203.0.113.10Вторую запись забывают чаще всего. Ничто в записи SRV не является адресом: цель - имя хоста, и этому имени нужна собственная запись A. IP-адрес, введённый в поле цели, недопустим и молча не работает. Каждое поле, три формы, в которых бывают формы у регистраторов, и команды dig, которые всё доказывают, разобраны в статье SRV-записи для Minecraft.
За пределами Minecraft Java считайте SRV недоступной, пока не проверили. Minecraft Bedrock такой запрос не выполняет. Игры на движках Source и GoldSrc - тоже. Valheim, Palworld, Rust, Terraria и весь остальной каталог выживалок - тоже. Заметное исключение - голосовые серверы: TeamSpeak 3 использует _ts3._udp, а Mumble - _mumble._tcp, и это стоит знать, потому что нередко это вторая половина DNS сообщества.
Порты по умолчанию и прокси, убирающие порт#
Если порт может быть портом по умолчанию, сделайте его таким и дальше не читайте. Игрок, который вводит play.example.com и ничего больше, - лучший доступный исход, а для игры на её стандартном порту его даёт одна запись A.
| Игра | Игровой порт по умолчанию | Протокол |
|---|---|---|
| Minecraft Java | 25565 | TCP |
| Minecraft Bedrock | 19132 | UDP |
| Игры на Source и GoldSrc | 27015 | UDP |
| Valheim | 2456 | UDP |
| Palworld | 8211 | UDP |
| FiveM | 30120 | TCP и UDP |
| Project Zomboid | 16261 | UDP |
| 7 Days to Die | 26900 | TCP и UDP |
| Terraria | 7777 | TCP |
| Factorio | 34197 | UDP |
| Arma 3 и DayZ | 2302 | UDP |
| Don't Starve Together | 10999 | UDP |
В некоторых играх порты сдвигаются между версиями, поэтому сверяйтесь с портом, к которому ваш сервер действительно привязался, - его печатает консоль при запуске.
Путь через прокси уже, чем ожидают. Обратный прокси работает, понимая протокол достаточно хорошо, чтобы прочитать запрошенное имя хоста и по нему маршрутизировать, поэтому для HTTP он стандартен, а в остальных случаях редок; последовательность объясняется в статье что делает обратный прокси. У Minecraft есть аналог в виде Velocity и BungeeCord: они слушают 25565 и пересылают игроков на бэкенды на внутренних портах и даже могут маршрутизировать по введённому игроком имени, так что creative.example.com и play.example.com попадают на разные серверы за одним публичным портом. Такая сборка описана в статье сеть прокси Velocity для Minecraft. Для UDP-шутера или выживалки нет аналога, на который можно полагаться, а универсальный пересыльщик TCP или UDP добавляет переход и точку отказа, чтобы сэкономить двоеточие.
В игровых тарифах RE:NODE слота для прокси нет, и это сознательно: HTTP-прокси нечего делать с игровым потоком. В тарифы для приложений и сайтов он входит, потому что HTTP - именно то место, где он оправдывает себя.
Что принимает клиент каждой игры#
Запись полезна, только если клиент примет имя в поле. Большинство примет, а те, что отказываются, имеют консольную команду, которая примет.
| Клиент | Куда вводить имя | Примечания |
|---|---|---|
| Minecraft Java | Add Server, поле адреса | Порт не указывайте, чтобы использовалась запись SRV |
| Minecraft Bedrock | Адрес и порт в двух полях | Поиска SRV нет. Выдавайте оба значения |
| Source и GoldSrc | connect play.example.com:27015 | Консоль, с включённой консолью разработчика |
| Браузер серверов Steam | Favourites, Add a Server | В большинстве игр имя принимается; если отказывает, используйте консоль |
| Valheim | Join Game, Add Server | play.example.com:2456, игровой порт, а не порт запросов |
| FiveM | connect play.example.com:30120 | Консоль F8 |
| Игры-выживалки в целом | Диалог Direct Connect | Попробуйте имя; для локализации проблемы вернитесь к адресу |
Если клиент отвергает имя, которое везде разрешается верно, дело в клиенте, а не в вашем DNS. Дайте таким игрокам адрес и порт и идите дальше: имя всё равно окупается для всех остальных и на случай переезда.
Кроссплей осложняет это ещё сильнее. Игрок Bedrock, заходящий на сервер Java через Geyser, подключается к другому порту по UDP, поэтому ему нужна своя пара адрес-порт, какой бы ни была сторона Java; две «входные двери» описаны в статье Geyser и кроссплей с Bedrock.
Как проверить до объявления#
У неудачного входа слишком много возможных причин, чтобы он считался тестом. Разделите DNS, сеть и игру, именно в таком порядке.
$ dig +short A play.example.com @1.1.1.1203.0.113.10$ dig +short SRV _minecraft._tcp.play.example.com @1.1.1.10 5 25571 node.example.com.$ nc -vz play.example.com 25571Connection to play.example.com 25571 port [tcp/*] succeeded!Имя резолвера важно. Явный запрос к 1.1.1.1 или 8.8.8.8 обходит всё, что закэшировали ваш роутер и провайдер, и так вы отличаете «не опубликовано» от «не распространилось». В Windows nslookup play.example.com 1.1.1.1 и Test-NetConnection play.example.com -Port 25571 делают те же две работы.
Для UDP-игры нет рукопожатия, которое мог бы завершить nc, так что проверка порта в полезной форме не существует. Убедитесь, что сервер привязался там, где вы думаете, прочитав консоль при запуске - там об этом сказано, - а затем сделайте единственный тест, который считается: зайдите по имени с машины не из вашей сети. Телефон на мобильном интернете - самый быстрый способ доказать, что путь работает для кого-то, кроме вас.
Чего домен для вас не сделает#
Он не скрывает ваш адрес. Любой разрешит имя за две секунды. Домен - слой удобства, а не защита. Между потоком и вашим сервером стоит фильтрация выше по цепочке, и даже она отбрасывает только очевидный объёмный трафик; честная версия - в статье что мы делаем с атаками.
Он не снижает задержку. Пакеты идут тем же путём, что и раньше. Единственное сетевое число, которое меняет имя, - разовый запрос при подключении.
Он не переживает клиента, закэшировавшего адрес. Некоторые клиенты разрешают имя один раз при подключении и держат результат всю сессию, а список избранного Steam в особенности запоминает то, что нашёл. После переезда просите людей удалить и заново добавить запись, а не разбираться, почему кто-то один по-прежнему попадает на старую машину.
Он не чинит закрытый порт. Идеальная запись, указывающая на порт, где никто не слушает, с точки зрения клиента выглядит так же, как сломанная запись. Если имя разрешается, а вход не удаётся, проблема ушла из DNS.
Переезд сервера и что при этом ломается#
Смысл использовать имя - именно в переезде, так что делайте его как следует.
- За день снизьте TTL записи - и цели
SRV, если она есть, - до300. - Дождитесь полного истечения прежнего TTL, чтобы каждый кэш подхватил короткое значение.
- Перенесите мир или данные, запустите новый сервер и убедитесь, что он работает по адресу.
- Измените запись. Одна строка.
- Оставьте старый сервер работать на несколько часов. Игроки в середине сессии ничего не разрешают заново, а устаревшие кэши продолжают приходить.
- Следите за консолью старого сервера. Когда час никто не подключался, всё.
- Верните TTL обратно.
Остальное, включая то, что данные переезжают до DNS, а не после, описано в статье как переехать, не потеряв игроков.
Три вещи обычно ломаются при переключении. Старая запись всё ещё в кэше роутера у игрока, и он настаивает, что сервер лежит, - пусть попробует адрес напрямую. У нового сервера в файрволе открыт игровой порт, но не порт запросов, поэтому он работает и никогда не попадает в список. И у кого-то в ярлыке зашит IP с тех времён, когда у вас не было домена, - это и есть проблема, ради завершения которой домен покупали.
FAQ#
Можно ли избавиться от порта, чтобы игроки вводили только мой домен?
Только в трёх случаях: игра - Minecraft Java и вы публикуете запись SRV, сервер работает на порту игры по умолчанию либо на порту по умолчанию для вас слушает прокси, понимающий протокол. В остальных случаях play.example.com:27015 - верный ответ, и он всё равно лучше голого адреса.
Нужно ли покупать домен у хостера?
Нет, и обычно это невозможно. Домен покупают у регистратора, а его записи живут там, куда указывают его неймсерверы. Хостинг и DNS - отдельные службы, которые встречаются только в значении одной записи. RE:NODE не продаёт домены и не хостит DNS.
Почему имя работает у меня, но не у друзей?
Почти всегда кэширование. У вашего резолвера новый ответ, а у их - старый, до конца прежнего TTL. Проверьте имя через 1.1.1.1, чтобы увидеть опубликованную правду, и убедитесь, что ни у кого не сохранён адрес со старым портом.
Использовать A или CNAME для игрового сервера?
Запись A подходит и короче на один запрос. CNAME, указывающий на имя машины, лучше, когда серверов больше одного, потому что перенос машины становится одной правкой. Не ставьте CNAME на apex домена - это не разрешено.
Даёт ли привязка домена к серверу сертификат?
Не для игрового сервера, и ему он не нужен: игровые протоколы не используют HTTPS. Сертификаты важны для веб-серверов и серверов приложений, доступных по HTTPS, где слот прокси выпускает и продлевает его для вас, как только имя разрешается.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.