web-dev-qa-db-ja.com

iptablesにYouTubeストリームと大きなファイルを認識させる

在庫カーネルをNATルーターとして使用するUbuntuサーバー10.04を使用します。iptablesとtcを使用して、ポートベースのトラフィックの優先順位付けを行います。正常に機能しています。httpの優先順位を高くしています。したがって、ネットワーク私の質問は、iptablesにyoutubeストリームまたはより大きなファイルに属するパケットを認識させてマークを付けることは可能ですか?私の目標は、Webページの閲覧を高速化することです。

4
nixnotwin

-m connbytesを使用してみてください。何か大きなものと一致させます。次に、パケットにマークを付け、tcのfwmarkマッチングメカニズムを使用します。

ただし、この目的のためには、レイヤー7で機能するものを使用する必要があるという他の人たちに同意する傾向があります。


-m connbytesの使用例

iptables -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m connbytes --connbytes $TRIGGER_SIZE: --connbytes-dir reply --connbytes-mode bytes -j CONNMARK --set-mark $BULK_MARKER
iptables -t mangle -A PREROUTING -m connmark --mark $BULK_MARKER -j CONNMARK --restore-mark

最初のルールは、転送される合計バイト数が$ TRIGGER_SIZEより大きいconnectionsと一致します(注意してください。コロンが存在する必要があります!)

2番目のルールは、CONNMARKをパケットMARK(fwmark)に転送して、tcがスロットリング/ポリシングを実行できるようにします。

最初のルールで-i、-o、および-dir応答を指定していることに注意してください。これは、LAN内の誰かによって開始された発信接続への応答であるWANインターフェイス(およびLANインターフェイスを出る)に入るパケットと一致します。指定しない場合- iと-o、および/または両方の-dirを使用すると、送信パケット(たとえば、メールサーバーからのメール)とも照合されます。

3
pepoluan

これは、iptablesの観点から1秒間です。パケットを1つずつ処理する場合、大きなファイルまたは小さなファイルの転送からのパケットを識別することはできません。パケットを渡すだけです。ディープパケットインスペクションを行うと、コンテンツについてもう少し詳しく知ることができますが、ファイルの大きさや、ファイルの一部であり、Webページではないことさえわかりません。

Youtubeとの間でルーティングされるパケットにタグを付け、それらを個別にフィルタリングすることもできますが、ストリーミングメディアで最後にやりたいことは速度を落とすことです。それが早く起こると、ユーザーは幸せになり、トラフィックが邪魔にならないようになります。 TCを使用して、Youtubeサーバーから(IPブロックで)送信されるすべてのものを優先度の低いキューに入れることができますが、ユーザーがまだビデオを視聴している場合は、同じバイト数をダウンロードするのに時間がかかるか短いかにかかわらず、ネットワーク上を移動します。

これを少なくとも部分的にHRの問題と見なし、(デジタル検出ではなく人間のコミュニケーションを使用して)いくつかの利用規定を作成して実施することをお勧めします。それでもネットワーク容量が必要な場合は、インフラストラクチャを少し拡張します。

3
Caleb

Calebによってすでに投稿されているように、「適切な」コンテンツ検査機能が不足しているため、これはiptablesのタスクではありません。 Squid のようなHTTPプロキシを調べたいと思うかもしれません。最近のバージョンには、「遅延プール」と呼ばれる高度な帯域幅調整メカニズムが付属しており、複雑な帯域幅管理シナリオのために「ACL」と呼ばれるタグ付けメカニズムと組み合わせることができます。

お客様のサイトにイカのインストールを設定しましたが、要件はお客様とほぼ同じです。

3
the-wabbit