Linux 使用 iptables 进行 Shadowsocks 流量统计

通过ifconfig只能看到所有的流量总和,如果想实时统计某个端口上用了多少流量,最简单的方法便是通过iptables

通过这个方法也可以去统计 Shadowsocks 的每个账号用了多少流量

Shadowsocks 多用户版为每个用户分配了不同的服务器连接端口号,服务器对该用户的所有流量均是通过这个端口发出的

只需要以这个端口为源端口,统计OUTPUT流量,就可以精确统计 Shadowsocks 的单用户流量

统计5902端口上的出网流量(这里统计的是用户下载流量):

1
iptables -A OUTPUT -p tcp --sport 5902

-A OUTPUT 表示在OUTPUT上增加一条规则
-D OUTPUT 表示在OUTPUT上删除一条规则
-p tcp 表示指定tcp协议
–sport 5902 表示出网的端口号为5902

统计5902端口上的进网流量(这里统计的是用户上传流量):

1
iptables -A INPUT -p tcp --dport 5902

-A INPUT表示在INPUT上增加一条规则
-D INPUT表示在INPUT上删除一条规则
-p tcp 表示指定tcp协议
–dport 5902 表示入网的端口号为5902

添加完成之后就可以通过下面命令查看流量信息

1
2
iptables -vnL
iptables -vnL>/home/iptables.log #输出内容到文件

在INPUT下面的就是入网流量,OUTPUT里面的是出网流量,默认是使用易读的单位,也就是自动转化成M,G。如过需要Bytes做单位,则增加一个-x参数:

1
iptables -n -v -L -t filter -x

流量信息自添加规则之后开始统计,无法显示之前的流量信息。 重启防火墙,流量统计数据将会被重置

pkts 一列是包的数量 bytes 一列是流量统计结果

最后:

一般重启后iptables规则会丢失,因此需要进行保存操作。

1
2
3
service iptables save #保存防火墙配置
vi /etc/sysconfig/iptables #编辑防火墙配置
service iptables restart #重启防火墙