Для прямого подключения из интернета адрес, выданный игрокам, должен вести к UDP-сокету вашего экземпляра Factorio. По умолчанию игра использует 34197/UDP. Правило роутера, фаервол хоста и параметры запуска должны описывать один маршрут. Открытие TCP 34197 его не исправляет.
Инструкция рассчитана на уже работающий сервер и посвящена домашнему роутеру либо сетевым фильтрам VPS. Существующую фабрику сохраняйте. Отказы по паролю, версии и модам разбираются в руководстве по подключению, когда пакеты доходят до нужного экземпляра.
Сначала запишите фактический адрес подключения#
На Linux-хосте посмотрите адреса интерфейсов, маршрут и ожидаемый сокет:
ip -br -4 address
ip -4 route
sudo ss -lunp 'sport = :34197'
Если у экземпляра другой порт, замените 34197 во всех проверках. Сверьте процесс с действующей службой или контейнером. В текущем запуске найдите --port и --bind: значение bind тоже может включать порт. Не запускайте второй сервер только ради появления сокета.
Для службы непосредственно на хосте привязка лишь к loopback не принимает интернет-пакеты, адресованные другому интерфейсу. 0.0.0.0 означает локальные интерфейсы IPv4, а не публичный адрес для друзей. За роутером выбирайте адрес, который есть у самого сервера, а не WAN-адрес маршрутизатора.
До изменения роутера составьте таблицу:
| Параметр | Пример домашнего сервера |
|---|---|
| Закреплённый LAN-адрес сервера | 192.168.1.50 |
| Фактический игровой сокет | UDP 34197 |
| Публичная точка на роутере | Ваш настоящий публичный IPv4, UDP 34197 |
| Назначение проброса | 192.168.1.50, UDP 34197 |
| Адрес для игроков | Публичный IPv4 с окончанием :34197 |
LAN-адрес приведён для примера. Закрепите настоящий адрес через DHCP reservation либо корректную статическую настройку. Правило на вчерашнюю DHCP-аренду может направлять трафик к другому устройству.
Выберите правило для своей схемы сети#
На домашнем роутере создайте UDP-проброс с выбранного внешнего порта на закреплённый LAN-адрес сервера и его внутренний игровой порт. Для первой проверки используйте одинаковые внешнее и внутреннее значения. Широкий диапазон или TCP-профиль от другой игры здесь не нужны.
Сопоставьте WAN-адрес роутера с публичным IPv4 подключения. Приватный адрес RFC1918 либо адрес общего диапазона 100.64.0.0/10 на WAN указывает на вероятный дополнительный NAT. Другое несовпадение WAN и публичного адреса тоже требует проверки; по одному несовпадению нельзя точно установить владельца лишнего слоя.
Если оба последовательно подключённых роутера ваши, нужен согласованный проброс через каждый либо заранее спланированная схема bridge/маршрутизации. Когда внешним преобразованием управляет оператор, внутреннее правило не создаст входящее отображение у него. Уточните возможность публичного адреса с входящими подключениями либо выберите отдельно поддерживаемый маршрут. IPv6 требует своей проверки адресов, доступности у клиентов и фаервола; это не универсальная гарантия обхода CGNAT.
На VPS с публично маршрутизируемым интерфейсом обычно не требуется правило на домашнем роутере. Проверьте фаервол провайдера и отдельно документированный NAT, если он используется. Правило должно относиться к нужному экземпляру и UDP-порту. Игрокам не требуется пробрасывать этот серверный порт на своих роутерах.
У Factorio также есть NAT traversal и подключение через Steam. Работающий маршрут с обходом NAT не доказывает доступность вручную объявленного публичного адреса. И наоборот, ручной проброс не обязателен для любой возможной игровой сессии. Чётко определите, какой путь проверяете.
Разрешите нужный трафик на хосте#
Для Ubuntu с UFW сначала посмотрите действующую политику:
sudo ufw status verbose
sudo ufw status numbered
Если сервер непосредственно на хосте намеренно доступен всем и UDP-разрешения не хватает, добавьте его:
sudo ufw allow 34197/udp
sudo ufw status numbered
Более ранний запрет, другой фаервол или правило провайдера всё ещё могут блокировать попытку. Для закрытой группы с известными исходными адресами используйте соответствующее ограничение источника. При неактивном UFW выясните, чем фильтруется трафик. Включение или сброс фаервола — отдельное изменение с сохранением доступа по SSH и к другим службам.
Административный RCON Factorio оставьте вне публичного игрового правила. У него собственные параметры привязки и порта. Ошибка входа игрока не требует открывать удалённое администрирование.
При Docker bridge проверьте ещё одно преобразование: публикацию порта контейнера на хосте и её протокол. Обычные правила UFW для хоста могут не контролировать опубликованный Docker-трафик. Используйте документированную схему фильтрации своего runtime, сохраняя его сетевую интеграцию.
Подтвердите маршрут из внешней сети#
Попросите игрока с другого интернет-подключения выбрать Multiplayer → Connect to address и ввести проверенный публичный адрес. Локального клиента отдельно подключите к LAN-адресу сервера. Проверка только собственного публичного адреса из той же LAN смешивает внешнюю доступность с поддержкой hairpin NAT у роутера.
TCP-проверка на веб-сайте не подтверждает игровой протокол Factorio. Если соединение не устанавливается, во время новой попытки выполните короткий захват UDP на сервере:
sudo timeout 20s tcpdump -ni any -nn 'udp port 34197'
Команда предполагает установленные tcpdump и timeout, выводит краткие сведения о пакетах и не сохраняет полезную нагрузку. Код завершения timeout 124 означает окончание выбранного окна наблюдения.
Если соответствующего трафика нет, проверьте адрес, вышестоящие правила и фильтр захвата. При входящих пакетах без ответов ищите проблему в доставке к хосту/контейнеру, привязке и логах. Обмен в обе стороны показывает часть пути, но не подтверждает загрузку фабрики. Сопоставляйте время попытки и адрес игрока.
Завершите проверку настоящим входом и полной передачей карты. Зафиксируйте рабочий проброс, правило провайдера и порт экземпляра; временные разрешения, если они добавлялись, удалите осознанно. Для собственных машин Nexardo помогает организовать администрирование инфраструктуры рядом с таким реестром адресов. Храните настройки игры и её сетевого маршрута вместе.




