web-dev-qa-db-ja.com

iptablesでパケットレート制限を設定する

インターネットプロバイダーによって設定されたパケットレート制限(1秒あたり最大10)があります。 AceStreamプレーヤーを使用する場合、これは問題です。制限を超えると切断されます。

このプログラムのインターネットアクセスを制限するにはどうすればよいですか?

私は提案されたコマンドを試しました:

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

しかし、致命的なエラーメッセージが表示されます。

FATAL: Error inserting ip_tables (/lib/modules/3.2.0-67-generic/kernel/net/ipv4/netfilter/ip_tables.ko): Operation not permitted
iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

管理者権限あり:

Sudo iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

もはやエラーメッセージはありません。しかし、それでも機能しません。切断されます。

コマンドラインにエラーがありますか?または、iptablesの他の引数を使用する必要がありますか?

以下は、プロバイダーの制限を超えたときに表示される実際のメッセージです。enter image description here

これまで、さまざまな方法を試しましたが、どれもうまくいきませんでした。

Sudo iptables -A INPUT -p tcp --syn --dport 8621 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

Sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 9/second --limit-burst 10 -j ACCEPT

Sudo iptables -A INPUT -p tcp --destination-port 8621 --syn -m state --state NEW -m limit --limit 9/s --limit-burst 10 -j ACCEPT

このアプローチは、まだアプリケーションを使用するためには役に立たないようです。それで、私は別の質問を投稿しました: iptablesを介して接続制限を設定

6
Andy

あなたが見つけた解決策は正しかった:

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

ただし、デフォルトのポリシーであるDROPまたはREJECTを想定しています。これは、OUTPUTでは一般的ではありません。追加する必要があります:

iptables -A OUTPUT -j REJECT

ACCEPTルールの後に必ずこのルールを追加してください。この順序で実行するか、ACCEPTに-Iではなく-Aを使用してください。

また、アプリケーションによっては、接続が切断される場合があります。その場合はREJECTの代わりにDROPで試してくださいまたは別の--reject-withで試してください(デフォルトはicmp-port-unreachableです)。

DVR=サーバーに対してtelnetでテストしたところ、接続は強制終了されませんでした。もちろん、新しい接続は出力パケットなので、制限に達した直後に再接続しようとすると失敗しますREJECTを使用する場合は離れます。

私はあなたのISPがあなたにあなたのINPUTパケットを制限することを期待しているというコメントから収集します...あなたはこれを行うことができません。それらを停止できるようになるまでに、それらはすでにNICに到達しています。つまり、それらはすでにISPによって説明されています。ほとんどのACKが出力を行わないため、OUTPUTを制限すると、INPUTパケットカウントも大幅に増加し、多くの再送信が発生します。

1秒あたり10パケットは異常です。

5
GnP

シン洪水防御:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Furtiveポートスキャナー:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

死のピン:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
0
PersianGulf