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

Сервер CS2 принимает игроков, но не отвечает на Steam-запросы: диагностика протокола A2S и фаервола

Диагностика видимости сервера Counter-Strike 2 в Steam Server Browser: протокол A2S_INFO, разделение игрового и query-портов, валидация iptables и утилиты qstat/python.

Сервер CS2 принимает игроков, но не отвечает на Steam-запросы: диагностика протокола A2S и фаервола

Администраторы выделенных серверов Counter-Strike 2 часто сталкиваются с парадоксальной ситуацией: игроки могут напрямую подключиться к серверу через консольную команду connect <IP>:27015, сетевой геймплей работает без задержек, но сервер остаётся полностью невидимым в глобальном списке Steam Server Browser, а сторонние мониторинги рапортуют о статусе «Offline».

В этой статье мы разберём двухэтапный протокол опроса Valve A2S_INFO, напишем скрипт проверки сокета, проверим правила фаервола iptables на отбрасывание UDP-пакетов и настроим регистрацию токена GSLT в мастер-серверах Steam.

Анатомия запросов Valve A2S_INFO и двухэтапный рукопожатие#

Для отображения информации о сервере (название, текущая карта, количество игроков, теги) браузер Steam использует протокол Valve Source Query (A2S).

В Source 2 опрос происходит по следующему протоколу:

  1. Клиент отправляет UDP-пакет \xFF\xFF\xFF\xFFTSource Engine Query\x00.
  2. Сервер CS2 отвечает пакетом с вызовом (Challenge): 0xFF 0xFF 0xFF 0xFF 0x41 <4_байта_токена>.
  3. Клиент повторно отправляет запрос, прикрепляя полученный 4-байтный токен в конце пакета.
  4. Сервер возвращает полезные данные (A2S_INFO).

Если промежуточный фаервол фильтрует входящие UDP-запросы или отбрасывает пакеты без подтверждённой сессии, опросники зависают по тайм-ауту.

Проверьте, слушает ли процесс cs2 сетевой сокет UDP:

bash
ss -ulnp | grep -E "cs2|27015"

Тестирование отклика сокета A2S через Python-скрипт#

Чтобы выяснить, отвечает ли сервер на внешние запросы протокола A2S, запустите локальный диагностический скрипт:

bash
python3 - << 'EOF'
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(3.0)
target = ("127.0.0.1", 27015)

query = b"\xFF\xFF\xFF\xFFTSource Engine Query\x00"
sock.sendto(query, target)

try:
    data, addr = sock.recvfrom(1400)
    print(f"Initial response header: {data[:5]}")
    if len(data) >= 9 and data[4:5] == b"\x41":
        challenge = data[5:9]
        sock.sendto(query + challenge, target)
        data, addr = sock.recvfrom(1400)
        print("Success: A2S_INFO payload received, size:", len(data))
except socket.timeout:
    print("Failure: A2S query timed out.")
finally:
    sock.close()
EOF

Если скрипт локально получает ответ Success: A2S_INFO payload received, а при запуске с внешнего компьютера падает по тайм-ауту, проблема гарантированно заключается в сетевом фаерволе или маршрутизации провайдера.

Проверка фаервола UFW, iptables и сетевых ограничений#

Частая причина блокировки — слишком агрессивные правила защиты от DDoS (rate limiting), которые ошибочно принимают регулярные опросы A2S за UDP-амплификацию.

Проверьте цепочки iptables на наличие сброшенных пакетов:

bash
sudo iptables -L -n -v | grep -E "27015|DROP"

Убедитесь, что правила фаервола явно разрешают входящий UDP-трафик на порту 27015:

bash
sudo ufw allow 27015/udp
sudo iptables -I INPUT -p udp --dport 27015 -j ACCEPT

Настройка токена GSLT и регистрация в мастер-серверах Steam#

Сервер CS2 не появится в глобальном списке браузера сообщества Steam без привязки валидного токена учётной записи сервера (Game Server Login Token).

Проверьте параметры в файле конфигурации game/csgo/cfg/server.cfg:

bash
grep -E "sv_setsteamaccount|sv_lan" /opt/cs2/game/csgo/cfg/server.cfg

Убедитесь, что директива sv_lan выключена (sv_lan 0), а токен GSLT сгенерирован на официальном портале управления серверами Steam для AppID 730:

bash
echo 'sv_lan 0' >> /opt/cs2/game/csgo/cfg/server.cfg
echo 'sv_setsteamaccount "YOUR_GSLT_TOKEN"' >> /opt/cs2/game/csgo/cfg/server.cfg

После перезапуска сервера демон отправит регистрационный пакет (heartbeat) на мастер-серверы Valve, подтвердит владение токеном и появится в глобальном поиске.

Если вам нужен выделенный сервер Counter-Strike 2 с гарантированной видимостью в браузере Steam, защитой от UDP-флуда и низким пингом, современный хостинг серверов CS2 предоставляет оптимизированную инфраструктуру с автоматической регистрацией портов.

Источники#