Counter-Strike 2 Руководство

Не подключается к серверу CS2: где обрывается попытка входа

CS2 работает, но игроки не заходят: проверка адреса, UDP-сокета, двух firewall, пакетов и отказов игры на Linux.

Не подключается к серверу CS2: где обрывается попытка входа

Если выделенный сервер CS2 работает, но игроки извне не могут зайти, проследите одну попытку от указанного адреса до лога игры. Инструкция рассчитана на уже установленный Linux-сервер с прямым доступом по публичному IP. Здесь нет установки CS2 и рекомендаций по актуальным параметрам запуска. Для проверки нужны sudo на Ubuntu 24.04 и игрок из другой сети.

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

Проследите одну попытку прямого подключения. Пакет на сетевом интерфейсе ещё не доказывает доставку игре или допуск игрока.

Найдите фактический процесс и сокет#

На сервере посмотрите имена процессов без полного списка аргументов: в аргументах могут находиться секреты.

bash
ps -eo pid,user,comm
sudo ss -lunp

Найдите процесс CS2 и принадлежащий ему UDP-сокет. Поля сокета и процесса описаны в руководстве ss. Запишите PID, адрес привязки и фактический порт. На VPS с несколькими играми легко принять сокет другого сервера за нужный.

Если процесса нет, сначала изучите лог запуска. При установке через systemd подставьте реальное имя службы: YOUR_CS2_UNIT — заполнитель.

bash
sudo systemctl status YOUR_CS2_UNIT --no-pager
sudo journalctl -u YOUR_CS2_UNIT -n 100 --no-pager

Процесс может появиться раньше завершения загрузки карты. Ищите сообщения самой игры о готовности и ошибках. Повторные завершения, недостающие библиотеки и сбой загрузки карты относятся к запуску, даже если systemd ненадолго показывает active.

Для прямого IPv4-подключения сокет только на 127.0.0.1 не принимает пакеты, адресованные внешнему интерфейсу хоста. Привязка к 0.0.0.0 охватывает локальные IPv4-интерфейсы, но не публикует сервер через firewall провайдера или NAT. Не записывайте в bind публичный адрес роутера, если этот адрес не принадлежит самому серверу.

Сверьте адрес с реальным маршрутом#

Проверьте, что игрок использует актуальный публичный IP VPS и порт, найденный через ss. Частный LAN-адрес недоступен напрямую из Интернета. При использовании домена сравните результат его разрешения с адресом нужного хоста; временная проверка по подтверждённому публичному IP отделяет DNS от транспорта.

На домашнем сервере сравните WAN-адрес роутера с публичным адресом от провайдера. Правило перенаправления на вашем роутере не создаёт входящий доступ через чужой NAT выше по цепочке. Если WAN-адрес частный или общий, уточните у провайдера возможность публичного адреса с входящими подключениями.

Проверяйте из другой сети. Подключение к публичному IP из той же LAN зависит от поддержки hairpin NAT роутером; его неудача ещё не означает, что сервер недоступен всем внешним игрокам.

Этот порядок касается прямого IP-трафика. В документации Steam Datagram Relay Valve описывает другой маршрут и FakeIP, который не является обычным адресом Интернета. Если логи и конфигурация показывают relay, проверяйте этот маршрут отдельно: неудачная попытка по прямому IP не доказывает поломку relay.

Проверьте оба firewall и сохраните SSH#

Посмотрите действующие правила Ubuntu:

bash
sudo ufw status verbose

Используйте фактический UDP-порт игры из ss. Числа ниже — пример, а не обнаруженный порт CS2 по умолчанию. Замените 27015, если сокет использует другой порт, и 22, если SSH работает на другом:

bash
sudo ufw allow 22/tcp
sudo ufw allow 27015/udp
sudo ufw status numbered

Привязка правил UFW к протоколу описана в документации Ubuntu. Если UFW выключен и вы собираетесь его включить, сначала сохраните необходимые правила остальных служб. Текущую SSH-сессию оставьте открытой:

bash
sudo ufw enable

Проверьте второе SSH-подключение, прежде чем закрывать первое. Такой же UDP-порт разрешите в firewall провайдера. Дома роутер должен перенаправлять его на правильный LAN-хост со стабильным адресом. Правило только для TCP с тем же номером не пропускает UDP-трафик игры.

Не открывайте административные порты всему Интернету ради исправления timeout у игрока. Не оставляйте firewall выключенным в рабочей конфигурации.

Проследите одну ограниченную попытку входа#

Если сокет и правила выглядят правильно, проверьте, доходят ли пакеты игрока до хоста. Установите инструмент на сервере:

bash
sudo apt update
sudo apt install -y tcpdump

Замените пример порта и зарезервированный для документации адрес 198.51.100.24 реальным портом и публичным IPv4 игрока:

bash
sudo tcpdump -ni any -c 30 'udp port 27015 and host 198.51.100.24'

Попросите игрока выполнить одну попытку прямого входа во время захвата. Если тридцать пакетов не набираются, остановите команду через Ctrl+C. Здесь выводятся краткие сведения о пакетах: команда не запрашивает дамп содержимого и не сохраняет файл. Параметры описаны в руководстве tcpdump.

НаблюдениеЧто подтвержденоСледующая проверка
Совпадающих пакетов нетЭтот фильтр ничего не увиделIP игрока и фильтр, адрес назначения, правила провайдера, роутер и маршрут ISP
Есть входящие, ответов не видноПакет дошёл до интерфейса; доставка CS2 ещё не подтвержденаFirewall хоста, адрес и порт сокета, состояние процесса, логи
Есть обмен в обе стороны, затем ошибкаНекоторый двусторонний UDP-трафик существуетОтказ игры, несовпадение версий или контента, клиентский лог
Один игрок вошёл, другой не можетСервер способен принять хотя бы этого игрокаМаршрут, адрес и сообщение отказа у второго

Захват на интерфейсе может увидеть пакет раньше, чем его отбросит firewall хоста. А неправильный фильтр способен скрыть реальную попытку. Это проверка отдельной границы, а не доказательство успешного входа. TCP-проверка порта также не проверяет этот UDP-маршрут.

Разберите конкретный отказ игры#

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

Если лог указывает на авторизацию Steam или токен, проверьте учётную запись и токен на странице управления серверными аккаунтами Steam и сверьтесь с актуальной документацией сервера CS2. Не публикуйте токен на скриншотах и в логах. Требования к токену и поведение запуска зависят от версии; замена токена не исправит отсутствующий сетевой маршрут.

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

Соберите отчёт, по которому можно помочь#

Для поддержки нужны проверяемый адрес, точная ошибка, время и часовой пояс, сборка сервера, адрес и порт сокета, очищенные от секретов логи запуска и отказа, а также наличие входящего и исходящего трафика в ограниченном захвате. Укажите прямой IP или relay. Удалите токены, пароли и посторонние данные игроков.

С таким отчётом провайдер может искать потерю пакета до VPS, а администратор игры — конкретный отказ. Фраза «порт открыт» оставляет обоих без нужных данных.