connlimit と IP セットを組み合わせるにはどうすればよいでしょうか?

connlimit と IP セットを組み合わせるにはどうすればよいでしょうか?

connlimitクライアント/サービスごとの接続数を制限できます。このようなルールを、Linux カーネルと netfilter の最新バージョンで利用可能な IP セットと組み合わせるにはどうすればよいでしょうか?

答え1

という名前の ipset がありMYTESTSET、この ipset のタイプが であるとしますhash:ip。この ipset には IP アドレスだけが格納されます。

次に、IPset と照合し、一致後connlimit、必要なパラメータを使用して一致拡張機能と照合します。

iptables -A INPUT -p tcp -m set --match-set MYTESTSET src -m connlimit --connlimit-above 1 --connlimit-saddr --connlimit-mask 32 -j DROP

これは次のことを行います: IPセット内の各ソースについて、接続がカウントされ、1つ以上ある場合(--connlimit-above 1)はドロップされ、接続数が制限されます。ipset内のソースごとに1 にします。(の代わりに--connlimit-upto xxxとを使用して、逆の方法で一致させることもできます)-j ACCEPTDROP

セット全体を考慮し、1つの接続を許可する場合ipset内のすべてのソーススイッチを0に設定します--connlimit-mask

関連情報