私の質問は、サーバー上のユーザーの帯域幅を制限しようとしていて、これを行うための最良の方法を考えていることです。 tc/iptablesに飛び込む前に、これについて何かアドバイスが得られるかどうか疑問に思っていました。誰かが私が試してみることができるサンプル構成を教えてくれたら、それは大いにありがたいです。
私が理解していることから、tcを使用してルールを作成し、markステートメントを使用してiptablesを使用してルールを適用できます。一部の人々は、マングルのポストルーティングまたは出力を使用すると言いますが、どちらが最適であるか、またはそれが重要であるかどうかを100%確信していません。 tcでは、htb(帯域幅を制限するためのトークンバケット)を使用すると思いますが、パフォーマンスのトレードオフがあると言われ、最小のレイテンシーの方法を探しています。これらのユーザーは内部ネットワーク上ではなく、サーバーに接続しています。
私には2種類のユーザーがいるので、それらを制限するために必要なルールは2つだけです。これまでのところ、私が見ることができるのは、tc/iptablesコンボが私が望むものであるということですが、代替案の提案を受け付けています。
Iptablesの場合、コマンドは次のようになります。
帯域幅制限ルール1
iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x1
帯域幅制限ルール2
iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x2
私がしたいこと
Tcを使用することは、Linuxで整形するための正しい方法です。最良のドキュメントは [〜#〜] lartc [〜#〜] です。まず最初に、どのような種類のトラフィックを形成するかを理解する必要があります-出口または入口。その後、それを行うためのインターフェイスを選択する必要があります(NATの前の送信元アドレスに基づいて発信インターフェイスの入力トラフィックを形成し、NATの後の宛先アドレスに基づいてローカルインターフェイスの出力トラフィックを形成する方が簡単です)また、たとえば、2つのタイプのユーザーに異なるインターフェイス(VLANインターフェイス))を使用している場合、iptablesルールがまったくない場合があります。その後、選択したインターフェイスにqdiscsを設定する必要があります。 。ユーザーがインターフェースで分割されている場合はクラスレス、少数のユーザータイプの帯域幅を形成するために1つのインターフェースを使用している場合はクラスフルである可能性があります。その後、フィルターを設定する必要があります(クラスフルスキームを使用している場合)。リンクには多くの例があります。以下。頑張って...