web-dev-qa-db-ja.com

パケットレート、開いている接続、およびIPアドレスを制限する

Linuxでは、次の目的で、tciptablesなどのツールを使用して、ネットワークインターフェイス上のネットワークトラフィックを制御/形成できますか?

  1. ネットワークパケット数のレート(または総数)を制御します。
  2. 接続(送信)されるIPアドレスの数を制御します。
  3. 開いている接続の総数を制御するTCP接続(1秒あたり))。

もしそうなら、それをどのように行うのですか?

2
WindChaser

Nrには答えがありません。 2(下記参照)。 1.と3.では、limitモジュールを使用できます。

  1. ネットワークパケット数のレートを制御します。

    iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT
    
  2. 開いている接続の総数を制御するTCP接続(1秒あたり)):

    iptables -A INPUT -m state -m tcp -p tcp --dport 80 --state RELATED,ESTABLISHED -m limit --limit 10/second -j ACCEPT
    

またはhashlimitモジュールを使用できます。

  1. ネットワークパケット数のレートを制御します。

    iptables -A INPUT -m hashlimit -m tcp -p tcp --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-above 10/sec --hashlimit-burst 2 --hashlimit-htable-expire 30000 --hashlimit-name pktlimit -j DROP
    
  2. 開いている接続の総数を制御するTCP接続(1秒あたり)):

    iptables -I INPUT -m hashlimit -m tcp -p tcp --dport 80 --hashlimit-above 10/sec --hashlimit-mode srcip --hashlimit-name connlimit -m state --state RELATED,ESTABLISHED -j DROP
    

次の項目を確認することで、hashlimitのパフォーマンスを監視できます。

cat /proc/net/ipt_hashlimit/pktlimit
cat /proc/net/ipt_hashlimit/connlimit

[〜#〜]編集[〜#〜]

NAT=が支配的である世界では、nr。2で行うように、送信元IPアドレスの数を制限することは本当に意味がありますか?合計を制限する方が理にかなっていると思いますオープンの数TCP接続、このように:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
2
Luca Gibelli

あなたの質問について1.)

ツールtcを理解している限り、kbitまたはmbitでレート/スループットを制御できます。 tcのマンページには、

bまたはバイト単位の裸数。

質問の背景、意図、達成しようとしていること、および広範な解決策/トピックが明確でないため、 Archlinux のようなトラフィック制御のチュートリアルを参照したいと思います。

OpenVPNクライアントごとにTCでトラフィックシェーピング(レート制限)を行う方法 または 特定のIPアドレスのLinux制御パケットサイズ など、Serverfaultにもスレッドがあります。

彼らはあなたの質問にヒントを与えるかもしれません2.)と3.)も。

0
U880D