Insurgency: сервер не отображается в браузере серверов
Сервер Insurgency поднят, в консоли всё зелёное, srcds_run не падает, а в игре открываешь вкладку "Интернет" в браузере серверов — и своего сервера там нет. Знакомая история, и в 9 случаях из 10 причина одна из пяти: сервер всё ещё в LAN-режиме, порт или адрес в параметрах запуска не совпадают с тем, что реально слушается, файрвол режет трафик, сервер не зарегистрирован в мастер-сервере Steam из-за отсутствия GSLT, либо просто сработали клиентские фильтры браузера. Разберём по порядку, от самого частого к самому редкому.
Содержание
Убедитесь, что сервер реально слушает нужный порт
Прежде чем разбираться с Steam и файрволом, исключите банальность — процесс мог слушать не тот адрес или не тот порт, который вы проверяете. На самом сервере:
ss -tulnp | grep srcds
Смотрите на адрес привязки в выводе. Если видите 127.0.0.1:27015 — сервер слушает только loopback, снаружи он в принципе недоступен, даже если все остальные пункты этой статьи идеальны. Insurgency биндится на 0.0.0.0 по умолчанию, но если в скрипте запуска явно прописан -ip с внутренним адресом (например, при multi-homed VPS с несколькими сетевыми интерфейсами) — сервер может уйти не на тот IP.
Второй момент — сверьте порт из строки запуска с тем, что реально в логе при старте. Ищите строку вида Server listening on port 27015 сразу после инициализации карты. Если запускали несколько инстансов Insurgency на одной машине без явного -port для каждого — второй процесс либо не стартует (порт занят), либо стартует с ошибкой, которую легко пропустить в потоке лога.
sv_lan и sv_region — самая частая причина
Если сервер слушает правильный адрес и порт, но всё равно невидим — первое, что нужно проверить в server.cfg или в параметрах запуска:
sv_lan 0
sv_lan 1 — режим локальной сети: сервер сознательно не регистрируется в интернет-браузере серверов Steam, его видно только в локальной сети или по прямому подключению через консоль (connect ip:port). Это стандартная настройка по умолчанию у некоторых сборок и частая причина "сервер работает, но невидим" — параметр выставлен ещё с этапа локального тестирования и забыт при переезде на прод.
Второй параметр, который стоит проверить:
sv_region 255
255 означает "весь мир" — сервер участвует в общей выдаче без региональной привязки. Если кто-то явно прописал конкретный номер региона, а он не совпадает с тем, что игрок ожидает увидеть при фильтрации по региону в браузере (или просто задан неверно), сервер физически зарегистрирован, но выпадает из части выдачи. Для большинства случаев проще оставить 255 и не трогать этот параметр вообще.
После правки server.cfg сервер нужно перезапустить — sv_lan и sv_region не применяются "на лету" через exec без рестарта в большинстве сборок, надёжнее перезапустить процесс целиком.
Поднять сервер Insurgency за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверПараметры запуска: порт, hostname и конфликт с server.cfg
Иногда причина не в самом server.cfg, а в том, что параметры командной строки при запуске расходятся с тем, что прописано в конфиге, и движок использует не то, что вы думаете. Рабочая строка запуска выглядит так:
./srcds_run -game insurgency +exec server.cfg -port 27015 +maxplayers 16
Частые грабли здесь:
- Порт указан дважды с разными значениями — например,
-port 27015в systemd-юните, а вserver.cfgгде-то случайно осталсяhostportили переопределение из старого конфига. При конфликте побеждает не всегда то, что вы ожидаете, поэтому проще держать номер порта только в одном месте. - hostname с непечатаемыми символами или кавычками не по счёту —
hostname "Мой сервер Insurgency | RUбез закрывающей кавычки может сломать парсинг остальной части конфига, и до части команд после этой строки выполнение просто не доходит, включая критичные для видимости параметры ниже по файлу. -portне указан вообще — тогда используется порт по умолчанию 27015, что обычно нормально для одного сервера на машине, но при нескольких Insurgency-инстансах на одном хосте без явного порта для каждого второй процесс либо конфликтует, либо тихо перекрывает первый.
Если поднимаете сервер впервые и параметры запуска путаются — весь процесс с нуля, от установки через SteamCMD до systemd-автозапуска, разобран в статье как поднять сервер Insurgency.
Файрвол: и на сервере, и на уровне облака
Даже при правильном sv_lan 0 сервер не появится в браузере, если снаружи не достучаться до игрового порта — Steam-браузер по факту опрашивает сервер напрямую по UDP, а не только читает данные из общего списка. Insurgency (2014, Source engine) использует UDP 27015 и для игрового трафика, и для ответа на запросы браузера серверов — отдельного query-порта, как в некоторых других играх, здесь нет.
Проверка и открытие на Ubuntu/Debian:
sudo ufw allow 27015/udp
sudo ufw status verbose
Если сервер стоит на VPS, файрвол ОС — не единственный уровень. У части хостеров есть отдельный облачный файрвол (security groups) поверх ОС, и правило в ufw его не отменяет — нужно проверять оба слоя отдельно. На выделенных игровых тарифах MAATRIX GAMES такого дополнительного облачного слоя нет: если порт открыт в ОС, он открыт снаружи.
Проверить со стороны — снаружи, не с самого сервера — можно через canyouseeme.org, но учитывайте, что сервис по умолчанию тестирует TCP, а Insurgency работает по UDP: "closed" от такого чекера в данном случае можно смело игнорировать, ориентируйтесь на nmap -sU с другой машины или просто на факт, что игрок реально может подключиться по прямому IP через консоль (connect). Полный разбор диагностики портов, включая разницу VPS и домашнего роутера — в статье порт не проброшен: как проверить и исправить, а системный подход к настройке правил файрвола — в статье про порты и файрвол для игрового сервера.
Регистрация в мастер-сервере Steam и GSLT
Отдельная категория проблем — сервер технически доступен и sv_lan 0 стоит правильно, но в браузере серверов либо не появляется вовсе, либо появляется на короткое время и пропадает. Причина обычно в том, что Source-серверу для стабильной постоянной регистрации в мастер-сервере Steam нужен собственный Game Server Login Token (GSLT) — Valve ввела это требование для дедик-серверов на движке Source как защиту от злоупотреблений анонимными слотами.
Без GSLT сервер может подключиться к мастер-серверу как анонимный, но такая регистрация ограничена по времени и не гарантирует стабильное появление в общей выдаче — отсюда симптом "то виден, то нет" без видимых изменений в конфиге. Получить токен:
- Зайдите на steamcommunity.com/dev/managegameservers под своим Steam-аккаунтом.
- Укажите App ID сервера Insurgency — 237410.
- Создайте токен, привяжите его к описанию (например, "main server"), скопируйте значение.
Добавьте токен в параметры запуска:
./srcds_run -game insurgency +exec server.cfg -port 27015 +sv_setsteamaccount XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Токен привязан к конкретному App ID и не подходит для другой игры (например, тот же аккаунт для Insurgency: Sandstorm потребует отдельный токен под её App ID). Если сервер перезапускается часто — храните токен в отдельном файле конфигурации или переменной окружения systemd-юнита, а не только в истории команд.
Задержка индексации и фильтры браузера серверов
Если все технические пункты выше в порядке, а сервера всё ещё не видно — не спешите менять конфиг заново. Между регистрацией сервера в мастер-сервере и появлением в клиенте у игрока проходит некоторое время: клиент Steam кэширует список и обновляет его не мгновенно при каждом открытии вкладки. Обычно задержка в пределах нескольких минут, но если вы только что перезапустили сервер после правки конфига — дайте ему 5-10 минут и обновите список вручную (кнопка Refresh в браузере серверов), прежде чем считать, что не работает.
Второй момент — фильтры на стороне игрока часто скрывают вполне рабочий сервер:
- "Скрыть полные" / "Скрыть с паролем" / "Скрыть пустые" — если ваш сервер пустой и вы одновременно с этим ищете его же с включённым фильтром "скрыть пустые", вы его не найдёте, хотя всё работает штатно.
- Фильтр по версии игры — сервер на устаревшей или, наоборот, слишком свежей версии относительно клиента может не попадать в выдачу по умолчанию, если у игрока включена строгая фильтрация по версии.
- Вкладка "Избранное" вместо "Интернет" — банально, но проверяющий иногда смотрит не там: свежий сервер нужно искать во вкладке Internet, в Favorites он появится только после ручного добавления.
- Региональный фильтр — если у сервера задан конкретный
sv_region, а игрок фильтрует по другому региону, сервер не попадёт в выдачу этого игрока, даже будучи полностью рабочим (см. раздел проsv_regionвыше).
Если после проверки всех пунктов сервер всё равно не находится, а RCON-доступ у вас уже настроен — удобно временно понаблюдать за логами сервера в реальном времени через RCON-подключение, пока кто-то из друзей пробует подключиться напрямую по IP: так сразу видно, доходит ли запрос до сервера вообще. Как настроить и пользоваться — в статье про RCON-подключение и основные команды.
Поднять сервер Insurgency за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер виден по прямому подключению (connect ip:port), но не в браузере — это тот же баг?
Нет, это отдельная и хорошая новость: сервер физически доступен и слушает порт правильно, проблема именно в регистрации/видимости в списке — почти всегда sv_lan, GSLT или фильтры, а не файрвол и не сеть.
Сколько ждать после смены sv_lan 0 и рестарта, прежде чем паниковать?
Обычно сервер должен появиться в течение нескольких минут после первого успешного heartbeat к мастер-серверу. Если прошло 15-20 минут и всё ещё пусто — проверяйте GSLT и файрвол, а не ждите дальше.
Нужен ли GSLT, если сервер приватный и играют только друзья по паролю?
Если друзья подключаются напрямую по IP или через connect, GSLT не обязателен. Он нужен именно для стабильной публичной видимости в общем браузере серверов — без него сервер может то появляться, то исчезать.
Можно ли использовать один и тот же GSLT-токен на нескольких серверах Insurgency одновременно?
Нет, токен привязан к одному активному инстансу сервера. При попытке использовать его одновременно на двух серверах один из них получит ошибку регистрации или будет отключён от мастер-сервера.
Что делать, если у сервера включен sv_pure 1 — это влияет на видимость в браузере?
Нет, sv_pure регулирует, какие клиентские файлы допустимы при подключении, и на регистрацию в мастер-сервере или видимость в списке никак не влияет — это про читерские моды, а не про листинг.