RE:NODE

Ресурсы14 мин чтения

Игровой сервер дома или в аренде: что выбрать

Когда запасного ПК дома действительно хватает, а когда CGNAT, скорость отдачи, электричество или ваш собственный IP-адрес делают аренду дешевле.

0 прочтений

Хостинг дома бесплатен примерно так же, как бесплатна машина, когда она уже куплена. Для четырёх друзей, играющих в Terraria по выходным, запасной компьютер на столе - вполне достаточное решение, и арендовать что-либо было бы глупо. Для публичного сервера, на котором сидят незнакомцы, запуск с собственной линии означает, что трафик принимает ваш домашний адрес, весь дом делит с вами простой, когда что-то ломается, а один обиженный игрок с booter-сервисом кладёт всё ваше соединение на целый вечер.

Честный ответ таков: решение сводится к четырём вопросам, и на три из них можно ответить за десять минут. Сидите ли вы за CGNAT, сколько у вас скорости отдачи, можно ли держать машину включённой постоянно и выставляете ли вы свой домашний IP-адрес перед людьми, которых не знаете. Если ответы - нет, достаточно, да и нет, хостите дома и дальше можно не читать. Эта статья о том, как всё проверить, сколько это стоит в обоих случаях и какие есть промежуточные варианты.

Когда хостинг дома - действительно правильный ответ#

Не слушайте тех, кто говорит, что так делать нельзя никогда. Домашний хостинг оказывается верным выбором чаще, чем признаёт хостинговая отрасль, и случаи эти вполне конкретны:

  • Небольшая закрытая компания, которая планирует сессии. Четырём-шести людям, договорившимся играть во вторник, не нужна машина, которая работает в среду. Если вы сами всегда среди игроков, серверу достаточно существовать, пока вы за клавиатурой.
  • Игра со скромным трафиком и небольшим лимитом игроков. Terraria, Factorio, Valheim с парой человек, Project Zomboid на четверых, ванильный мир Minecraft на пятерых. Нагрузка небольшая, и домашняя линия тянет её без труда.
  • Оборудование у вас уже есть, а электричество дешёвое. Мини-ПК, купленный для другого, или старый десктоп, который собирались сдать в утиль.
  • Вы хотите разобраться. Запуск всего самому научит вас сетям за выходные лучше, чем год работы с панелью. Это настоящая причина, и она чего-то стоит.
  • Вы и так на частной сети. Если все заходят через Tailscale, ZeroTier или mesh на WireGuard, то нет ни проброса портов, ни публичной экспозиции, ни проблемы с CGNAT, и доводы в пользу аренды в основном испаряются. Подробнее об этом ниже.

Доводы против столь же конкретны: публичный сервер, который может найти любой; группа, разбросанная по часовым поясам и играющая, пока вы спите; больше восьми-десяти одновременных игроков; всё, что вам было бы жалко потерять; и всё, где подключаются люди, которых вы не знаете.

Три вещи, которые мешают всему работать#

Сидите ли вы за CGNAT?

Carrier-grade NAT означает, что провайдер поставил вас за общий публичный адрес. Тысячи клиентов выходят через один и тот же адрес IPv4, и пробросить порт к вам невозможно, потому что адрес не ваш. Это чрезвычайно распространено в мобильном интернете, у новых оптоволоконных провайдеров и у любого провайдера, у которого закончилось адресное пространство IPv4, то есть у всех.

Проверка занимает тридцать секунд. Зайдите в роутер и найдите WAN- или Internet-IP. Затем узнайте свой публичный адрес из браузера в том же подключении. Если они совпадают, у вас настоящий публичный адрес, и проброс портов сработает. Если WAN-адрес роутера другой, и особенно если он попадает в один из этих диапазонов, вы за CGNAT:

ДиапазонЧто это
100.64.0.0 to 100.127.255.255Carrier-grade NAT, безошибочный признак
10.0.0.0 to 10.255.255.255Частный, то есть роутер стоит за чем-то ещё
172.16.0.0 to 172.31.255.255Частный
192.168.0.0 to 192.168.255.255Частный

Если вы за CGNAT, варианты такие: попросить у провайдера публичный адрес IPv4, который одни выдают бесплатно, а другие за деньги; использовать IPv6, если он есть у обеих сторон, - для закрытой группы это нормально, а для широкой публики бесполезно; вывести туннель через недорогой сервер в другом месте; или взять оверлейную сеть, чтобы публичный адрес не нужен был никому. Компромиссы первых двух вариантов разобраны в статьях статический IP и зачем он может понадобиться и IPv6 и игровые серверы.

Сколько у вас скорости отдачи?

Скорость загрузки здесь не важна. Сервер отправляет мир каждому игроку, поэтому ограничивает его отдача, а домашние подключения устроены наоборот. У линии 500/50 отдача 50 Мбит/с, то есть 6,25 МБ/с. У линии 100/10 - 1,25 МБ/с. Старый VDSL с отдачей в 1 Мбит/с даёт 128 КБ/с, и этого для большинства игр действительно мало.

Примерный исходящий трафик на игрока; лучше измерьте свой, а не верьте таблице:

ИграИсходящий трафик на игрокаПримечания
Minecraft Java5-25 KB/s стабильноБольшие всплески, когда чанки подгружаются движущемуся игроку
Valheim50-150 KB/sМного для такого числа игроков; лимит - 10
Движок Source, 64 tick30-60 KB/sРастёт вместе с tick rate, так что 128 tick примерно вдвое больше
Terraria5-15 KB/sНемного
Project Zomboid20-60 KB/sРезко растёт с числом зомби
Factorio10-30 KB/sТрафик редко бывает ограничением; ограничивает UPS

Умножьте на реалистичный пик числа игроков и прибавьте ещё половину. Десять игроков Valheim по 100 KB/s - это 1 MB/s, то есть 8 Мбит/с постоянной отдачи, а линия в 10 Мбит/с этого не сможет, пока кто-то ещё в доме пользуется интернетом.

Более тонкая проблема - bufferbloat. Когда отдача насыщается, пакеты выстраиваются в очередь в роутере, и у каждого соединения в доме прибавляются сотни миллисекунд задержки, включая игру. Проявляется это так: у всех лаги в ту секунду, когда кто-то заливает видео или запускается backup. Умное управление очередями (fq_codel или cake, на OpenWrt и некоторых домашних роутерах это называется SQM) исправляет это и ничего не стоит. Прогоните тест на bufferbloat до и после. В статье задержка, джиттер и потеря пакетов объясняется, как отличить эти три явления друг от друга, когда игроки жалуются.

Может ли машина работать всё время?

Не «оставите ли вы её включённой», а «разрешено ли ей быть включённой». Реальные сбои скучны и часты: Windows Update перезагружается в три часа ночи, и сервер не поднимается; кому-то понадобился этот ПК для другого дела; на две минуты отключили электричество; у провайдера профилактика; сосед по квартире выдернул шнур. Ничто из этого не драматично, и всё это означает, что сервер лежит, а запустить его некому, потому что удалённой кнопки питания нет.

Если сервер стоит на той же машине, на которой вы играете, появляется вторая проблема. Игровой сервер конкурирует с вашей игрой за CPU, и впечатления игроков теперь зависят от того, чем заняты вы. Именно это выделенный сервер и должен был исправить, о том, почему разделение важно, рассказано в статье что такое выделенный игровой сервер.

Проброс портов как следует#

Если у вас настоящий публичный адрес, порядок всегда один и тот же, и люди пропускают первый шаг.

  1. Дайте серверу фиксированный адрес в вашей локальной сети. Не вписывайте статический IP в машину и не надейтесь на лучшее, а используйте DHCP-резервирование в роутере, привязанное к MAC-адресу машины. Проброс на 192.168.1.42 ломается в тот день, когда роутер отдаст этот адрес телефону.
  2. Откройте порт в собственном файрволе машины. Windows Defender Firewall по умолчанию блокирует входящие; в Linux используйте ufw allow 25565/tcp или эквивалент. Именно этот шаг делает так, что в локальной сети работает, а снаружи нет.
  3. Добавьте проброс в роутере. Внешний порт, внутренний порт, внутренний IP и правильный протокол. Ошибка UDP или TCP - самая частая неудача: Minecraft Java работает по TCP, Valheim по UDP, игры на Source по UDP, а некоторым нужны оба.
  4. Пробросьте и порт запросов. Многие игры используют второй порт, чтобы браузер серверов мог их видеть. Сервер, к которому друзья заходят по IP, но который не появляется ни в одном списке, почти всегда страдает от пропущенного порта запросов; закономерность разобрана в статье порты игрового сервера.
  5. Проверьте снаружи. Не из своей сети. Многие роутеры не поддерживают hairpin NAT, поэтому подключение к собственному публичному адресу изнутри дома не работает, даже когда всё правильно. Используйте мобильный интернет при выключенном wifi или попросите друга.

Избегайте двух коротких путей. UPnP позволяет любой программе в вашей сети открывать порт, не спрашивая вас, и это удобно, пока им не воспользуется что-то, чего вы не устанавливали. А «DMZ host» пробрасывает все порты на одну машину, превращая один открытый игровой порт в полностью открытый компьютер. Пробрасывайте два нужных порта и ничего больше; коротко о том, почему так, - в статье правила файрвола, которые важны.

Наконец, домашние IP-адреса меняются. Если ваш меняется, у всех ломаются сохранённые записи сервера. Динамический DNS решает это: небольшой клиент на машине обновляет запись A каждый раз, когда адрес меняется, а игроки используют имя. Сама запись разобрана в статье как привязать домен к игровому серверу.

пути внутрь нетпробросить нельзяисходящий туннельтак работаетИгрокзаходит по IPCGNAT провайдераобщий публичный IPv4Ваш роутерпроброс порта заданДомашний ПКигровой серверНебольшой VDSконец туннеля
Почему проброс порта не работает за CGNAT

Сколько на самом деле стоит держать машину дома#

Электричество - расход, о котором забывают, и его легко посчитать. Умножьте среднюю потребляемую машиной мощность у розетки в ваттах на 0.72, чтобы получить киловатт-часы в месяц, а затем на ваш тариф.

МашинаТипичная мощностькВт·ч/месяцПри 0.30 за кВт·ч
Маленькая плата на ARM5-8 W4-61.20-1.80
Мини-ПК, энергоэффективный CPU8-15 W6-111.80-3.30
Ноутбук, оставленный в розетке15-30 W11-223.30-6.60
Старый десктоп, простой50-90 W36-6510.80-19.50
Игровой десктоп под нагрузкой150-300 W108-21632-65

Эта таблица сама закрывает большинство споров. Энергоэффективный мини-ПК обходится в пару денежных единиц в месяц и по чистым деньгам обгоняет арендованный тариф - после того как вы его купили. Старый системник, работающий круглосуточно, съедает электричества больше, чем стоит тариф игрового сервера, и это до шума, тепла и вентилятора.

Добавьте честно и остальную часть учёта: само оборудование, амортизированное за два-три года, ИБП, если вы переживаете об отключениях питания, второй диск, если хотите, чтобы мир пережил отказ диска, и ваше собственное время. Затем сравните с реальной цифрой: большинство игровых тарифов начинаются от $3-9 в месяц, а от чего зависит эта цифра, разобрано в статье сколько стоит игровой сервер. За два года мини-ПК на 15 W, который у вас уже есть, выигрывает по деньгам. Десктоп, который вы оставляете включённым, - нет.

Проблема безопасности, которую не настроить#

Всё вышесказанное решается усилиями. Эта проблема - нет, и именно она настоящая причина, по которой публичные серверы не запускают из спален.

Ваш домашний IP-адрес становится публичным. Каждый игрок, заходящий по IP, знает, где вы живёте, в том смысле, который важен. В любой игре с браузером серверов адрес публикуется. Игрок, которого вы забанили, может направить на него booter за пять евро, и весь ваш дом - рабочие звонки, школа, телефоны всех - остаётся без интернета, пока это не прекратится. Ваш провайдер не отфильтрует это за вас и не станет. Хостинг-провайдер стоит за фильтрацией у вышестоящих операторов, которая отбрасывает очевидные объёмные атаки; домашняя линия не стоит ни за чем. Статья DDoS-атаки на игровые серверы простыми словами ясно говорит, что фильтрация может и чего не может, и для домашней линии ответ - «ничего».

Скомпрометированный игровой сервер оказывается внутри вашей сети. Игровые серверы запускают моды, написанные посторонними, а мод - это код с полным доступом к машине. Оттуда всё остальное в вашей локальной сети - NAS, принтер, рабочий ноутбук, страница администрирования роутера - достижимо без пересечения файрвола. На арендованном сервере взлом стоит вам сервера. Дома он стоит вам сети.

Если вы всё же хостите дома, уменьшите радиус поражения:

  • Поставьте сервер в отдельный VLAN или в гостевую сеть роутера, если она изолирует клиентов как следует.
  • Запускайте его от непривилегированного пользователя, в контейнере, если хватит терпения, но никогда не от Administrator или root.
  • Обновляйте систему, а также игру и её моды.
  • Не используйте в конфигурации RCON или администратора пароль от чего-либо ещё.
  • Считайте машину расходным материалом и храните backup мира в другом месте.

Ничто из этого не решает проблему IP-адреса. Не решает её ничто, кроме отказа от его публикации.

Золотая середина: частные сети и небольшой VDS#

Между «выставить свой дом» и «заплатить кому-то другому» есть два варианта, и оба недоиспользуются.

Оверлейная сеть. Tailscale, ZeroTier или простой WireGuard объединяют всех игроков и сервер в одну частную сеть. Нет ни проброса портов, ни проблемы с CGNAT, ни публичного IP, и ничего не выставлено в интернет. Игроки подключаются к частному адресу, доступному только участникам вашей сети. Цена в том, что каждому нужно установить клиент и присоединиться, что исключает публичный сервер и совершенно нормально для компании друзей. Для небольшого закрытого мира это лучший ответ на этой странице, и он бесплатен.

Туннель через недорогой сервер. Если вы за CGNAT, но хотите публичный адрес, небольшая машина в другом месте с публичным IP может принимать туннель WireGuard от вашей домашней машины и пересылать по нему игровые порты. Это работает, это хороший проект на выходные, и он переносит риск DDoS на арендованную машину вместо вашего дома. Цена - задержка: каждый пакет теперь идёт в обход, так что выбирайте точку выхода поближе к себе или к вашим игрокам.

VDS, которым вы управляете сами - третья дверь. Вы получаете root, публичный адрес, фильтрацию выше по цепочке и никаких счетов за электричество, а заодно и всю работу: обновления, файрвол, backup, контроль процессов. Минимум описан в статье первый час на новом VDS, остальное - в материалах UFW и несколько игровых серверов на одном VDS. Если запускать несколько серверов, так дешевле на каждый, а если один - хлопот больше, чем с панелью. Честное сравнение - в статье выбор между VDS и игровой панелью.

Что даёт аренда и чего не даёт#

Будем честны в обе стороны.

Она даёт публичный адрес, который не ваш, фильтрацию перед ним, машину в здании с резервным питанием и сетевым инженером, оборудование, которое не придётся менять, и сервер, который работает, пока вы спите. На панели она также берёт на себя скучные части: игра установлена нужной версии, порты выделены, пароли администратора и RCON сгенерированы, backup и запланированные перезапуски доступны без написания cron, а консоль открывается с телефона.

Она не даёт меньшей задержки именно для вас. Сервер в дата-центре дальше от вашего дома, чем ваш собственный стол. Если все игроки живут в вашем городе, а хостинг - нет, то домашний хостинг действительно может быть быстрее для всех вас; о том, как выбирать для группы, а не для себя, рассказано в статье где должен жить ваш сервер. Она не даёт и неуязвимости для атак: фильтрация отбрасывает очевидные объёмные атаки, а атаки, похожие на настоящих игроков, не фильтруются нигде.

И аренда не убирает работу, которая всегда была вашей. Моды по-прежнему ломаются при обновлении. Backup по-прежнему нужно проверять. Хостер, который восстанавливает backup за вас, всё равно восстанавливает тот backup, который настроили вы.

Решение, которое можно принять за пять минут#

  1. Проверьте, есть ли CGNAT. Если он есть и вы не хотите туннель, арендуйте или используйте оверлейную сеть. Готово.
  2. Оцените пиковую потребность в отдаче. Если она больше примерно трети скорости отдачи вашей линии, арендуйте.
  3. Решите, будут ли заходить незнакомцы. Если да, не выставляйте перед ними свой домашний IP.
  4. Умножьте мощность машины в ваттах на 0.72 и на ваш тариф. Сравните с ценой тарифа для нужной вам игры.
  5. Спросите себя, нужен ли кому-нибудь сервер, когда вас нет дома. Если да, он должен жить там, где всегда включено.

Если вы остановились на домашнем хостинге, делайте это как следует: DHCP-резервирование, два проброшенных порта, файрвол на машине, динамический DNS, backup вне этой машины и проверка снаружи вашей сети. Если остановились на аренде, начните с самого маленького тарифа, который подходит игре: переход на больший не пересоздаёт сервер, так что начинать с малого ничем не рискуя, а как выбрать, у кого арендовать, подскажет список в статье как выбрать хостинг игровых серверов.

FAQ#

Можно ли запустить игровой сервер на том же ПК, на котором я играю?

Можно, и для закрытой группы это обычно работает. Цена в том, что сервер конкурирует с вашей игрой за CPU, впечатления всех остальных зависят от того, чем заняты вы, а мир доступен только тогда, когда ваш ПК включён. Две отдельные машины, даже дешёвая, снимают все три проблемы.

Как понять, что провайдер посадил меня за CGNAT?

Сравните WAN-адрес, который показывает роутер, с публичным адресом, который сообщает сайт. Если они различаются, особенно если роутер показывает что-то от 100.64 до 100.127, вы за CGNAT, и никакой проброс порта не сработает.

Хватит ли для игрового сервера Raspberry Pi или мини-ПК?

Для лёгких игр с небольшим числом игроков - да. Современный энергоэффективный мини-ПК спокойно тянет небольшой сервер Minecraft, Terraria или Factorio и потребляет меньше 15 W. Пределы - это скорость одного потока и RAM, и для большинства игр они важнее числа ядер.

Друзья заходят, но сервера нет в браузере серверов.

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

Будут ли у меня проблемы с провайдером из-за домашнего хостинга?

Многие домашние договоры запрещают запуск серверов, и контроль редок, пока вы не создаёте заметный трафик или не привлекаете атаку. Прочтите договор. Практический риск - не письмо; он в том, что когда приходит атака, единственный инструмент вашего провайдера - отключить вас.

Домашний хостинг дешевле аренды?

Для маломощного оборудования, которое у вас уже есть, - да: несколько денежных единиц в месяц за электричество против $3-9 за тариф. Для старого десктопа, работающего круглосуточно, - нет: одно электричество обычно превышает цену тарифа, и это до учёта вашего времени.


Комментарии

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

0/2000