1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/laofeng-ip-limiter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

IP-ограничитель

Часть 1. IP-ограничивающая платформа

1. Зачем нужен IP-лимит?

В мире сетей реальные пользователи и боты смешиваются, а нормальные запросы и аномальные запросы переплетаются. Как поставщик услуг, все хотят, чтобы запросы исходили от реальных пользователей и их реальных запросов, что позволяет максимизировать рентабельность инвестиций. Однако всегда найдутся люди, которые незаконно пытаются получить информацию о поставщике или использовать ценные данные для своих целей. Как владелец данных, вы не хотите, чтобы ваши данные использовались другими людьми. Поэтому необходимо принять некоторые меры защиты данных. Одним из эффективных решений является ограничение IP.

Поскольку боты обычно работают на одном или нескольких серверах (хотя они могут приобрести больше серверов, но это будет стоить дороже), можно отслеживать и записывать аномальный трафик с этих IP-адресов. Это позволяет определить, являются ли запросы, исходящие от этих IP-адресов, реальными запросами пользователей.

Изображение

2. Цели:

  • Отслеживать поведение IP и регистрировать его трафик (выполнено).
  • Вручную добавлять отдельные IP или диапазоны IP в чёрный список и фильтровать добавленные IP (выполнено).
  • Вручную добавлять отдельные IP или диапазоны IP в белый список и фильтровать добавленные IP (выполнено).
  • Автоматически добавлять аномально посещаемые IP в чёрный список на основе определённых правил (выполнено).
  • Поддерживать настраиваемые правила обнаружения и оповещения для чёрного списка IP (в разработке).
  • Сводить статистику по кластерам приложений (выполнено).
  • Эффективно хранить, читать и обрабатывать данные статистики, минимизируя влияние на производительность приложения (выполнено, данные хранятся в Redis).
  • Расширять поддержку различных методов хранения данных, таких как сохранение правил в DB или ZK (выполнено, поддержка Redis уже реализована, другие методы хранения могут быть настроены в зависимости от ситуации).
  • Предоставлять статистику посещений IP с точностью до минуты и секунды (выполнено).
  • Иметь административный интерфейс для управления чёрным списком и просмотра TOP IP (выполнено).
  • Выводить статистические данные в различные хранилища, такие как Redis и Influxdb (выполнено, Redis реализован, другие хранилища могут быть настроены).
  • Обеспечивать унифицированную конфигурацию TPS и контроль доступа для отдельных IP и диапазонов IP (выполнено).
  • Управлять трафиком всех подключённых приложений через единую платформу (выполнено).

Часть 2. Архитектура

1. Интерактивная архитектура

Схема взаимодействия IP-ограничивающей платформы

2. Архитектурная реализация

Архитектура IP-ограничителя

3. Системные модули
— Модуль агента для сбора данных о доступе к различным уровням, который должен быть интегрирован с приложениями.
— Контрольный модуль для администрирования и управления, реализованный по схеме Master/Slave. Мастер отвечает за выполнение задач по расписанию, проверку узлов и мониторинг чёрного списка IP.

Часть 3. Принципы проектирования

1. Высокая производительность

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

2. Высокая доступность

  • Если IP-ограничительная система недоступна, это не должно влиять на работу приложений, собирающих данные о доступе.
  • Регулярно проверять работоспособность приложений, интегрированных с системой сбора данных о доступе.
  • Контрольный модуль IP-ограничительной системы может масштабироваться горизонтально и не имеет состояния.

3. Масштабируемость

  • Масштабирование хранилища данных о доступе в соответствии с требованиями, включая поддержку различных структур хранения, таких как Redis, MySQL, Elasticsearch и InfluxDB.
  • Расширение возможностей обработки правил для аномальных посещений IP, включая возможность настройки в контрольном модуле и интегрированных клиентах.

4. Простота использования

  • Простая интеграция, требующая только добавления JAR-файла в pom.xml.
  • Простой в использовании контрольный модуль с базовым интерфейсом для управления IP, чёрными и белыми списками, настройками QPS и т. д.

Часть 4. Проектирование хранилища

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

1. Чёрный список IP
Используется ключ «black-ips» для хранения глобального чёрного списка IP в виде хэша. Ключом является IP, а значением — объект com.eeeffff.limiter.common.vo.BlackIpVO со следующими полями:

Рисунок

Примечание:
Данные чёрного списка IP для каждого приложения хранятся отдельно под ключом «приложение-имя — black-ips», например, данные чёрного списка IP платформы управления ограничителем IP хранятся под ключом «ip-limiter-dashboard-black-ips».

2. Белый список IP
Ключ «white-ips» используется для хранения глобального белого списка IP в виде хэша. Ключом является IP, а значением — объект com.eeeffff.limiter.common.vo.WhiteIpVO со следующими полями:

Рисунок

Примечание:
Данные белого списка IP для каждого приложения хранятся отдельно под ключом «приложение-имя — white-ips», например, данные белого списка IP платформы управления ограничителем IP хранятся под ключом «ip-limiter-dashboard-white-ips».

3. Доступ за минуту
Ключ «minute-access» используется для хранения сводной статистики доступа за каждую минуту для всех приложений, подключённых к платформе ограничения IP. Данные хранятся в виде хэша, где ключом является минута, а значением является список объектов com.eeeffff.limiter.common.vo.AccessVO со следующими полями:

Рисунок

Примечание:
Для каждого приложения данные доступа за минуту хранятся отдельно под ключом «приложение-имя — minute-access», например, данные доступа за минуту платформы управления ограничителем IP хранятся под ключом «ip-limiter-dashboard-minute-access».
Для каждого узла приложения данные доступа за минуту также хранятся отдельно под ключом «приложение-имя — IP и порт — minute-access», например, данные доступа за минуту платформы управления ограничителем IP на узле с IP 127.0.0.1 и портом 20520 хранятся под ключом «ip-limiter-dashboard-127.0.0.1:20520-minute-access».

4. Ограничение IP
Ключ «ip-limit» используется для хранения глобальных настроек QPS для IP в виде хэша. Ключом является IP, а значением — объект com.eeeffff.limiter.common.vo.IpLimitVO со следующими полями:

Рисунок

Примечание:
Настройки QPS для каждого приложения хранятся отдельно под ключом «приложение-имя — ip-limit», например, настройки QPS платформы управления ограничителем IP хранятся под ключом «ip-limiter-dashboard-ip-limit».

5. Зарегистрированные клиенты
Ключ «registered-clients» используется для хранения информации о клиентах, зарегистрированных в платформе управления ограничителем IP. Данные хранятся в виде хэша, где ключом является имя приложения, а значением является карта, содержащая информацию обо всех зарегистрированных клиентах этого приложения. Карта использует IP+порт в качестве ключа и объект com.eeeffff.limiter.common.vo.Client в качестве значения со следующими полями: 6. ip-limiter-dashboard-master

Используется для хранения ключа Master-узла платформы IP-лимитирования. Значение ключа — IP и порт текущего Master-узла.

7. permitsPerSecondEachIp

Используется для хранения значения по умолчанию максимального QPS для каждого IP. Значение ключа — максимальное значение QPS по умолчанию для каждого IP.

Примечание:

Каждое приложение хранит отдельное значение максимального QPS по умолчанию для своего IP. Ключ для хранения этого значения имеет формат «название приложения — permitsPerSecondEachIp». Например, для приложения ip-limiter-dashboard ключ будет называться «ip-limiter-dashboard-permitsPerSecondEachIp».

Пять, система проектирования

1. IP-ограничитель Agent

Этот агент интегрируется в приложение и предоставляет некоторые удобные функции, такие как сбор и отправка данных о доступе IP, получение чёрного/белого списка IP с удалённой консоли управления и т. д.

Каждый узел сохраняет 60 копий статистических данных доступа за 60 минут с интервалом в минуту и 60 копий данных с интервалом в секунду. Эти настройки можно изменить в соответствии с соответствующими параметрами конфигурации.

1)Функциональный модуль

2)Алгоритм ограничения

Существует несколько популярных алгоритмов ограничения: — счётчик (фиксированное окно); — скользящее окно; — дырявое ведро; — маркерное ведро.

В данном случае используется алгоритм счётчика (фиксированного окна), так как он подходит для ограничения одного IP, а не всех запросов. Этот алгоритм прост в реализации и может обрабатывать определённые пиковые нагрузки. Класс реализации — com.eeeffff.limiter.core.interceptor.IpQpsRateLimiter.

3)Основные функции Проверка легитимности доступа IP: обеспечение того, что доступ IP не превышает ограничение QPS. Если IP находится в чёрном списке, доступ блокируется. Это обеспечивает безопасность системы.

Отчётность о локальных данных доступа: в настоящее время только данные о доступе каждого IP за минуту активно отправляются.

Обновление чёрного и белого списков IP и конфигурации ограничения QPS с удалённых серверов: обновлённые конфигурации хранятся в локальном кэше для обеспечения эффективности проверки легитимности доступа.

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

4)Основной процесс

Проверка легитимности запроса

Запрос проходит проверку легитимности, которая включает в себя следующие шаги:

  1. Проверка белого списка IP.
  2. Проверка чёрного списка IP.
  3. Проверка ограничения QPS.
  4. Увеличение количества обращений IP при превышении ограничения QPS.

Если IP находится в белом списке, запрос считается легитимным. Если IP находится в чёрном списке или превышает ограничение QPS, запрос отклоняется. В противном случае количество обращений IP увеличивается на единицу.

Проверка белого списка IP

Запрос проверяется на соответствие белому списку IP. Если IP присутствует в белом списке, он считается легитимным и проверка завершается.

Проверка чёрного списка IP

Запрос проверяется на соответствие чёрному списку IP. Если IP отсутствует в чёрном списке, проверка продолжается. Если IP присутствует в чёрном списке, запрос отклоняется и проверка завершается.

Проверка ограничения QPS

Проверяется, превышает ли количество обращений данного IP ограничение QPS за указанный период времени. Если количество обращений не превышает ограничение, проверка продолжается. Иначе запрос отклоняется, и проверка завершается.

Увеличение количества обращений IP

Количество обращений IP увеличивается на 1.

Ограничение доступа при превышении QPS

При превышении IP ограничения QPS применяются следующие меры:

— Если это первый случай превышения QPS данным IP, его временно добавляют в чёрный список на одну минуту. — Если после снятия ограничений в течение одной минуты происходит повторное превышение QPS этим IP, срок блокировки увеличивается до одного часа. — При повторном превышении QPS после снятия часового ограничения срок блокировки увеличивается до 24 часов. — После снятия суточной блокировки при повторном превышении QPS срок блокировки становится постоянным.

После снятия блокировки IP автоматически удаляется из чёрного списка, если в течение указанного периода времени не было превышений QPS.

5) Основные настройки

#IP Limiter控制台的地址
ip.limiter.core.dashboardAddress = 127.0.0.1:8080
#当前服务器的IP地址
ip.limiter.core.serverAddress = [не настроено, используется автоматическое определение, можно указать конкретное значение]
#в локальном кеше хранится количество копий данных о доступе с точностью до секунд
ip.limiter.core.secondsMetricLocalKeeped = 60
#локальное приложение хранит максимум 60 копий данных о доступе за минуту
ip.limiter.core.maxTopAccessMinutes = 60
#интервал обновления чёрного списка IP и настроек ограничения QPS из удалённой консоли управления, в миллисекундах
ip.limiter.core.ipQpsLimitAndBlackIpUpdateTimeInterval = 10000

2. IP-ограничитель Control Panel

1)Функциональные модули

2)Основные функции a) Ограничение доступа при превышении лимита QPS

Для IP, превышающих лимит QPS, применяется временное ограничение доступа. Доступ может быть ограничен на одну минуту, один час, 24 часа или навсегда.

Правила и условия повышения уровня ограничения доступа:

— Для впервые превысивших лимит IP доступ ограничивается на одну минуту. Если в течение следующей минуты не происходит превышения лимита, ограничение снимается. — Для IP, которым был ограничен доступ на одну минуту и которые снова превысили лимит после снятия ограничения, уровень ограничения повышается до одного часа. Если после часовой блокировки не происходит превышений, ограничение снимается. — Для IP, которым был ограничен доступ на один час и которые снова превысили лимит после снятия ограничения, уровень ограничения повышается до 24 часов. Если после суточной блокировки не происходит превышений, ограничение снимается. — Для IP, которым был ограничен доступ на 24 часа и которые снова превысили лимит после снятия ограничения, устанавливается постоянное ограничение доступа.

b) Управление чёрным и белым списками IP

Поддерживается управление чёрными и белыми списками для конкретных приложений. Чёрные списки могут быть глобальными или специфичными для приложения. Управление включает добавление, удаление и поиск IP в списках.

c) Настройка максимального лимита QPS для IP

Настройка максимального лимита QPS может осуществляться для отдельных IP, всех IP конкретного приложения или всех IP по умолчанию. Правила определения превышения лимита применяются в следующем порядке:

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

d) Регистрация и проверка состояния клиентов

Клиенты регулярно регистрируются на панели управления. Состояние клиентов проверяется следующим образом:

— Если три попытки проверки состояния клиента завершаются неудачно, клиент удаляется из приложения. — Если все клиенты приложения не проходят проверку, приложение удаляется.

e) Автоматическое восстановление IP из чёрного списка

IP, добавленные в чёрный список за первое превышение лимита, автоматически удаляются из списка через минуту, если не происходит новых превышений.

Аналогично, IP, ограниченные доступом на одну минуту за повторное превышение, автоматически восстанавливаются через минуту после отсутствия новых нарушений. Ограничение доступа к IP, который был ограничен на 24 часа

Если в течение 24 часов после снятия ограничения на доступ к IP не будет зафиксировано превышение лимита, то система автоматически удалит этот IP из чёрного списка.

f) Запрос информации о текущем доступе к приложению

В консоли можно запросить информацию о текущем IP-адресе, с которого осуществляется доступ к определённому узлу приложения.

3) Основные процессы

a) Регистрация проверки работоспособности клиента

b) Система проверяет IP, которые автоматически добавляются в чёрный список.

4) Основные настройки

spring.boot.enableautoconfiguration=true
# Сервисный порт
server.port = 8080
spring.application.name = ip-limiter-dashboard

# Следующие параметры конфигурации необходимы для Apollo, если вы используете его в качестве центра конфигурации. Если вы запускаете через Apollo, вам нужно добавить соответствующие параметры в командной строке, например:
# -Dspring.profiles.active=DEV -Dapollo.meta=http://apollo.dev.xxx.com:8072
## Этот параметр передаётся через командную строку. Он используется при запуске команды и позволяет поддерживать несколько различных сред.
##active.env= DEV
## При использовании Apollo для загрузки конфигурации необходимо включить эту опцию перед инициализацией журнала.
#apollo.bootstrap.eagerLoad.enabled = true
## Уникальный идентификатор приложения
#app.id = ip-limiter-dashboard
## Адрес сервера метаданных Apollo. Этот параметр необходимо передать через командную строку при запуске, чтобы обеспечить поддержку нескольких сред.
##apollo.meta = http://apollo.dev.xxx.com:8072
## Путь к файлу локального кэша конфигурации
#apollo.cacheDir = ./config
## Загрузка конфигурации Apollo при запуске приложения
#apollo.bootstrap.enabled = true
## Внедрение пространства имён приложения
#apollo.bootstrap.namespaces = application

# Если вы используете Apollo в качестве центра конфигурации, скопируйте следующие настройки в Apollo и закомментируйте их в этом файле конфигурации.
ip.limiter.dashboard.permitsPerSecondEachIp = 50
ip.limiter.dashboard.maxTopAccessIps = 10
ip.limiter.dashboard.maxRedisTopAccessIps = 50
ip.limiter.dashboard.globalMaxRedisTopAccessIps = 50
ip.limiter.dashboard.maxRedisTopAccessMinutes = 60
ip.limiter.dashboard.globalMaxRedisTopAccessMinutes = 60
ip.limiter.dashboard.redisLockMaxWaitMillis = 60000
ip.limiter.dashboard.maxTopAccessMinutes = 30
ip.limiter.dashboard.connectTimeout = 5000
ip.limiter.dashboard.soTimeout = 5000
ip.limiter.dashboard.maxConnTotal = 100
ip.limiter.dashboard.maxConnPerRoute = 10
ip.limiter.dashboard.maxHttpRetryTimes = 5
ip.limiter.dashboard.httpRetryIntervalTime = 20
ip.limiter.dashboard.appClientHealthCheckRate = 1
ip.limiter.dashboard.systemAddBlackIpCheckRate = 1

spring.redis.host = 192.168.12.111
spring.redis.port = 6379
spring.redis.password = 8lFvrZh7d7Ik8LtNwpBMakleishen
spring.redis.database = 12
spring.redis.timeout = 5000
spring.redis.jedis.pool.max-idle = 8
spring.redis.jedis.pool.min-idle = 0
spring.redis.jedis.pool.max-wait = 8
spring.redis.jedis.pool.max-active = 20
ip.limiter.core.dashboardAddress = 127.0.0.1:8080

5) Интерфейс функций

(Для одного приложения) Статистика доступа TOP по широте и долготе

(Для одного приложения) Статистика секундного доступа TOP

(Для одного приложения) Настройка белого списка IP

(Для одного приложения) Настройка чёрного списка IP

(Для одного приложения) Установка QPS для отдельного IP

(На уровне отдела) Статистика доступа TOP по широте и долготе

(Глобальный) Настройка чёрного списка

(Глобальный) Настройка белого списка

(Глобальный) Установка QPS для отдельных IP

Шесть, построение платформы ограничения IP

1. Скачивание исходного кода и организация

git clone https://gitee.com/laofeng/ip-limiter.git
cd ip-limiter

2. Изменение необходимых основных файлов конфигурации

Сначала необходимо запустить консоль управления ограничением IP. Консоль управления IP по умолчанию использует Redis для хранения данных, поэтому необходимо сначала настроить Redis, иначе приложение может выдать ошибку во время выполнения. Измените основные файлы конфигурации консоли управления IP (ip-limiter-dashboard/src/main/resources/application.properties), необходимо изменить только конфигурацию Redis, остальные значения можно оставить по умолчанию:

spring.redis.host = 192.168.12.111
spring.redis.port = 6379
spring.redis.password = 8lFvrZh7d7Ik8LtNwpBMakleishen **3. Запуск IP-платформы управления доступом**

cd ip-limiter-dashboard ./start.sh


*Примечание: при запуске появится несколько предупреждений, связанных с Apollo. Эти предупреждения можно игнорировать. Если они вас беспокоят, вы можете удалить ссылки на Apollo в файле pom.xml и удалить соответствующий код.*

Адрес доступа к консоли управления:
- адрес отдельной панели управления приложением: [http://127.0.0.1:8080/limiter](http://127.0.0.1:8080/limiter);
- глобальный адрес панели управления приложениями: [http://127.0.0.1:8080/global-limiter](http://127.0.0.1:8080/global-limiter).

**4. Запуск демонстрационного приложения**

Демонстрационное приложение находится в каталоге ip-limiter-samples и включает три демонстрационных приложения:
- ip-limiter-spring-boot-sample: используется для демонстрации интеграции Spring Boot с платформой управления IP;
- ip-limiter-spring-mvc-sample: используется для демонстрации обычного приложения Spring MVC, интегрированного с платформой управления IP;
- ip-limiter-spring-gateway-sample: используется для демонстрации приложения Spring Gateway, интегрированного с платформой управления IP.

Эти три типа приложений охватывают большинство типов приложений. Каждый тип приложения имеет свои особенности интеграции.

**1) Запуск ip-limiter-spring-boot-sample**

Сначала перейдите в каталог ip-limiter-spring-boot-sample и выполните следующие команды для запуска:

./install.sh ./start.sh

По умолчанию порт — 10000. После успешного запуска вы можете получить доступ к [http://localhost:10000/hello](http://localhost:10000/hello), чтобы проверить это. Когда консоль выведет сообщение об успешной регистрации в платформе управления IP, вы увидите это приложение в раскрывающемся списке в левом верхнем углу консоли.

**2) Запуск ip-limiter-spring-mvc-sample**

Для запуска этого демонстрационного приложения необходимо сначала добавить плагин Jetty в /etc/maven/setting.xml:
org.mortbay.jetty ``` Сохраните изменения и закройте файл.

Затем перейдите в каталог ip-limiter-spring-mvc-sample и запустите его с помощью следующей команды:

./runJetty.sh

Во время запуска могут появиться некоторые ошибки Jetty, но их можно проигнорировать. По умолчанию порт — 10001. После успешного запуска вы можете перейти по адресу http://localhost:10001/app/health, чтобы проверить его. Когда консоль выведет сообщение об успешной регистрации в платформе управления IP, вы увидите это приложение в раскрывающемся списке в левом верхнем углу консоли.

3) Запуск ip-limiter-spring-gateway-sample

Сначала перейдите в каталог ip-limiter-spring-gateway-sample и выполните следующие команды для запуска:

./install.sh
./start.sh

По умолчанию порт — 10002. После успешного запуска вы можете обратиться к http://localhost:10002/api_hello/hello, чтобы проверить это. Этот запрос проходит через шлюз и обращается к http://localhost:10000/hello. Поэтому перед проверкой приложения ip-limiter-spring-gateway-sample необходимо запустить ip-limiter-spring-boot-sample. Когда консоль выведет сообщение об успешной регистрации в платформе управления IP, вы увидите это приложение в раскрывающемся списке в левом верхнем углу консоли.

Семь, интеграция приложений

Текущая версия приложения — 1.1.3.

  1. Интеграция Spring Boot-приложений

Чтобы интегрировать приложение Spring Boot, добавьте зависимость от основного модуля ядра клиента ограничения IP:

        <dependency>
            <groupId>com.eeeffff.limiter</groupId>
            <artifactId>ip-limiter-core-web</artifactId>
            <version>${ip-limiter-core.version}</version>
        </dependency>

Больше ничего делать не нужно. Это очень удобно.

  1. Интеграция приложений Spring MVC

Интеграция приложений Spring MVC немного сложнее, но всё равно проста. 1)Добавьте зависимость от основного модуля ядра клиентского ограничения IP:

        <dependency>
            <groupId>com.eeeffff.limiter</groupId>
            <artifactId>ip-limiter-core-web</artifactId>
            <version>${ip-limiter-core.version}</version>
        </dependency>

2)Включите пакет платформы управления IP в сканирование и добавьте Inteceptor:

Поскольку платформа управления IP основана на Inteceptor, в конфигурации Spring добавьте следующее:

<context:component-scan base-package="com.eeeffff.limiter"></context:component-scan>
<mvc:interceptors>
    <ref bean="ipLimiterInterceptor" />
</mvc:interceptors>

Если у вас возникли проблемы с интеграцией, обратитесь к примеру ip-limiter-spring-mvc-sample.

  1. Интеграция с Spring Gateway

Spring Gateway использует Netty в качестве коммуникационного модуля и не может использовать Inteceptor для реализации, как другие приложения. Вместо этого он должен использовать GlobalFilter и WebFilter вместе. Поэтому необходимо интегрировать разные пакеты:

        <dependency>
            <groupId>com.eeeffff.limiter</groupId>
            <artifactId>ip-limiter-core-spring-gateway</artifactId>
            <version>${ip-limiter-core.version}</version>
        </dependency>

Как и в случае с обычными приложениями Spring Boot, вам не нужно ничего делать. Всё очень просто.

Участие в проекте

  1. Fork этот репозиторий.
  2. Создайте ветку Feat_xxx.
  3. Отправьте код.
  4. Создайте Pull Request.

Присоединяйтесь к организации:

введите описание изображения здесь

Если изображение группы устарело, пожалуйста, свяжитесь со мной по номеру 13265554108 или отправьте сообщение с кодовым словом «ip-limiter».

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Платформа для ограничения IP-трафика автоматически ограничивает доступ подозрительных IP-адресов. В зависимости от аномалий в поведении конкретного IP-адреса, применяются следующие уровни ограничений: ограничение на 1 минуту, ограничение на 1 час, ограничение на 24 часа и постоянное ограничение. Также платформа предоставляет возможности визуальн... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/laofeng-ip-limiter.git
git@api.gitlife.ru:oschina-mirror/laofeng-ip-limiter.git
oschina-mirror
laofeng-ip-limiter
laofeng-ip-limiter
master