Я работаю у интернет-провайдера, и когда кредит пользователя равен нулю, все HTTP-запросы NAT отправляются на мой веб-сервер (Apache 2.2) для оплаты.
Если загрузчик пользователя или программа автообновления запущены, все эти запросы поступают на мой веб-сервер, и это действие приводит к тому, что 75% ответов Apache — 404.
Я хочу ограничить или кэшировать или отбросить эти пакеты запросов. Есть ли у кого-нибудь решение? На уровне Apache или брандмауэра или маршрутизатора.
решение1
Хороших решений этой проблемы нет — Apache должен обработать запрос, чтобы отобразить страницу «Заплати, сосунок!». Все, что вы делаете, чтобы предотвратить отправку запросов в Apache, должно происходить на сетевом уровне, и в этот момент ваши пользователи больше не будут получать страницу портала каптива и вместо этого будут звонить в вашу службу поддержки с криками «ОНА СЛОМАНА!»
Честно говоря, вам не следует этого делать.Заботаесли сервер портала захвата жрет CPU/RAM/что угодно — поместите страницу оплаты на отдельный ящик и пусть ее бьют. Люди, которые бьют по нему, — бездельники, и если им приходится нажимать «перезагрузить» пару раз, чтобы получить страницу оплаты, пусть так и будет.
Кроме того, ваш платежный сервер, вероятно, не должен возвращать ошибку 404.всегда-- Он должен обслуживать страницу оплаты для любого полученного запроса, независимо от URL-адреса...
решение2
несколько вариантов:
используйте nginx или другой «легкий» http-сервер с универсальной конфигурацией
используйте ограничение скорости на основе iptables для каждого исходного IP-адреса [ключевые слова для google: iptables hashlimit] и отклоняйте или молча сбрасывайте нежелательный процент запросов, пропуская только несколько.