今これを実行します。
create blockipset hash:ip
add blockipset 192.168.1.5 -exist
add blockipset 192.168.3.115 -exist
iptablesとipsetはip、ポート、ipをブロックできますか?たとえば、リストには次のものが含まれます。
192.168.1.5
192.168.3.115
192.168.1.55,80
192.168.1.53,22
答え1
ipset
このコマンドを使用して、異なる種類の要素を同じコレクションに入れることはできません。ただし、各タイプに1つずつ異なるコレクションを使用できます(リスト全体を介して利用可能ipset help
)。
hash:ip
hash:ip,port
たとえば、
ipset create blocklistip hash:ip
ipset create blocklistipport hash:ip,port
ipset add blocklistip 192.0.2.3
ipset add blocklistipport 192.0.2.2,80
ipset add blocklistipport 192.0.2.3,udp:53
udp:
上記のように、特に明示的に指定されていない限り(UDPの場合、sctp:
SCTPの場合...)ポートのプロトコルはデフォルトでTCPです。
スクリプトは、内容がわかった要素の種類を確認する必要があります。IPセット追加します。ここの簡単な例は、,
ファイルからリストを読み取るときにリストをどこに配置するかを確認することですblocklist.txt
。
while read -r element; do
if echo $element|grep -q ,; then
ipset add blocklistipport $element
else
ipset add blocklistip $element
fi
done < blocklist.txt
リスト内のすべてのアイテムをブロックできます。たとえば、次のようになります。
iptables -A INPUT -m set --match-set blocklistip src -j DROP
iptables -A INPUT -m set --match-set blocklistipport src,dst -j DROP
上記は、src,dst
パケット内で一致するものを見つけるときにパケットの送信元IPアドレスと宛先ポートアドレスを使用することを意味しますhash:ip,port
。
返品、IPセットlist:set
別のコレクションのリストで構成される特別なコレクションがあります。コマンドを使用してコレクションを個別に入力する方法は変更されませんが、ipset
次のようにできます。
ipset create blocklist list:set
ipset add blocklist blocklistip
ipset add blocklist blocklistipport
前の2つを交換してください。iptables次のいずれかを含むルール:
iptables -A INPUT -m set --match-set blocklist src,dst -j DROP
これはあなたの目標を達成するのに役立ちます:このシングルiptablesルールは、ポートの有無にかかわらずコレクション要素を正しく処理します。ipsetに記録。