如果我在运行 Ubuntu 的 VPS 服务器上运行该命令iptables -nvL
,我会得到类似的输出(输出更长 - 我只显示了有趣的部分)
$ sudo iptables -nvL
Chain INPUT (policy DROP 41439 packets, 2499K bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 91.234.36.0/24 0.0.0.0/0
0 0 DROP all -- * * 223.255.252.0/23 0.0.0.0/0
0 0 DROP all -- * * 1.0.1.0/24 0.0.0.0/0
3102 261K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
174K 54M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
495 26116 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
331 14756 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
26 1468 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables denied: "
有时,当我运行此命令时,我会得到如下结果
(policy DROP 41439 packets, 2499K bytes)
但其他时候 - 在同一个 shell 内 - 数据会重置为零,并且似乎再次开始计数。例如
(policy DROP 2 packets, 9K bytes)
如果我切换到不同的 shell,我将从最后一个 shell 获得相同的数据。
我的问题是
- iptables 从哪里获取这些信息?
- 日志文件?
- 它是否从第一次调用开始内部跟踪
iptables -nvL
?
- 如何确保数据不会重置为零?
答案1
Iptables 保存已处理数据包的计数(每个链)。这两个选项可用于更改计数:
-Z, --zero [chain [rulenum]] 将所有链中的数据包和字节计数器清零,或仅将给定的链清零,或仅将链中的给定规则清零。
-c, --set-counters 数据包字节 这使管理员能够初始化规则的数据包和字节计数器(在 INSERT、APPEND、REPLACE 操作期间)。
了解调用 iptables 执行 INSERT、APPEND 或 REPLACE 操作的其他进程也会更改数据包计数。