iptablesによる接続制限の設定

iptablesによる接続制限の設定

アプリケーション(AceStream Player)のIPトラフィックを制限したいです。問題は、IP接続が多すぎると接続が失われることです。

iptablesを使用して接続を10秒に制限する方法を知っている人はいますか?

以下の回答からインスピレーションを得て、以下を試しました。

$iptables -A OUTPUT -p tcp --dport 8621 -m limit --limit 10/s -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 8621 -j DROP

これは接続を制限しているように見えますが、何とか2〜3秒のような下限に達します。制限ルールは、接続またはパケットを10秒に制限しますか?

DROPの代わりにQUEUEを使用して接続を遅延させることも可能ですか?

答え1

これはこのオプションで簡単に行えます--limit

たとえば、iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/s -j ACCEPT良い出発点になるはずです。

また、Gregor PurdyのLinux iptablesポケットリファレンス(ISBN:0-596-00569-5)も確認してください。私はiptablesについて質問があるたびにこれを使います。

答え2

新しい接続が確立される速度を制限する必要があります。ただ-m limit使うとパケットレート制限、新しい接続パケットか既存の接続のパケットか。

~によるとこの問題あなたはそれを使用することができます-m state。完全なiptablesルールセットは次のとおりです。

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT

何が起こっても一致するようにこのルールを少し調整することをお勧めします。

たとえば、このようにtcp接続のみを制限し、他のすべてをそのままにするには、次のようにします。

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -j REJECT

最後のルールのみが変更され、他のすべてのルールはデフォルトで適用されるか、別のルールに縮小されます。

さらに進むには、実際にiptablesを学ぶ必要があります。 @sailorはこのトピックに関する素晴らしい本を推薦しました。持つ十分~の良いオンラインリソースしかも。 iptables処理の概念(チェーン、テーブル、ルール、ポリシー)を理解すると、すべてのman 8 iptables答えを見つけることができます。

iptablesを深く理解する時間がない場合は、iptablesフロントエンドを使用するのも良い選択です。私は使う桟橋の壁私が管理しているほとんどのファイアウォールについて。

関連情報