
アプリケーション(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フロントエンドを使用するのも良い選択です。私は使う桟橋の壁私が管理しているほとんどのファイアウォールについて。