netstat
netstat常用参数:
-n 不以主机名称或者服务名称显示,而是以IP和端口号的方式展示,如同route -n, tcpdump -n与网路介面有关的参数;
-t 仅显示tcp连接
-u 仅显示utp连接
-p 显示服务名字/PID的列
-l 仅显示LISTEN状态的服务连接
-s 显示网络统计数据
-r 显示route table
-a 显示所有的连接
查看系统监听的服务及端口
[root@c37 local]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1440/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 59054/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8052/sshd
tcp 0 0 0.0.0.0:38072 0.0.0.0:* LISTEN 1462/rpc.statd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 8219/sshd
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 59633/sshd
tcp 0 0 :::3306 :::* LISTEN 59566/mysqld
tcp 0 0 :::111 :::* LISTEN 1440/rpcbind
tcp 0 0 :::22 :::* LISTEN 8052/sshd
tcp 0 0 :::45145 :::* LISTEN 1462/rpc.statd
tcp 0 0 ::1:6010 :::* LISTEN 8219/sshd
tcp 0 0 ::1:6011 :::* LISTEN 59633/sshd
用netstat查看系统连接数
[root@web01 ~]# netstat -n |awk '/^tcp/ {++S[$NF]} END {for(i in S) print i,S[i]}'
TIME_WAIT 297
FIN_WAIT1 1
ESTABLISHED 164
查看路由
[root@c37 local]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.1.1.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default 10.1.1.2 0.0.0.0 UG 0 0 0 eth0
[root@c37 local]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 10.1.1.2 0.0.0.0 UG 0 0 0 eth0
tcpdump
tcpdump常用参数:
-i 指定监听网络的接口
-c 在接受指定包数目后,tcpdump就停止
-w 直接将接收数据接入文件,不分析,不打印输出
-n 不把网络地址转换成名字
-t 在输出的每一行不打印时间戳
-d 将匹配信息包的代码以人们能够理解的汇编格式给出
-dd 将匹配信息包的代码以 c语言程序段的格式给出
-ddd 将匹配信息包的代码以十进制的形式给出
-v 输出一个稍微详细的信息
-vv 输出详细的报文信息
-p 非混合模式
expression 由一个或多个[primitives]组成,而 [primitives]由一个或多个[qualitifer]加一个 id(name)或数字组成,它们的结构如用正则表达式则可表示为:
expression = ([qualitifer]+(id|number))+
依次看来,expression是一个复杂的条件表达式,其中[qualitifer]+(id|number)就是一个比较基本条件,qualitifer就表达一些的名称(项,变量),id或number则表示一个值(或常量)
qualitifer共有三种,分别是:
第一种是关于类型的关键字,主要包括host,net,port, 例如 host 192.168.1.2,指明 192.168.1.2是一台主机,net 202.5.0.0 指明 202.5.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 192.168.1.2 ,指明ip包中源地址是192.168.1.2 , dst net 202.5.0.0 指明目的网络地址是202.5.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
其他重要的关键字如下:gateway, broadcast,less,greater
三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'││'
tcpdump实例
截获主机为10.1.1.5的包
tcpdump -P host 10.1.1.5
截获主机10.1.1.5和主机10.1.1.2或者10.1.1.33的包
tcpdump host 10.1.1.5 and ( 10.1.1.2 or 10.1.1.33)
截获eth0网卡且目的主机为10.1.1.5,端口为80的包
tcpdump -i eth0 port 80 and dst host 10.1.5
截取主机10.1.1.5除了和主机10.1.1.2以外的所有ip包
tcpdump ip host 10.1.1.5 and ! host 10.1.1.2