Iptables
如何檢查 ipset 是否連接到 iptables
我的 iptables 輸出如下所示:
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set sshd src Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
我如何檢查這個“sshd”集是否已經連接到 iptables?
謝謝
您可以使用
-C
flag iniptables
檢查集合是否存在:sudo iptables -C INPUT -m set --match-set sshd src -j DROP
如果集合不存在,則返回碼 > 0。
ipset有一個內置的引用計數器。因此,每當它被iptables引用時,它的引用計數器就會增加。據我所知,只有ipset的元集
list:set
和iptables引用了ipset。如果您不使用list:set
或不更改它,您可以直接查詢ipset (withipset list
) 以了解它是否被iptables引用。例子:
# ipset create sshd hash:ip # ipset list Name: sshd Type: hash:ip Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 88 References: 0 Number of entries: 0 Members: # iptables -A INPUT -m set --match-set sshd src -j DROP # ipset list sshd Name: sshd Type: hash:ip Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 88 References: 1 Number of entries: 0 Members:
引用計數增加。使用此集合添加新
iptables
命令會將其增加到 2。等等。XML 格式輸出可能有助於腳本使用正確的工具。例如:
# references=$(ipset -terse -output xml list | xmlstarlet sel -t -v '/ipsets/ipset[@name="sshd"]/header/references') # echo $references 2