私は ISP で働いていますが、ユーザーのクレジットがゼロになると、支払いのためにすべての HTTP 要求が私の Web サーバー (Apache 2.2) に NAT されます。
ユーザーのダウンローダーまたは自動更新プログラムが実行されている場合、それらのすべての要求が Web サーバーに送信され、このアクションにより Apache の応答の 75% が 404 になります。
これらのリクエスト パケットを制限、キャッシュ、またはドロップしたいと考えています。解決策はありますか? Apache またはファイアウォールまたはルーター レベルで。
答え1
この問題には良い解決策はありません。Apache は、「Pay Up, Sucker!」ページを表示するためにリクエストを処理する必要があります。リクエストが Apache に届かないようにする操作はすべてネットワーク層で実行する必要があります。その時点で、ユーザーはキャプティブ ポータル ページを取得できなくなり、ヘルプデスクに電話して「壊れている!」と叫ぶことになります。
正直に言うと、そうすべきではないお手入れキャプティブ ポータル サーバーが CPU/RAM などを消費している場合は、支払いページを専用のボックスに置いて、そこを攻撃します。そのボックスを攻撃する人は怠け者なので、支払いページを表示するために数回リロードしなければならないとしても、それは仕方ありません。
また、支払いサーバーはおそらく404を返さないはずですこれまで-- URL に関係なく、受信したすべてのリクエストに対して支払いページを提供する必要があります...
答え2
いくつかのオプション:
キャッチオール構成のnginxまたはその他の「軽量」httpサーバーを使用する
ソース IP ごとに iptables ベースのレート制限を使用します (Google のキーワード: iptables hashlimit)。不要なリクエストの一部を拒否または黙ってドロップし、ごく一部だけを通過させます。