connlimit
を使用すると、クライアント/サービスごとの接続数を制限できます。このようなルールを、Linuxカーネルとnetfilterのより新しいバージョンで利用可能なIPセットとどのように組み合わせるのですか?
MYTESTSET
という名前のipsetがあり、このipsetのタイプがhash:ip
であるとします。 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セット内のソースごとに接続がカウントされ、複数ある場合(--connlimit-above 1)はドロップされるため、接続数が制限されますper ipsetのソースから1。(DROP
の代わりに--connlimit-upto xxx
と-j ACCEPT
を使用して、他の方法で一致させることもできます)
セット全体を検討し、1つの接続を許可する場合ipset内のすべてのソースに対して次に、--connlimit-mask
スイッチを0に設定します。