ifconfig显示错误的RX / TX字节数

ifconfig告诉eth0一些RX = 2,8GB,TX = 1,3GB的值不能是真实的,因为我最近通过eth0传输了很多10GB +文件。 我想知道

  • 如果这只是一些普通的整数溢出(4GB限制)
  • 或者如果这是一个指标,有一些邪恶的rootkit谎言错误的数据

这是一个愚蠢的问题,但这种差距让我感到困扰。

谢谢,尼尔斯

我会说,这是4GB的概括,因为你猜测。 我用最新的32位Linux内核来解决这个问题。

您可以获取内核的源代码,并在include/linux/netdevice.h查看它是否相同,并检查net_device_stats->rx_bytes的数据types。 如果您使用的是32位系统,并且时间是无符号的,那么您只能获得2 ^ 32个字节或4 GB。 更多关于这个在我这里的职位。

除非ifconfig grabs是从proc这个日子以外的地方的计数器…

您可以设置iptables来pipe理计数器 – 甚至可以通过保存/恢复来重新启动,也可以手动清除/设置计数器为特定值。

如果你还没有iptables规则,你只需要添加至less一条规则到input和输出链,例如允许所有的东西,它会提供你想要的:

 iptables -A INPUT -j ACCEPT iptables -A OUTPUT -j ACCEPT 

然后你可以看到总数:

 root@devcloner:~# iptables -n -vL Chain INPUT (policy ACCEPT 2850K packets, 4183M bytes) pkts bytes target prot opt in out source destination 22M 32G 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 657K packets, 43M bytes) pkts bytes target prot opt in out source destination 12951 813K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 

-x将显示完整的字节计数器:

 root@devcloner:~# iptables -n -vL -x Chain INPUT (policy ACCEPT 2850263 packets, 4182667884 bytes) pkts bytes target prot opt in out source destination 22285352 32724735127 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 657099 packets, 43320848 bytes) pkts bytes target prot opt in out source destination 102453 6738544 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 

这个信息可能是从/ proc或/ sys的地方parsing的。