## Блокировка VPN и прокси, которая действительно понимает, с чем имеет дело
Каждый, кто обходит бан, каждый спамер и каждый вернувшийся тролль на сервере CS 1.6
поступает через ту же «дверь»: VPN, открытый прокси-сервер или недорогое устройство из дата-центра.
Заблокируйте SteamID, заблокируйте IP-адрес — и через девяносто секунд они снова будут на
другой выход.
Этот плагин закрывает эту лазейку. Каждый адрес подключения проверяется в режиме реального времени по отношению к
[antivpn.io](https://antivpn.io), а также все сервисы, относящиеся к категории коммерческих VPN,
Открытый прокси-сервер, диапазон хостинга или выходной узел TOR удаляются до того, как они смогут начать работу.
---
## Почему бы не использовать список IP-адресов?
Списки VPN-адресов, доступные для скачивания, устаревают уже в день их публикации. Провайдеры
выходы постоянно сменяются, и ни один статический файл не может определить, какой выход NordVPN используется в данный момент
из квоты, выделенной для домашних пользователей интернет-провайдером.
API в режиме реального времени возвращает результаты по каждому адресу и сообщает, *что* было найдено:
```
KICKED: nick [STEAM_0:1:12345678] ip=185.220.101.34
provider=TOR Exit Node asn=AS4224 country=DE risk=98
```
Это можно показать игроку, который оспаривает решение о пенальти. `список совпадений
запись № 48213` — нет.
---
## Это ничего не стоит вашему серверу
| | |
|---|---|
| **С резьбой** | Запросы выполняются в рабочем потоке libcurl. Никаких задержек — ни в одном кадре, ни в одном тике, ни в одной миллисекунде |
| **Объединенные** | Десять игроков, подключенных через один NAT, занимают **один** запрос, а не десять |
| **В кэше** | По умолчанию вердикт используется повторно в течение часа — на загруженном общедоступном сервере, который отклоняет более половины всех запросов |
| **С предварительной фильтрацией** | Частные диапазоны, зарезервированные диапазоны и адреса из белого списка вообще не попадают в API |
Ваша ежемесячная квота расходуется на адреса, которые действительно необходимо было проверить.
---
## Здесь указано, работает ли это
В большинстве плагинов о том, что они не работают, становится известно, когда в игру проскальзывает первый читер
. Этот скрипт проверяет API при загрузке и выводит результат в консоль:
```
[AntiVPN] plugin loaded successfully.
[AntiVPN] endpoint: https://api.antivpn.io/v2/check
[AntiVPN] API key: av_live_9f... (72 chars)
[AntiVPN] fail mode: fail-open | risk threshold: off | cache: 3600 s
[AntiVPN] SELF-TEST OK - key accepted, endpoint answered.
[AntiVPN] 8.8.8.8 -> proxy true, risk 88, Google LLC (AS15169)
```
Все, что не указывает`SELF-TEST OK` на конкретную причину — отклоненный ключ,
исчерпана квота, отсутствует пакет CA, сбой DNS. Можно запустить заново в любое время с помощью
`avpn_test`.
Ключ никогда не печатается полностью. Печатается только та его часть, которая позволяет его идентифицировать.
---
## Настройка, соответствующая реальным условиям работы серверов
| | |
|---|---|
| **Порог риска** | Доверяйте только `proxy`флагу или также отбрасывайте всё, что набирает больше баллов, чем установленный вами порог. Диапазоны «Datacentre» и недавно сменённые выходы часто набирают высокие баллы до того, как их классифицируют |
| **«Открытие при сбое» или «закрытие при сбое»** | Сбой API не должен приводить к очистке вашего сервера — поэтому по умолчанию этого не происходит. Включите эту опцию, если обходная схема приводит к худшим последствиям, чем ложное отключение. |
| **Иммунитет** | По флагу администратора или по SteamID для сотрудников, которым действительно нужен VPN. Проверка по-прежнему выполняется, и доступ по-прежнему фиксируется в журнале, так что вы можете это увидеть |
| **Белый список** | Точные адреса, `/24`а также подстановочные знаки`/16`, SteamID. Возможность перезагрузки в режиме реального времени |
| **Удерживать** | Заблокировать непроверенного игрока до вынесения решения, чтобы не было периода, в течение которого пользователь VPN мог бы играть |
Всё настраивается в
`configs/CodeStrikePlugins/antivpn.cfg`, который плагин записывает самостоятельно, полностью
комментируется на основе собственных настроек по умолчанию. Исходные файлы никогда не редактируются.
---
## Команды администратора
| | |
|---|---|
| `avpn_check <ip\|имя>` | Проверять любой адрес или подключенного игрока по запросу |
| `avpn_status` | Ключевое состояние, размер кэша, проверено / заблокировано / ошибки в этой карте |
| `avpn_reload` | Перечитайте белый список, очистите кэш |
| `avpn_test` | Повторно запустить проверку учетных данных |
---
## Откровенно об одном ограничении
Движок GoldSrc не предоставляет возможности поддерживать установленное соединение во время
HTTP-запрос выполняется. Наступает короткий промежуток времени, в течение которого непроверенный клиент
технически — на сервере; на практике же решение выносится, пока они ещё
загружает карту и `avpn_hold`блокирует их до завершения загрузки.
Любой плагин, который утверждает, что блокирует VPN *до* подключения, либо использует статический
Список IP-адресов или он вам не говорит правду.
---
## Требования
- AMX Mod X 1.9+ (на базе версии 1.10)
- Модуль AmxxEasyHttp — **включает бинарный файл для Linux и пакет сертификатов CA
пакет**, Windows — `.dll`это загрузка одного файла
- Ключ API сайта antivpn.io
Работает как с `/v2/check`конечной точкой Enterprise, так и со стандартной
`/api/check` токен сервера.
---
## Что входит в комплект
- `plugins/antivpn.amxx` — скомпилировано, AMXX 1.10
- `scripting/` — **полный исходный код**, четыре файла, с комментариями по всему тексту
- `modules/`, `data/`— модуль HTTP и его набор сертификатов для Linux
- `README.md` — спецификация API, все константы cvar, рекомендации по квотам, диагностика
таблица, в которой каждая строка журнала сопоставляется с причиной её появления и способом устранения
- `INSTALL.txt` — пять минут от начала до конца
---
**illusion @ CodeStrike** · [codestrike.store](https://codestrike.store)