ide*_*xer 4 iptables network-traffic
我打算用它iptables来衡量我的互联网流量(灵感来自 Peter Krumins 的精彩文章http://www.catonmat.net/blog/traffic-accounting-with-iptables)。
用于测量流量的计算机当前将所有 LAN 流量转发到 Internet 和从 Internet 转发出去。
我试图找出所有传输的字节(上传+下载)都被计算在哪个链中。该filter FORWARD链是打开多个网站后唯一一个超过兆字节的链(如图所示17M)。似乎是下载(+ 可能是上传)。
但是下面的观察让我产生了怀疑:
me@computer:~$ sudo iptables -vL -t raw
Chain PREROUTING (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
me@computer:~$ sudo iptables -vL -t raw
Chain PREROUTING (policy ACCEPT 34 packets, 2244 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 16 packets, 2664 bytes)
pkts bytes target prot opt in out source destination
Run Code Online (Sandbox Code Playgroud)
即使我访问了一些网站,该raw PREROUTING链sudo iptables -vL -t raw在第一次运行时仍然有 0 字节(第一次运行的sudo iptables -vL -t raw突出之处在于它的长执行时间超过一秒)。几秒钟后,两条raw链都有超过 2000 个字节。
对我来说,它似乎在第一次查询之后开始计数并且丢失了所有早期的字节。
我希望raw PREROUTING链计算转发的 LAN 流量的所有字节,因为以下流程图表明:http : //stuffphilwrites.com/2014/09/iptables-processing-flowchart
我已经能够在第一次运行的计数器中重现零iptables --list --verbose -t raw。在我的情况下,原因只是在iptable_raw我运行命令之前没有加载。
由于我的raw设置中不需要该表,因此通常不会加载该模块,并且直到我运行该命令时才加载该模块。
通过运行rmmod iptable_raw我可以卸载模块,下次运行时iptables --list --verbose -t raw计数器已重置为零。
这一切都按预期工作。我想这和发生在你身上的事是一样的。如果您在raw表中创建规则,模块将自动加载,如果您不需要该表中的任何规则,则无需加载模块。
为了列出当前规则,我建议使用iptables-save它将以可以加载回的格式输出规则iptables-restore。它将显示您当前规则的所有相关详细信息,并且不会加载任何其他模块,它只会显示当前加载的模块。
您第一次运行命令时的延迟可以由多种不同的原因来解释,很难确切地说是哪种情况适合您。但一种可能性是模块需要从中加载的磁盘在空闲时已停止旋转,您需要等待该磁盘旋转。