如何检查iptables中每条规则的命中数?

app*_*pps 18 linux firewall iptables

我想知道我可以从我使用iptables创建的访问列表中找出访问了哪个规则,以及访问了多少次.

我的防火墙在iptbales中有超过1000个输入和输出规则; 我想知道每个访问了多少.

例如,假设我有以下规则

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我想知道每条规则1,2,3,4,5和6被击中多少次.

sca*_*cai 24

iptables如果指定verbose的选项-v,将列出数据包和字节计数器,例如.同样,将列出所有条目,包括每个链的提到的计数器,但不列出每个表条目(在某些系统上需要包含计数器的选项).iptables -vLiptables-saveiptables-save-c

  • 要实时查看点击量,`watch`可以用一种不错的方式突出显示它们:`sudo watch -d iptables -v -L`(`-d可以显示差异)。 (2认同)

小智 7

我使用以下命令检查我的 iptables 规则:

iptables -nvL [INPUT|FORWARD|OUTPUT|myCHAINNAME] --line-numbers | less
Run Code Online (Sandbox Code Playgroud)

-n 通过不进行主机名查找来加快进程

行号有助于删除规则:

iptables -D [INPUT|FORWARD|OUTPUT|myCHAINNAME] [Rule#]
Run Code Online (Sandbox Code Playgroud)

HTH