Linux抓包(端口流量监控)
Linux流量监控工具
工具一:iftop
在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。
一、iftop是什么?
iftop是类似于top的实时流量监控工具。
官方网站:http://www.ex-parrot.com/~pdw/iftop/
二、iftop有什么用?
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。
三、安装iftop
安装方法1、编译安装
如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。
CentOS上安装所需依赖包:
[root@sky ~] # yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel |
Debian上安装所需依赖包:
apt-get install flex byacc libpcap0.8 libncurses5
下载iftop
[root@sky ~] # wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz [root@sky ~] # tar zxvf iftop-0.17.tar.gz [root@sky ~] # cd iftop-0.17 [root@sky iftop-0.17] # ./configure [root@sky iftop-0.17] # make && make install |
安装方法2:(懒人办法,最简单)
直接省略上面的步骤
CentOS系统:
[root@sky ~] #yum install flex byacc libpcap ncurses ncurses-devel [root@sky ~] #wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm [root@sky ~] #rpm -ivh iftop-0.17-1.el5.rf.i386.rpm |
Debian系统 运行:apt-get install iftop
四、运行iftop
[root@sky ~] # iftop |
效果如下图:
![](https://images0.cnblogs.com/blog/747908/201505/271535276732574.jpg)
[root@sky ~] # iftop -P -n -N -i em2 <==查看网卡2流量,并显示端口号 |
五、相关参数及说明
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
2、iftop相关参数
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
六、常见问题
1、make: yacc: Command not found
make: *** [grammar.c] Error 127
解决方法:apt-get install byacc / yum install byacc
2、configure: error: Curses! Foiled again!
(Can't find a curses library supporting mvchgat.)
Consider installing ncurses.
解决方法:apt-get install libncurses5-dev / yum install ncurses-devel
工具二: Iptraf
Iptraf是一款linux环境下,监控网络流量的一款绝佳的免费小软件,特别是安装到防火墙上,与Iptables一起工作,监控流经防火墙的网络异常,效果非常好。
我的安装配置环境是redhat 9.0
一、软件下载
Iptraf的最新版本是2.7.0,可以从下面的地址下载ftp://Iptraf.seul.org/pub/Iptraf/
二、安装环境需要
--- gcc 2.7.2.3 or later
--- GNU C (glibc) development library 2.1 or later
--- ncurses development libraries 4.2 or later
可以在linux下执行:
[root@sky ~] # rpm -qa | grep gcc [root@sky ~] # rpm -qa | grep glibc [root@sky ~] # rpm -qa | grep ncurses |
如果没有,则安装。
三、安装
使用yum安装方式:
[root@sky ~] # yum -y install iptraf |
使用rpm包安装方式
将下载得到的Iptraf-2.7.0.tar.gz上传到你所要安装的机器上,我的是防火墙的 /home/ 目录:
[root@sky ~] # cd /home/ [root@sky home] # tar zxf Iptraf-2.7.0.tar.gz [root@sky home] #cd Iptraf-2.7.0 [root@sky Iptraf-2.7.0] # ./Setup |
至此,安装完毕。
安装程序会将执行程序安装到 /usr/local/bin 目录下,并创 /var/local/Iptraf 目录放置Iptraf的配置文件,同时创建 /var/log/Iptraf 目录放置Iptraf产生的日志文件。
四、运行Iptraf
[root@sky ~] # Iptraf |
![](https://images0.cnblogs.com/blog/747908/201505/271535284234203.png)
选择【IP流量监控】
![](https://images0.cnblogs.com/blog/747908/201505/271535292664860.png)
选择监控全部端口【all interface】
![](https://images0.cnblogs.com/blog/747908/201505/271535295794890.png)
![](https://images0.cnblogs.com/blog/747908/201505/271535300631504.png)
可以看到有各种IP在通过公网扫描我的服务器,如何不让外界来扫描本机呢?最好的做法就是在iptables里面做ACL规则限制,只允许内网和办公司的公网IP才能ping通本机。(规则设置参照Linux下iptables配置详解)
运行Iptraf后会产生一个字符界面的菜单,点击x可以退出 Iptraf,各菜单说明如下:
1、菜单Configure...
在这里可以对 Iptraf 进行配置,所有的修改都将保存在文件:/var/local/Iptraf/Iptraf.cfg 中
--- Reverse DNS Lookups 选项,对IP地址反查 DNS名,默认是关闭的。
--- TCP/UDP Service Names 选项,使用服务器代替端口号,例如用www 代替80,默认是关闭的。
--- Force promiscuous 混杂模式,此时网卡将接受所有到达的数据,不管是不是发给自己的。
--- Color 终端显示彩色,当然用telnet ,ssh连接除外,也就是用不支持颜色的终端连接肯定还是没有颜色。
--- Logging 同时产生日志文件,在/var/log/Iptraf 目录下。
--- Activity mode 可以选择统计单位是kbit/sec 还是 kbyte/sec 。
--- Source MAC addrs in traffic monitor 选择后,会显示数据包的源MAC地址。
2、菜单Filters...
在这里可以设置过滤规则,这是最有用的选项了,当你从远端连入监控机时,自己的机器与监控机会产生源源不断的tcp数据包,有时很令人讨厌,此时你就可以将自己的ip地址排除在外。
它包括六个选项,分别是:Tcp、Udp、Other IP、ARP、RARP、Non-ip。我们以TCP为例说明,其它选项的配置都很相似。
--- Defining a New Filter
选择Defining a New Filter后,会出来一对话框,要求填入对所建的当前规则的描述名,然后回车确定,Ctrl+x取消。再接着出现的对话框里,Host name/IP address:的First里面填源地址,Second里填目标地址,Wildcard mask的两个框里面分别是源地址和目标地址所对应的掩码,注意,这里的地址即可以是单个地址,也可以是一个网段,如果是单个IP,则相应的子网掩码要填成255.255.255.255,如果是一个网段,则填写相应的子网掩码:例如,想表示192.168.0.0,有256个IP地址的网段,则填写192.168.0.0,子网是:255.255.255.0,其它类推,All则用0.0.0.0,子网也是0.0.0.0表示。
Port:栏要求填入要过滤的端口号,0表示任意端口号。Include/Exclude栏要求填入I或者E,I表示包括,E表示排除。填写完毕,回车确认,Ctrl x取消。
--- Applying a Filter
我们在上一步定义的一个或多个过滤规则会存储为一个过滤列表,在没有应用之前并不起作用,我们可以在这里选择我们应用那些过滤规则。所有应用的规则会一直起作用,即使重新启动Iptraf。我们可以执行Detaching a Filter来取消执行当前所有应用的规则。
--- Editing a Defined Filter 编辑一个已经存在的规则
--- Deleting a Defined Filter 删除一个已经定义的规则
--- Detaching a Filter 取消执行当前所有应用的规则
3、菜单IP Traffic Monitor
IP数据包流量实时监控窗口,注意这里会监控所有的来往数据包,包括自己的,所以,如果你使用远程终端连接上来的话,你和监控机将会源源不断的产生数据流,因此建议在Filters...菜单中将自己的IP过滤掉,是它不产生影响。在这里可以实时的看到每一个连接的流量状态,它有两个窗口,上面的是TCP的连接状态,下面的窗口可以看到UDP、ICMP、OSPF、IGRP、IGP、IGMP、GRE、ARP、RARP的数据包。可以点击s键选择排序,可以按照包的数量排序,也可按照字节的大小排序,如果因为它是实时变化的而导致看不太清楚的话,可以在Configure菜单中把Logging功能打开,它就会在/var/log/Iptraf 目录中记录日志,以方便你在日后查看,当Logging功能打开后,当你开始监控Iptraffic时,程序会提示你输入Log文件的文件名,默认的是ip_traffic-1.log。
在一个比较繁忙的网络里,显示的结果可能很乱,以至于你很难找到自己感兴趣的数据,这时可以使用Filters菜单,来过滤显示的数据。
4、菜单General Interface Statistics
这里显示每个网络设备出去和进入的数据流量统计信息,包括总计、IP包、非IP包、Bad IP包、还有每秒的流速,单位是kbit/sec或者是kbyte/sec ,这由Configure菜单的Activity选项决定。
如果设置了Filter选项,这里也受到影响。
5、菜单Detailed Interface Statistics
这里包括了每个网络设备的详细的统计信息,很简单,不再赘述。
6、Statistical Breakdowns
这里提供更详细的统计信息,可以按包的大小分类,分别统计;也可以按Tcp/Udp的服务来分类统计,也不再赘述。
7、LAN Station Statistics
提供对每个网络地址通过本机的数据的统计信息。