web-dev-qa-db-ja.com

INPUTUDPポートの1秒あたりの着信パケット数を制限します[IPごとのみ、グローバルではありません] [Ubuntu IPTables]

検索しましたが、1秒あたりおよびIPあたりのINPUTUDPポートの着信パケット数を制限するルールが見つかりません。

私はそれが必要です私のソケットに接続するすべてのIPごとに特定ののものではありません。

Ubuntu 14.0.4 LTSAMD64でiptablesを使用しています。

私はUDPがどのように機能するかよく知っています。私のシナリオでは、誰かがさまざまなポートを使用して多数のUDPソケットを作成できます。

UDPポートに接続できるのは1つのIPから1つのソケットだけです。

これはiptablesで可能ですか? NetfilterとC++を知っていますが、それでこれを行うことはできますか?

1
AssassiN

これがあなたができることです:

iptables -A INPUT -p udp -s 111.111.111.111 --dport 123 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

limit iptables拡張子が必要です。提供されている例では、1分あたり最大25の接続が制限されています。 limit-burst 100は、接続の総数が制限バーストレベルに達した後にのみ制限/分が適用されることを示します。

マニュアルから:

-s, --source address[/mask][,...]
              Source specification. Address can be either a network name, a hostname, a network IP address (with  /mask),  or  a  plain  IP
              address.  Hostnames  will be resolved once only, before the rule is submitted to the kernel.  Please note that specifying any
              name to be resolved with a remote query such as DNS is a really bad idea.  The mask can be either an ipv4 network  mask  (for
              iptables) or a plain number, specifying the number of 1's at the left side of the network mask.  Thus, an iptables mask of 24
              is equivalent to 255.255.255.0.  A "!" argument before the address specification inverts the sense of the address.  The  flag
              --src  is an alias for this option.  Multiple addresses can be specified, but this will expand to multiple rules (when adding
              with -A), or will cause multiple rules to be deleted (with -D).
1
prosti