如何利用预装工具统计指定VLAN内各IP的实时RX/TX字节数?
如何利用预装工具统计指定VLAN内各IP的实时RX/TX字节数?
嘿,这个需求完全可以用系统预装的工具实现,不用额外装软件!我给你整理了几种靠谱的方法,都是基于你提到的工具或者常见预装的命令:
方法一:用iptables流量计数器(最推荐,精准统计)
iptables自带流量统计功能,我们可以给VLAN内的每个IP单独创建规则,分别统计入站(RX)和出站(TX)字节数:
创建自定义统计链(可选,但更清晰)
先创建专门的链来管理VLAN的流量统计,避免和默认链混在一起:# 针对VLAN入站流量创建统计链 iptables -N VLAN_RX_STATS # 将VLAN接口的入站流量引到这个链(替换eth0.10为你的VLAN接口名) iptables -A INPUT -i eth0.10 -j VLAN_RX_STATS # 针对VLAN出站流量创建统计链 iptables -N VLAN_TX_STATS # 将VLAN接口的出站流量引到这个链 iptables -A OUTPUT -o eth0.10 -j VLAN_TX_STATS为每个IP添加统计规则
假设你的VLAN内IP是192.168.10.10、192.168.10.20、192.168.10.30,分别添加规则:# 统计每个IP的入站(RX)字节数 iptables -A VLAN_RX_STATS -s 192.168.10.10 -j ACCEPT iptables -A VLAN_RX_STATS -s 192.168.10.20 -j ACCEPT iptables -A VLAN_RX_STATS -s 192.168.10.30 -j ACCEPT # 统计每个IP的出站(TX)字节数 iptables -A VLAN_TX_STATS -d 192.168.10.10 -j ACCEPT iptables -A VLAN_TX_STATS -d 192.168.10.20 -j ACCEPT iptables -A VLAN_TX_STATS -d 192.168.10.30 -j ACCEPT查看实时统计数据
执行以下命令就能看到每个IP的RX/TX字节数了:# 查看入站统计 iptables -L VLAN_RX_STATS -v -n # 查看出站统计 iptables -L VLAN_TX_STATS -v -n解释一下参数:
-v显示详细统计信息(包括字节数),-n不解析IP为域名,速度更快。重置计数器(可选)
如果需要重新统计,可以清零计数器:iptables -Z VLAN_RX_STATS iptables -Z VLAN_TX_STATS
方法二:结合ip和ss工具(查看活跃连接的实时流量)
如果只是想查看当前活跃连接的流量情况,可以用ss(netstat的替代工具,多数系统预装)结合ip命令:
# 查看VLAN内某个IP的所有活跃TCP连接及其流量 ss -ti dst 192.168.10.10
其中-t表示只看TCP连接,-i显示连接的实时流量信息(包括RX/TX字节数)。如果要统计UDP,把-t换成-u即可。
不过这个方法只能看活跃连接的流量,无法统计所有经过该IP的流量(比如广播包、未建立连接的流量),适合临时排查活跃连接的流量情况。
方法三:用netstat结合awk做流量汇总(适合批量统计)
虽然netstat本身没有直接按IP统计流量的功能,但我们可以结合awk来汇总连接的流量数据:
# 统计VLAN内所有IP的TCP连接流量 netstat -antp | grep 192.168.10. | awk '{print $5, $6}' | awk -F'[: ]' '{sum[$1]+=$NF} END {for(ip in sum) print ip, sum[ip]" bytes"}'
这个命令会过滤出VLAN网段的TCP连接,然后按IP汇总发送的字节数。不过同样的,它只能统计活跃TCP连接的流量,局限性比较大,适合临时快速汇总。
备注:内容来源于stack exchange,提问作者Rasoul.A
相关产品推荐
相关产品推荐

