您的位置:首页 > 其它

使用IPTABLES实现对特定IP,端口流量的精确统计

2015-03-05 11:06 260 查看
相信有人会想过如何对服务器上某个特定IP出口/入口流量进行进行统计。不需要找其他程序,Linux kernel 2.6(2.4算不算?)与之后版本自带的iptables就能实现此功能。方法非常简单,在iptables处添加特定规则即可。


对特定IP进行流量统计:

例如我要统计服务器上的IP:192.168.0.10的入网流量:

1iptables -I INPUT -d 192.168.0.10
统计该IP的出网流量:

1

iptables
-I
OUTPUT
-s
192.168.0.10


统计特定端口的流量:

方法和统计IP的流量差不多,使用-p指定端口类型,--dport指定端口号。 例如我要统计服务器上的IP:192.168.0.10,80端口的入网流量:

1iptables -I INPUT -d 192.168.0.10 -p tcp --dport 80
统计该IP 80端口的出网流量:

1

iptables
-I
OUTPUT
-s
192.168.0.10
-p
tcp
--sport
80

上面的命令中,参数-d是目标IP,-s是源IP。因为入网的流量发送至192.168.0.10这个IP,因此把192.168.0.10作为目标IP可以统计入网的流量。出网时,192.168.0.10发出的流量来着192.168.0.10,因此把192.168.0.10作为OUTPUT的源IP可以统计流量。 不仅如此,还可以对特定来源IP,来源端口,出网的目的IP,出网的目的端口进行统计,根据需要使用-s,--sport,-d,--dport几个参数即可。


查看流量:

要查看流量,使用-v参数:

1iptables -n -v -L -t filter

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

1

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


作为路由时的流量统计:

如果服务器是做路由的,那么使用上面的命令把规则插入至INPUT/OUTPUT链中就无效了,因为那些IP根本不是在你的服务器上。但是那些IP的流量,都需要经过你的服务器的转发,因此把对于的规则插入至FORWARD表即可。、 例如我要统计IP为192.168.0.10的服务器入网流量:

1iptables -I FORWARD -d 192.168.0.10
统计该IP的出网流量:

1

iptables
-I
FORWARD
-s
192.168.0.10

需要注意的是,此时添加统计出网和入网流量的规则,不再需要分INPUT链和OUTPUT链,因为你服务器只负责根据目标IP,进行转发。看图后你应该能明白:




IPTABLES规则的保存:

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


基于Red Hat:

1service iptables save

基于Debian:

先保存:

1

iptables-save
>
/etc/iptables.rules

恢复:

1

iptables-restore
<
/etc/iptables.rules


其它发行版本:

原谅我的无知……

http://yzs.me/2212.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: