次の状況:私たちは、地元の居住者ホールのインターネット接続を管理する学生のグループであり、合計で約2000人のエンドユーザーがいます。
トラフィックポイントシステムがあり、MBごとにダウンポイントまたはアップロードコストポイントがあり、新しいポイントは1時間ごとに追加されます。現時点では、ユーザーがすべてのポイントを費やしたとき(DebianゲートウェイルーターのiptablesのREJECTポリシーにユーザーを配置することにより)ユーザーのインターネットアクセスをブロックします。
ユーザーの帯域幅を制限したいだけです。これを行う最良の方法は何ですか?
簡単な答えは、ユーザーのスイッチポート(主にCisco Catalyst 3550)にレート制限を設定することです。ただし、これは望ましくありません。当社のネットワーク内および大学のネットワークへのトラフィックは無制限のままである必要があるためです。Cisco IOSで特定の宛先または送信元IP範囲(つまり、出力と入力の両方)を持つパケットに対してのみ帯域幅を制限する方法はありますか?何も見つかりませんでした。
もう1つの方法は、ゲートウェイルーター上のトラフィックを制御することです。いくつかの解決策が思い浮かびます。
tcまたはtcng-どちらもかなり難解な構文を持ち、IPごとのトラフィック制御を行うための優れた機能を提供しないようです。非常に多くの人々に専用のQDiscを使用すると、おそらくルーターの速度が大幅に低下します。さらに、両方のドキュメントはかなり時代遅れです。
shorewall-構成にはかなりきちんとした構文があるようですが、この量のトラフィックとユーザーを処理できるかどうか、およびIPごとのトラフィック制限に適しているかどうかはわかりません
pfSense-私たちのような目的のために意図されたOSのように見えます。ただし、ゲートウェイルーターを完全に再インストールする必要があります。他のBSDシステムはなく、pfSenseには非常に優れたトラフィックアカウンティング機能が必要です(現時点ではfprobe-ulogとulog-acctdを使用しています)。
あなたの経験は?どのソリューションが私たちのニーズに合い、最も簡単に保守できますか?他にアイデアはありますか?
システムに関する追加情報が必要な場合は、お気軽にお問い合わせください。
前もって感謝します。
編集:私はシステムを実装しているiptables
とtc
。
すべてのユーザーは、/ 28-subnet、VPN IP(両方とも10.0.0.0/8から)、および外部IPを持ち、すべて1つのiptablesチェーンを介して操作されます。このチェーンには、単純なルールが1つだけありRETURN
ます。
5分ごとに、Pythonスクリプトがこれらのルールのバイトカウンターを読み取ります。PostgreSQLデータベースのカウンターをリセットし、ユーザーのトラフィックポイントアカウントを更新します。
ユーザーのポイントバランスが特定のしきい値を下回った場合、このユーザーに対して2つのtcクラス(ゲートウェイルーターの受信用、送信インターフェイス用)が作成され、これらのクラスに属するtcフィルターにIPが入力されます。クラスはHTBによって速度制限されています。
以前のシステムと比較してfprobe-ulog
、ulog-acctd
これはバイトカウントがiptablesによって行われるため、はるかに高速です。
ユーザーのネットワーク速度が大幅に向上しました。