iptablesによるパケットレート制限の設定

iptablesによるパケットレート制限の設定

私のインターネットプロバイダはパケットレート制限(毎秒最大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の他のパラメータを使用する必要がありますか?

以下は、プロバイダの制限を超えたときに受信した実際のメッセージです。ここに画像の説明を入力してください。

これまで私はいろいろな方法を試しましたが、そのうちの何も動作しませんでした。

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による接続制限の設定

ベストアンサー1

見つかった解決策は正しいです。

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

ただし、デフォルトポリシーはDROPまたはREJECTと仮定されますが、これはOUTPUTでは一般的ではありません。以下を追加する必要があります。

iptables -A OUTPUT -j REJECT

ACCEPTルールの後にこのルールを追加する必要があります。この順序で実行するか、-I代わりにACCEPTを使用してください-A

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

私はTelnetを使ってDVRサーバーをテストしましたが、接続が切断されませんでした。もちろん、新しい接続は発信パケットであるため、REJECTを使用すると、制限に達した直後に再接続しようとするとすぐに失敗します。

ISP が INPUT パケットを制限したいとの意見を収集しました。あなたはそうすることはできません。あなたがそれらをブロックできるときは、あなたのNICにすでに到達しています。つまり、あなたのISPがすでにそれらを占めていることを意味します。 OUTPUTを制限すると、ほとんどのACKが完了しないため、多くの再送が発生するため、INPUTパケットの数も大幅に増加します。

1秒あたり10個のパケットはクレイジーです。

おすすめ記事