Garry's Mod: не подключается через консоль (connect IP)
Открыл консоль (~), написал connect 123.45.67.89:27015, нажал Enter — и ничего. Либо игра зависает на "Connecting...", либо сразу вылетает с ошибкой, либо консоль молча проглатывает команду и ты остаёшься в главном меню. Это одна из самых частых проблем GMod-серверов, и почти всегда причина не в игре, а в трёх вещах: не тот порт, не тот протокол или сервер вообще не слушает снаружи. Разберём по порядку, как это диагностировать и починить.
Содержание
- Как правильно вызывать connect и что при этом происходит
- Порт: почему 27015 не всегда тот порт, который нужен
- hostport в server.cfg vs реально проброшенный порт — частая рассинхронизация
- sv_password и другие причины явного отказа в подключении
- Устаревший клиент или несовпадение версии сборки
- Файрвол на стороне клиента и антивирус
- Быстрый чек-лист диагностики
Как правильно вызывать connect и что при этом происходит
Сначала база, потому что часть проблем — это просто опечатка в команде. Правильный синтаксис:
connect 123.45.67.89:27015
IP и порт через двоеточие, без пробелов, без http:// и прочего мусора. Если сервер требует пароль, можно сразу передать его вторым аргументом:
connect 123.45.67.89:27015; password mysecretpass
или отдельной командой password mysecretpass после того, как игра запросит пароль сама.
Когда ты жмёшь Enter, клиент делает несколько вещей по порядку: резолвит адрес (если это домен, а не IP), открывает UDP-сокет на этот адрес и порт, шлёт challenge-запрос по протоколу Source Engine, ждёт ответ от сервера. Если на любом из этих шагов запрос не долетел или ответ не пришёл — ты видишь зависшее "Connecting..." или таймаут. Если ответ пришёл, но сервер отклонил соединение (пароль, бан, забаненная версия клиента) — получаешь конкретную ошибку. Это разделение важно: "тишина" и "явный отказ" — это две разные категории проблем, и чинятся они по-разному.
Порт: почему 27015 не всегда тот порт, который нужен
Дефолтный игровой порт GMod (как и большинства игр на Source Engine) — 27015/UDP. Именно UDP, не TCP — это частая путаница, потому что RCON и некоторые сторонние панели используют TCP, и админы по инерции пробрасывают TCP-порт, забывая про UDP, через который реально идёт игровой трафик.
Если сервер настроен на нестандартный порт (например, чтобы держать несколько инстансов GMod на одном IP), порт задаётся при запуске через -port:
srcds_run -game garrysmod -port 27016 +map gm_construct +maxplayers 24
Соответственно, подключаться нужно строго на этот порт: connect ip:27016. Если в консоли ты используешь 27015 "по умолчанию", а сервер реально слушает 27016 — получишь таймаут, потому что UDP-пакеты просто улетают в никуда, и ни клиент, ни сервер не узнают, что что-то пошло не так (в UDP нет rejected-ответа на закрытый порт так, как в TCP, — пакет либо доходит, либо нет).
Проверить, какой порт реально слушает сервер, можно прямо в его консоли (или в логе запуска) — при старте srcds пишет что-то вроде:
Server logging enabled.
UDP Port 27015 bound.
Или командой net_status на самом сервере — она покажет активные порты и текущие соединения.
Поднять сервер Garry's Mod за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверhostport в server.cfg vs реально проброшенный порт — частая рассинхронизация
Отдельная грабля, в которую упирается почти каждый, кто арендует VPS "с нуля" и настраивает файрвол/проброс портов сам (актуально для домашних серверов или VPS без панели): в server.cfg можно встретить строку hostport, но на деле в GMod/Source Engine она не задаёт порт — это legacy-переменная, которая почти ничего не делает в актуальных версиях движка. Порт задаётся исключительно параметром запуска -port (см. выше), а не строкой в конфиге. Если ты правишь hostport в server.cfg и ждёшь, что сервер переедет на другой порт — он не переедет, и это частый источник путаницы "я же поменял порт, а не подключается".
Второй слой той же проблемы — проброс портов (port forwarding) на роутере или в файрволе облачного провайдера. Даже если srcds слушает правильный UDP-порт локально, снаружи он может быть недоступен, если:
- на роутере не пробрасывается именно UDP на нужный порт (часто пробрасывают TCP по ошибке, скопировав правило с другого сервиса);
- в облачной панели (Security Groups у VPS-провайдеров, файрвол хостинга) правило создано для TCP, а не для UDP;
- на самом сервере активен
ufw/iptables, который блокирует входящий UDP-трафик на игровой порт.
Подробный разбор, как правильно открыть именно нужные порты и не оставить дыр, — в статье про настройку портов и файрвола для игрового сервера. Если арендуешь сервер у хостинга игровых серверов (в том числе у MAATRIX GAMES), порты обычно открываются автоматически при создании — но если поднимаешь GMod на своём VPS с нуля, эта проверка обязательна ещё до попытки connect.
Быстрая проверка снаружи: если у тебя есть доступ к другому компьютеру не в той же локальной сети, попробуй connect с него. Если не подключается только изнутри локальной сети (NAT loopback / hairpin NAT не настроен на роутере), а снаружи всё ок — это отдельная, менее критичная проблема, актуальная только для тестов "с домашнего сервера самому на себя".
sv_password и другие причины явного отказа в подключении
Если консоль не зависает, а сразу пишет ошибку — это, как правило, осознанный отказ сервера, а не сетевая проблема. Самые частые:
"Password required" — на сервере включён пароль:
sv_password "mysecretpass"
Подключаться нужно с паролем сразу:
connect 123.45.67.89:27015; password mysecretpass
Если забыл пароль — он лежит открытым текстом в server.cfg на самом сервере (или в консоли сервера можно посмотреть текущее значение командой sv_password, если есть доступ к RCON или консоли хоста).
"Banned from this server" — твой SteamID или IP в бан-листе (banned_user.cfg / banned_ip.cfg). Разбан делает админ сервера через RCON:
rcon removeid <SteamID>
или редактированием файлов бан-листов напрямую с последующим rcon writeid / rcon writeip.
"Server is full" — превышен maxplayers. Тут либо ждать освобождения слота, либо для владельца сервера — поднять лимит в server.cfg (с оговоркой, что каждый дополнительный слот — это нагрузка на CPU и сеть, поднимать лимит "с запасом" не всегда хорошая идея для слабого сервера).
"Failed VAC2 banned" или похожие — если на сервере включён VAC (sv_pure + защита), а у тебя проблема со Steam-аутентификацией, помогает перезапуск Steam-клиента и проверка целостности файлов игры через Steam (Свойства → Установленные файлы → Проверить целостность файлов игры).
Устаревший клиент или несовпадение версии сборки
Source Engine чувствителен к рассинхрону версий между клиентом и сервером сильнее, чем многие современные движки. Если сервер обновился (Steam-обновление GMod прилетает не так уж редко), а твой клиент — нет, подключение может либо зависнуть, либо явно написать что-то в духе "This server requires you have the latest patch of Garry's Mod" или похожее.
Чинится тривиально: закрой GMod, дай Steam обновить игру (в библиотеке Steam значок обновления виден сразу), перезайди. Если автообновление отключено вручную в настройках Steam — включи его хотя бы временно.
Обратная ситуация тоже случается: админ сервера обновил srcds через SteamCMD, а часть игроков жалуется на несовместимость, потому что сами обновились с задержкой (например, из-за медленного интернета или ограничения трафика в Steam). Тут ничего не поделать кроме как подождать, пока обновятся все — сервер и клиент должны быть на одной версии протокола.
Если после обновления сервер вообще перестал стартовать или вылетает сразу после запуска — это уже не про connect, тут поможет разбор в статье про чтение логов и краш-репортов.
Файрвол на стороне клиента и антивирус
Реже, но случается: проблема не на сервере, а у самого игрока. Windows Defender Firewall или сторонний антивирус может блокировать исходящие UDP-пакеты от hl2.exe/gmod.exe — особенно если игра была переустановлена или переехала в другую папку, и правило файрвола осталось привязано к старому пути.
Проверить просто: временно отключи файрвол (или добавь исключение для исполняемого файла игры) и попробуй подключиться снова. Если заработало — дело в файрволе, и правильное решение не "отключить навсегда", а добавить постоянное исключение для gmod.exe в разрешённые программы файрвола, для входящих и исходящих правил.
Корпоративные и учебные сети часто блокируют нестандартные UDP-порты целиком на уровне сетевого оборудования — если ты подключаешься из офиса, кампуса или через VPN с ограничениями, это тоже стоит держать в уме как причину, не зависящую ни от сервера, ни от твоего компьютера.
Быстрый чек-лист диагностики
Если хочется не читать всё по порядку, а быстро пройтись по причинам — вот сжатый порядок проверки, от самого частого к самому редкому:
| Шаг | Что проверить | Как |
|---|---|---|
| 1 | Правильный порт и протокол | -port в запуске srcds, проброс именно UDP |
| 2 | Сервер вообще запущен и отвечает | Лог сервера / net_status на хосте |
| 3 | Файрвол на стороне сервера | ufw status / правила Security Group у VPS |
| 4 | Пароль | sv_password в server.cfg |
| 5 | Бан | banned_user.cfg, banned_ip.cfg |
| 6 | Версия клиента | Обновить GMod через Steam |
| 7 | Файрвол/антивирус клиента | Временно отключить и проверить |
Если ты только настраиваешь сервер с нуля и хочешь избежать половины этих проблем заранее — пройдись по шагам в статье как поднять сервер Garry's Mod, там разобран весь процесс от SteamCMD до автозапуска, включая правильную настройку портов сразу при первом старте.
Поднять сервер Garry's Mod за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Почему сервер виден в браузере серверов, но connect всё равно не работает?
Браузер серверов часто получает информацию через master-сервер Steam и может показывать сервер даже если прямое UDP-соединение по игровому порту у тебя блокируется локальным файрволом или провайдером — это два разных канала связи.
Можно ли подключаться по домену вместо IP?
Да, connect play.example.com:27015 работает, если домен резолвится в правильный IP через A-запись. Если сервер недавно сменил IP, а DNS ещё не обновился (TTL кэша), подключение по домену будет вести на старый адрес — в этом случае подключись напрямую по IP, чтобы исключить DNS как причину.
Что делать, если connect работает у друзей, но не у меня?
Скорее всего проблема локальная: файрвол/антивирус, VPN с блокировкой UDP или провайдер, режущий нестандартные порты. Проверь через мобильный интернет или другую сеть — если там подключается, дело в твоей основной сети.
Почему после смены порта сервера в конфиге игроки всё ещё пытаются зайти на старый?
Потому что порт меняется параметром запуска -port, а не строкой hostport в server.cfg — эта переменная не управляет портом в актуальных версиях движка. Также стоит проверить, не осталась ли ссылка на сервер в закладках игроков со старым портом.
RCON подключается, а игровой connect — нет. Это нормально?
Да, это разные порты и протоколы: RCON обычно ходит через тот же порт, но по TCP, а игровой трафик — по UDP. Рабочий RCON подтверждает, что сервер жив и файрвол частично открыт, но не гарантирует, что UDP-порт для игроков тоже проброшен правильно.