Проброс порта - это правило на домашнем роутере, которое говорит: «незапрошенный трафик, пришедший на этот порт, принадлежит вот этой машине внутри сети». Такое правило нужно для каждого порта, который слушает игровой сервер, с правильным протоколом и с адресом, который никогда не меняется. И работает оно только тогда, когда у роутера действительно есть публичный IPv4-адрес, а это с каждым годом встречается всё реже. Арендованный сервер пропускает весь этот слой: он уже стоит на публичном адресе, поэтому «проброс» превращается в «выделение порта», а роутер, NAT провайдера и исходящий канал вашей квартиры больше не стоят на пути. Эта статья именно о сетевой разнице: что делает проброс, что его ломает и что вы меняете, когда выносите сервер из дома.
Если вы ещё решаете, стоит ли вообще держать сервер дома, сначала прочитайте домашний игровой сервер или аренда - там про электричество, аптайм и стоимость. Здесь мы остаёмся на уровне сети.
Что на самом деле делает проброс порта#
Ваш роутер выполняет трансляцию сетевых адресов (NAT). У каждого устройства в доме есть частный адрес (192.168.1.x, 10.0.0.x), и роутер переписывает исходящие пакеты так, будто они пришли с его единственного публичного адреса. Каждый исходящий поток он запоминает в таблице отслеживания соединений, поэтому, когда приходит ответ, он знает, какому устройству его отдать.
Эта таблица - единственная причина, по которой домашние сети по умолчанию незаметно защищены, и единственная причина, по которой игровой сервер дома по умолчанию не работает. Игрок, подключающийся к вашему серверу, отправляет первый пакет сам. Записи о нём в таблице нет, потому что разговор начал не кто-то внутри, и роутер пакет отбрасывает.
Проброс порта - это статическая запись в этой таблице, которую пишете вы:
| Поле | Пример | Что означает |
|---|---|---|
| Внешний порт | 2456-2457 | Порт на вашем публичном адресе, к которому подключаются игроки |
| Протокол | UDP | Совпадает только этот протокол |
| Внутренний адрес | 192.168.1.50 | Машина, на которой работает сервер |
| Внутренний порт | 2456-2457 | Обычно совпадает с внешним |
Технически это destination NAT: роутер переписывает адрес назначения входящих пакетов с public-ip:2456 на 192.168.1.50:2456 и передаёт их дальше. Сервер отвечает, роутер переписывает адрес источника обратно, и игрок видит ответ с того адреса, по которому он подключался. Сам сервер даже не узнаёт, что была какая-то трансляция.
Чтобы всё это работало, должны выполняться три условия, и каждое из них на практике нарушается:
- Со стороны WAN у роутера настоящий публичный IPv4-адрес, а не очередной частный.
- Внутренний адрес в правиле всё ещё принадлежит серверу.
- Ничто между интернетом и сервером - провайдер, второй роутер, собственный файрвол сервера - не отбрасывает пакет раньше.
Какие порты нужны популярным играм#
Большинство пробрасывает один порт, а потом удивляется, почему сервер никто не видит. Играм часто нужен второй порт для списка серверов, и им важен протокол. Ниже - пробросы для домашнего сервера с настройками по умолчанию; полный список с RCON и прочим есть в статье порты игровых серверов.
| Игра | Проброс | Протокол |
|---|---|---|
| Minecraft Java | 25565 | TCP |
| Minecraft Bedrock | 19132 | UDP |
| Valheim | 2456-2457 | UDP |
| Counter-Strike 2 | 27015 | UDP (TCP - только если нужен удалённый RCON) |
| Terraria | 7777 | TCP |
| Project Zomboid | 16261-16262 | UDP |
| 7 Days to Die | 26900 TCP и 26900-26902 UDP | Оба |
| Factorio | 34197 | UDP |
| Palworld | 8211 | UDP |
Из этой таблицы следуют два правила. Пробрасывайте ровно то, что использует игра, и ровно с тем протоколом, который она использует: правило TCP для UDP-игры ни с чем не совпадёт и нигде не выдаст ошибки. И не открывайте в интернет порты RCON или веб-админки только потому, что их перечислило какое-то руководство; администрируйте из дома. В статье безопасный RCON объяснено, почему именно этот порт ищут атакующие.
Сначала закрепите внутренний адрес
Проброс указывает на внутренний адрес. Если машина с сервером получает адрес по DHCP, после перезагрузки или долгих выходных в выключенном состоянии она может получить другой, и проброс начнёт указывать на принтер. Прежде чем писать любой проброс, сделайте в роутере резервирование DHCP, привязанное к MAC-адресу сервера. Можно и вручную прописать статический адрес на самой машине, но только если выбрать его вне пула DHCP роутера, а границы этого пула большинство людей не знает.
Откройте файрвол самой машины
То, что роутер пропустил пакет, - только половина дела. Windows Defender Firewall тоже блокирует незапрошенный входящий трафик, а окно «разрешить этому приложению», которое он показывает при первом запуске, легко закрыть или ответить в нём только для частных сетей. Явное правило понятнее:
New-NetFirewallRule -DisplayName "Valheim server" -Direction Inbound ` -Protocol UDP -LocalPort 2456-2457 -Action AllowВ Linux с ufw это sudo ufw allow 2456:2457/udp. Если сервер доступен с другого ПК в доме, но не снаружи, с файрволом машины всё в порядке, и проблема где-то выше.
Функции роутера, которые мешают#
В бытовых роутерах есть несколько функций, которые плохо уживаются с игровыми серверами. Ничего экзотического в них нет; большинство людей сталкивается хотя бы с одной.
Двойной NAT
Самая частая скрытая причина. Провайдер дал вам модем-роутер, а вы подключили к нему свой роутер. Теперь у вас два NAT подряд: у коробки провайдера публичный адрес, у вашего роутера - частный адрес в сети этой коробки, а у сервера - частный адрес в вашей сети. Проброс на вашем роутере ничего не даёт, потому что пакет не прошёл даже первую коробку.
Заметить это можно на странице состояния роутера: если его WAN-адрес лежит в 192.168.x.x, 10.x.x.x или 172.16-31.x.x, значит, перед ним кто-то выполняет NAT. То же покажет и traceroute изнутри сети:
$ traceroute -n 1.1.1.1 1 192.168.1.1 0.6 ms 2 192.168.0.1 1.2 ms 3 100.72.14.1 8.9 ms ...Два частных хопа подряд - это двойной NAT внутри дома. Адрес из 100.64.0.0/10 после них - это собственный NAT операторского уровня у провайдера, другая и более тяжёлая проблема, о которой говорится в статье NAT и CGNAT для домашнего хостинга. Для двойного NAT внутри дома решения в порядке предпочтения такие: перевести коробку провайдера в режим моста (только модем), чтобы публичный адрес получил ваш роутер; или настроить коробку провайдера пересылать всё на ваш роутер (часто это называется «exposed host» с адресом вашего роутера); или пробросить порты на обоих устройствах.
UPnP и NAT-PMP
UPnP позволяет программам внутри дома попросить роутер открыть порт без вашего участия. Некоторые игровые серверы и лаунчеры так пробрасывают себя автоматически, и когда это работает, этого никто не замечает. Проблемы в том, что на многих роутерах это молча не срабатывает, что аренда правила может истечь и что этим может воспользоваться любая программа на любом устройстве в доме, в том числе та, которую вы не ставили намеренно. Большинство руководств, включая наше, советуют выключить UPnP и прописать пробросы вручную. Если оставляете его включённым, время от времени заглядывайте в таблицу UPnP роутера и смотрите, что там открылось само.
Hairpin NAT, или почему нельзя проверять изнутри
Чтобы подключиться к собственному публичному адресу из своей же сети, роутер должен развернуть пакет и отправить его обратно внутрь. Это называется hairpin NAT или NAT loopback, и многие бытовые роутеры его не поддерживают. В итоге получается самая обманчивая проверка в домашнем хостинге: всё настроено правильно, но со своего ПК по публичному адресу зайти нельзя, и вы решаете, что проброс сломан.
Изнутри дома подключайтесь по LAN-адресу, а публичный адрес проверяйте снаружи - через мобильный интернет с выключенным Wi-Fi или с помощью друга у другого провайдера.
Игровые режимы и ALG
«Игровой режим», «игровое ускорение», SIP ALG и похожие переключатели переписывают или приоритизируют трафик так, что иногда ломают UDP-потоки. Проброс полностью они ломают редко, но если проброс, который должен работать, не работает, попробуйте их выключить, прежде чем покупать новый роутер.
Порты, которые провайдер не пропускает
Некоторые домашние провайдеры блокируют входящий трафик на нескольких портах на бытовых тарифах - обычно это почтовые и веб-порты вроде 25 и 80 - и прямо пишут об этом в условиях. Игровые порты блокируют редко, но сервер, который вы ради хитрости перенесли на известный порт, может попасть как раз на такой. Если проброс на популярном веб-порту не работает, а та же игра на своём порту по умолчанию работает, причина именно в этом.
Адреса, которые меняются#
Под домашним сервером могут меняться два разных адреса.
Внутренний - эту проблему мы решили выше резервированием. И публичный, который на большинстве домашних подключений динамический: он меняется, когда роутер переподключается, когда провайдер проводит работы или просто по расписанию. У каждого игрока, сохранившего ваш сервер по адресу, теперь мёртвая запись.
Dynamic DNS лечит симптом. Небольшой клиент - встроенный во многие роутеры или скрипт на сервере - обновляет A-запись каждый раз, когда меняется публичный адрес, и игроки используют имя вместо числа. Работает это хорошо, с одной оговоркой: у записи есть TTL, и пока он не истёк, резолверы продолжают выдавать старый адрес. Для динамической записи держите TTL коротким (60-300 секунд). В статье статический IP-адрес: когда он нужен разобраны варианты, а привязка домена к игровому серверу - о самой записи.
Что иначе на арендованном сервере#
У арендованного игрового сервера машина стоит в дата-центре на публичном адресе. Никакого вашего NAT, никакой коробки провайдера, никакой семьи, делящей с сервером исходящий канал. Аналог проброса порта здесь - выделение: хостинг назначает серверу адрес и один или несколько портов, и контейнер привязан ровно к ним.
В панели на базе Pterodactyl, на которой работает RE:NODE, это соответствие буквальное. Каждый сервер работает в своём контейнере, и Wings, демон на узле, публикует выделенные порты с публичного адреса узла в контейнер. Игра внутри, как обычно, слушает свой порт. Для игроков это выглядит в точности как игровой сервер на публичном адресе, потому что так оно и есть.
Что меняется на практике:
- Пробрасывать нечего. Выделение и есть проброс. На RE:NODE в каждом тарифе указано, сколько портов в него входит, а дополнительные порты - query, RCON - добавляются и удаляются на вкладке Network. Настройка порта самой игры находится на вкладке Startup, так что обе половины смены порта - в двух вкладках друг от друга.
- Ни CGNAT, ни двойного NAT. Адрес, указанный на странице сервера, - это и есть адрес, по которому подключаются игроки.
- Целью становится не ваш дом. Если кто-то флудит сервер, поток приходит в сеть дата-центра, а не на подключение вашей гостиной. На RE:NODE это означает фильтрацию на входе, которая отбрасывает очевидные объёмные флуды; атаки, похожие на настоящих игроков, не фильтрует никто, и в статье что мы делаем с атаками эта разница описана честно.
- Исходящий канал не принадлежит вашей семье. Нагруженный сервер больше не конкурирует с видеозвонком этажом выше, и трафик сервера не тарифицируется за гигабайт - хотя безлимит не означает разрешения забить общий канал, как объясняет статья трафик и добросовестное использование.
Чем вы жертвуете - так это контролем над периметром. В панели вы не пишете правила файрвола для узла; что доходит до контейнера, решает хостинг, а ваши порты - это те порты, которые вам выделили. Если нужно запустить второй сервис на произвольном порту, он должен уложиться в выделение. На VDS вы получаете обратно весь сетевой стек - вместе со всей работой по его защите.
Рядом друг с другом#
| Вопрос | Дома с пробросом порта | Арендованный сервер |
|---|---|---|
| Публичный адрес | Обычно динамический, иногда общий (CGNAT) | Постоянный на всё время жизни сервера |
| Что вы настраиваете | Проброс на роутере, файрвол ПК, резервирование DHCP | Выделение портов и настройку порта в игре |
| Точки отказа | Двойной NAT, CGNAT, UPnP, файрвол, сменившийся адрес | Неверный порт в конфиге, нет query-порта |
| Куда приходят атаки | На ваше домашнее подключение | В сеть дата-центра |
| Исходящий канал | Общий с вашей семьёй | Канал узла |
| Ваш собственный пинг | Меньше 1 мс в LAN | Такой же, как у всех |
| Проверка изнутри | Не работает без hairpin NAT | Работает откуда угодно |
Строка про пинг заслуживает пары слов. Когда сервер стоит дома, вы играете с задержкой LAN, а все остальные - с интернет-задержкой до вашего дома. В быстром шутере это реальное преимущество, а в кооперативной выживалке этого никто не заметит. Арендованный сервер ставит всех, включая вас, в равные условия, а для группы, разбросанной по Европе, сервер в Германии часто ближе к середине группы, чем дом любого из игроков. Цифры есть в статье где должен стоять ваш игровой сервер.
Как правильно проверить проброс#
С какой бы стороны вы ни были, проверяйте в одном и том же порядке, потому что каждый шаг изолирует один слой.
- Слушает ли сервер и на чём? В Linux -
ss -lnupдля UDP иss -lntpдля TCP. В Windows -Get-NetUDPEndpoint -LocalPort 2456илиnetstat -ano | findstr 2456. Если адрес127.0.0.1, сервер привязан к loopback, и снаружи до него никто никогда не достучится. - Может ли другая машина в LAN зайти по LAN-адресу? Если нет, его блокирует файрвол машины.
- Может ли внешняя машина зайти по публичному адресу и порту? Если в LAN всё работает, а снаружи нет, проблема в роутере или у провайдера: не тот протокол, не тот внутренний адрес, двойной NAT или CGNAT.
- Появляется ли сервер в списке серверов? Если прямое подключение работает, а в списке сервера нет, не хватает query-порта или игре нужен токен входа. Этот случай подробно разобран в статье почему сервер не виден в списке серверов.
# From an outside machine: TCP games$ nc -vz 203.0.113.10 25565# UDP cannot be tested with nc honestly - an open and a filtered UDP# port look the same. Query the game instead (Steam games):$ python3 -c "import a2s; print(a2s.info(('203.0.113.10', 27015)))"Второй команде нужен pip install python-a2s, и она работает только с играми, которые отвечают на запрос A2S от Steam; протокол и инструменты объяснены в статье query-порты и A2S. Пошаговая версия всей этой последовательности с сообщениями об ошибках из игр - в статье почему игроки не могут подключиться к вашему серверу.
Как выбрать#
Проброс портов дома - правильный ответ, когда верно всё сразу: у вашего роутера настоящий публичный IPv4-адрес, группа небольшая, машина может работать постоянно, и вы согласны, что игроки подключаются к вашему домашнему адресу. Это ничего не стоит и многому учит.
Он перестаёт быть правильным ответом, как только ломается хотя бы одно из условий. CGNAT - жёсткий стоп: ни один проброс никогда не заработает, а обходные пути - это туннели или ретрансляторы, о которых говорится в статье туннели и прокси для игровых серверов. Исходящий канал, который не вытягивает нужное число игроков, публичный сервер, который привлечёт внимание, или группа, которая хочет играть, пока вас нет, - мягкие стопы. В этот момент проблема уже не в пробросе, а в самом доме.
FAQ#
Нужно ли пробрасывать порты для арендованного сервера?
Нет. У арендованного сервера уже есть публичный адрес, а порты ему выделяет хостинг. Нужно только убедиться, что игра настроена на выданные вам порты и что второй порт, например query-порт, тоже выделен.
Безопасно ли оставлять UPnP включённым для игрового сервера?
Сам по себе он скорее удобен, чем опасен, но он позволяет любой программе в вашей сети открывать входящие порты без спроса и на многих роутерах молча не срабатывает. Если прописать пробросы вручную и выключить UPnP, всё становится предсказуемее, и вы точно знаете, что открыто.
Почему я могу зайти на свой сервер по LAN-адресу, но не по публичному?
Обычно потому, что ваш роутер не поддерживает hairpin NAT и не может направить пакет изнутри обратно на свой же публичный адрес. Проверьте публичный адрес из другой сети, например с телефона через мобильный интернет. Если оттуда всё работает, ничего не сломано.
Можно ли пробросить один и тот же порт на два сервера в доме?
Нет. Один внешний порт соответствует одному внутреннему адресу. Запустите второй сервер на другом порту и пробросьте его отдельно, и помните, что игры, использующие блок Steam query около 27015, будут конфликтовать, если не перенести и их query-порты.
Замедляет ли проброс портов игру?
Нет. Трансляция выполняется в железе роутера или в ядре за микросекунды. Домашний сервер тормозит из-за того, что очередь исходящего канала заполняется, когда подключением пользуется кто-то ещё, и игроки видят это как скачки задержки.




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