![iptables 1.8.2(debian10)在默认策略中不显示数据包数量](https://linux22.com/image/743635/iptables%201.8.2%EF%BC%88debian10%EF%BC%89%E5%9C%A8%E9%BB%98%E8%AE%A4%E7%AD%96%E7%95%A5%E4%B8%AD%E4%B8%8D%E6%98%BE%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%8C%85%E6%95%B0%E9%87%8F.png)
iptables 1.8.2(debian10)在默认策略中不显示数据包数量?
在 debian9 中通常显示计数器
在debian10中,输出命令iptables -nvL
为:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
答案1
有一份关于此问题的错误报告,影响 Iptables 1.8.2 @ Debian 10.6
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=961117
我的解决方法是:
在启动过程中加载 iptables 规则,还是在系统加载后以 root 身份加载 iptables 规则,都没有区别(策略计数器始终保持为零)。但是,如果在加载规则之前,使用以下命令重置 iptables:
iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
然后你的政策计数器开始工作;
现在,我已经在 iptables 规则文件的开头添加了这些规则,并且一切运行正常。
答案2
链策略中的数据包计数器仅在您确实有适用该策略的数据包时才会更新。或者换句话说,当有数据包进入链并且不被链中的任何规则允许(禁止)时。
当所有数据包都与链中的规则匹配(或者根本没有规则)时,策略计数器将保持为零。
可以说,良好的防火墙配置是实际规则集决定流量的命运,并且您永远不需要回退到链策略来(禁止)允许流量。
所以从这个角度来看,如果系统中的计数器不为零,那么防火墙设计就是不好的......
iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1012 7864 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 7 packets, 968 bytes)
pkts bytes target prot opt in out source destination
在这种情况下,所有流量都由显式规则匹配,并且永远不需要 INPUT 链上的默认 ACCEPT 策略。ACCEPT 策略计数器保持为零
iptables -nvL
Chain INPUT (policy DROP 1996 packets, 87824 bytes)
pkts bytes target prot opt in out source destination
1386 101K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 176 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 31 packets, 4332 bytes)
pkts bytes target prot opt in out source destination
在此示例中,规则仅打开 SSH 和 HTTP 端口,并依赖 INPUT 链策略来丢弃所有其他流量。丢弃策略计数器将随着允许 SSH 和 HTTP 的端口 22 和 80 上的规则所不允许的每一位流量而增加。
iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1876 144K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 176 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
115 9804 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
与上例相同的有效防火墙,允许端口 22 和 80 上的流量,但有一条明确规则拒绝所有其他流量,而不是依赖默认的 DROP 策略。DROP 策略计数器将保持为零。
答案3
我明白你写的内容!
这是一个 Web 服务器,监听 ssh 端口 1891 和 Web 端口 80 和 443
如果我运行下面这些规则作为测试,我有 ssh 访问权限,但没有 Web 访问权限,并且计数器不起作用!
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
94 6188 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1891
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
也就是说...逻辑有效,但不计入默认策略放弃
debian9 中的相同规则正常计数,我猜测这是标准 debian10 nftables 防火墙的一个错误,您觉得呢?