これらのルールをグローバルではなくIPごとに適用するにはどうすればよいですか? IPが毎秒2つ以上のパケットを送信する場合、すべてのIPのすべてのパケットが破棄されるため、1秒あたり2つ以上のパケットを送信するIPからのみパケットをドロップする必要があります。
まず、次の規則を適用します。
/sbin/iptables -t mangle -A PREROUTING -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -m limit --limit 1/sec --limit-burst 2 -j ACCEPT
/sbin/iptables -I INPUT -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -m limit --limit 1/sec --limit-burst 2 -j ACCEPT
次に、次を適用します。
/sbin/iptables -I INPUT -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -j DROP
/sbin/iptables -t mangle -A PREROUTING -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -j DROP
ありがとう
答え1
hashlimitモジュールを使用する必要があります。
iptables -I PREROUTING -t mangle -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -m hashlimit --hashlimit-mode srcip --hashlimit-above 2/sec --hashlimit-burst 1 --hashlimit-name foo -j DROP
ここでは --hashlimit-mode で十分です。以下のマニュアルを参照してください
--hashlimit-モード {srcip|srcport|dstip|dstport},...
考慮すべきオブジェクトのカンマ区切りリスト。 --hashlimit-mode オプションが指定されていない場合、hashlimit は制限のように動作しますが、ハッシュ管理が犠牲になります。
たとえば、次のように、各送信元 IP-宛先ポートのペアの速度を設定できます。
--hashlimit モード srcip,dstport