web-dev-qa-db-ja.com

ユーザーあたりの合計帯域幅の使用を制限する

幅広いユーザーがアクセスできるLinuxサーバーを実行していますが、(アップストリームインターネットプロバイダーによって設定されているポリシーのために)ユーザーが転送できるデータの合計量を特定の量に制限する必要があります。 Linuxボックスは私のプロバイダーへのゲートウェイです。これを行う方法はありますか?

作業中のiptablesセットアップがすでにボックスに配置されており、それが役立つ場合は、HTBなどの構成の経験があります。私が過去に行ったセットアップの問題は、ユーザーを長期間(100MB /日など)の合計転送量ではなく、特定のビットレート(20kbpsなど)に制限することです。

5
Tim

@WerkkreWは私を正しい軌道に乗せました。私が使用する解決策は、squidとそのdelay_pools機能を使用することです。

基本的な概念は、squid.confにホストごと(クラス3)の遅延プールを設定し、各プールをユーザーごとに1日に許可する最大帯域幅に設定することです。次に、「フィル」レートを、帯域幅の最大量を1日分の時間で割った値に設定して、各遅延プールが1日で完全にいっぱいになるようにします。

最後に、iptablesを使用して、ポート80で受信したリクエストを、直接DNATするのではなく、LANからsquidに透過的にリダイレクトします。これにより、内部ネットワークのユーザーは帯域幅の制限を受けます。

WerkkreW、私を正しい方向に向けてくれてありがとう。

3
Tim

Iptablesを使用して、より適切には squid (delay-cache?)を使用して、やりたいことができると思いますが、構成と管理が複雑になる可能性があります。ただし、squidを使用すると、ユーザーごとに転送を制限することは間違いなく可能です。個人的には行ったことがないので、設定の詳細についてはアドバイスできません。

あなたが見るかもしれない他のいくつかのツールがありますが、それらのほとんどは他の多くのフィルタリングを行い、非常に完全な機能を備えています。

2
WerkkreW