Linux性能优化(七)——网络流量监控工具

一、iftop

1、iftop简介

iftop命令可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
在线安装:yum install iftop

2、iftop命令

iftop -h | [-nNpblP] [-u unit] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]
-h:查看帮助信息
-i:指定监控网卡
-b:不显示流量柱状图
-B:以字节为单位显示流量(默认bits)
-n:不解析主机名称,直接都显示IP
-N:不解析端口服务,直接显示端口号
-F:显示特定网段的进出流量
-m limit:设置带宽上限,可使用K、M、G作为后缀
iftop -b -n -N -F 192.168.0.0/24
Linux性能优化(七)——网络流量监控工具
TX:发送流量
RX:接收流量
TOTAL:总流量
cum:累积总流量
peak:流量峰值
rates:分别表示最近2s、10s、40s的平均流量

3、iftop交互命令

按h切换是否显示帮助
按n切换显示本机IP或主机名
按s切换是否显示本机的host信息
按d切换是否显示远端目标主机的host信息
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量
按N切换显示端口号或端口服务名称
按S切换是否显示本机的端口信息
按D切换是否显示远端目标主机的端口信息
按p切换是否显示端口信息
按P切换暂停/继续显示
按b切换是否显示平均流量图形条
按B切换计算2秒或10秒或40秒内的平均流量
按T切换是否显示每个连接的总流量
按l打开屏幕过滤功能,输入要过滤的字符,
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化
按j或按k可以向上或向下滚动屏幕显示的连接记录
按1或2或3可以根据右侧显示的三列流量数据进行排序
按<根据左边的本机名或IP排序;按>根据远端目标主机的主机名或IP排序
按o切换是否固定只显示当前的连接
按f可以编辑过滤代码
按!可以使用shell命令
按q退出监控

二、netstat

1、netstat简介

netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

2、netstat命令

netstat [-vWeenNcCF] [<Af>] -r         
netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

-a,--all:显示所有连线中的Socket。
-A <网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c,--continuous:持续列出网络状态。
-C,--cache:显示路由器配置的快取信息。
-e,--extend:显示网络其他相关信息。
-F,--fib:显示FIB。
-g,--groups:显示多重广播功能群组组员名单。
-h,--help:在线帮助。
-i,--interfaces:显示网卡列表
-l,--listening:显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r,--route:显示Routing Table。
-s,--statistics:显示网络工作信息统计表。
-t,--tcp:显示TCP传输协议的连线状况。
-u,--udp:显示UDP传输协议的连线状况。
-v,--verbose:查看不支持的地址族。
-V,--version:显示版本信息。
-w,--raw:显示RAW传输协议的连线状况。
-x,--unix:此参数的效果和指定"-A unix"参数相同。
--ip,--inet:此参数的效果和指定"-A inet"参数相同。

3、netstat常用命令

netstat -a
列出所有端口
netstat -at
列出所有TCP端口
netstat -au
列出所有UDP端口
netstat -l
只显示监听端口
netstat -lt
只列出所有监听TCP端口
netstat -lu
只列出所有监听UDP端口
netstat -lx
只列出所有监听UNIX端口
netstat -s
显示所有端口的统计信息
netstat -st
显示TCP端口的统计信息
netstat -su
显示UDP端口的统计信息
netstat -pt
输出PID和进程名称
netstat -r
显示核心路由信息
netstat -ap | grep ssh
查找程序运行的端口
netstat -an | grep ':80'
查找运行在指定端口的进程
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
查看连接某服务端口最多的的IP地址
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
TCP各种状态列表
netstat -anpo | grep "php-cgi" | wc -l
查看phpcgi进程数,如果接近预设值,说明不够用,需要增加
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
查看连接某服务端口最多的的IP地址
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
Linux性能优化(七)——网络流量监控工具
SYN_SENT:客户端发送一个SYN以请求建立一个连接后状态置为SYN_SENT。 SYN_RECV:服务端发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN,状态置为SYN_RECV。
ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互。
FIN_WAIT1:主动关闭端应用程序调用close,发出FIN请求主动关闭连接,进入FIN_WAIT1状态。
CLOSE_WAIT:被动关闭端TCP接到FIN后,就发出ACK以回应FIN请求,进入CLOSE_WAIT状态。
FIN_WAIT2:主动关闭端接到ACK后,就进入FIN-WAIT-2状态。LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接,发送一个FIN,等待收到对方ACK后状态为LAST-ACK。
TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。
CLOSING:等待远程TCP对连接中断的确认
CLOSED:被动关闭端在接受到ACK包后,进入CLOSED状态,连接结束。
UNKNOWN:未知的Socket状态。

三、tcpdump

1、tcpdump简介

tcpdump是用于抓取和分析经过系统的流量数据包的命令行工具,通常被用作网络故障分析工具以及安全工具。

2、tcpdump命令

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q|-P in|out|inout ] [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -Z user ] [ expression ]

-a:将网络和广播地址转换成名称。
-c count:抓取数据包数目
-e:显示连接层级的文件头
-f:用数字显示网络地址。
-F 表达文件:指定内含表达方式的文件。
-i interface:指定抓取数据包的网卡设备
-l:使用标准输出列的缓冲区。
-n:不把主机的网络地址转换成名字。
-N:不列出域名。
-O:不将数据包编码最佳化
-q:快速输出模式,仅列出少数传输协议信息
-r数据包文件:从指定文件读取数据包数据。
-s 数据包大小:设置每个数据包的大小。
-S:用绝对而非相对数值列出TCP关联数。
-t:不显示时间戳
-tt:显示未经格式化的时间戳
-T 数据包类型:强制将表达方式所指定的数据包转译成设置的数据包类型。
-v:详细显示指令执行过程。
-vv:更详细显示指令执行过程。
-x:用十六进制字码列出数据包资料。
-w数据包文件: 把数据包数据写入指定的文件。

tcpdump  -enfN -r test.cap
tcpdump -r test.cap

3、tcpdump常用命令

tcpdump -i wlp3s0 tcp port 80
抓取wlp3s0网卡的TCP协议80端口的数据包
tcpdump -i wlp3s0 dst host 192.168.0.104
抓取wlp3s0网卡的目的主机为192.168.0.104的数据包。

猜你喜欢

转载自blog.51cto.com/9291927/2594136