ipset이 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에 연결되어 있는지 어떻게 확인할 수 있나요?

감사해요

답변1

이것IP 세트참조 카운터가 내장되어 있습니다. 그래서 참조할 때마다iptables, 해당 참조 카운터가 증가합니다. 내가 아는 한, 오직IP 세트메타세트 list:set합계iptables인용하다IP 세트. 사용하지 않거나 list:set변경하지 않을 경우 직접 쿼리할 수 있습니다.IP 세트(와 함께 ipset 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:

참조 횟수가 증가합니다. 이 세트를 사용하여 새 명령을 추가하면 iptables2로 늘어납니다. 등.

XML 형식 출력은 올바른 도구를 사용한 스크립팅에 유용할 수 있습니다. 예를 들어:

# references=$(ipset -terse -output xml list | xmlstarlet sel -t -v '/ipsets/ipset[@name="sshd"]/header/references')
# echo $references
2

답변2

-C플래그 인을 사용하여 iptables컬렉션이 존재하는지 확인할 수 있습니다 .

sudo iptables -C INPUT -m set --match-set sshd src -j DROP

컬렉션이 존재하지 않으면 반환 코드 > 0입니다.

관련 정보