网络流量分析工具TCPDUMP

Tcpdump它依赖的是libpcap库,libpcap使用的是一种称为设备层的包接口技术。使用这种技术,应用程序可以直接读写内核驱动层面的数据,而不经过完整的Linux网络协议栈.

 

tcpdump和iptables的关系

如果一种输入的网络通信被iptables给禁止了,那么tcpdump开可以抓取到吗?

答案是肯定的,tcpdump直接从网络驱动层面抓取输入的数据,不经过任何linux网络协议栈。iptables依赖的模块工作在linux网络协议栈中,因此,iptables的入栈策略不会影响tcpdump抓取。但iptables的出栈策略会影响数据包发送到网络层面,因此,它的出栈策略会影响tcpdump的抓取。

总结关系如下:

tcpdump可以抓取到被iptables在INPUT链上DROP掉的数据包

tcpdump不能抓取到被iptables在OUTPUT链上DROP掉的数据包

 

tcpdump常用的5个参数

-i 指定需要抓包的网卡 如果未指定的话,tcpdump会根据搜索到的系统中状态为UP的最小数字的网卡确定,一般情况下为eth0,使用-i参数通过指定需要抓包的网卡,可以有效的减少抓取到的数据包的数量,增加抓包的针对性,便于后续分分析工作。

-nnn 禁用tcpdump展示时把IP,端口等转换为域名,端口对应的知名服务名称,这样看起来更加清晰

-s 指定抓包的包大小 使用-s 0 指定数据包大小为262 144字节,可以使得抓到的数据包不被截断,完整反映数据包的内容

-c 指定抓包的数量

-w 指定抓包文件保存到文件,以便后续使用工具分析

 

常用的4个过滤规则  

host a.b.c.d : 指定仅抓取本机和a.b.c.d的数据通信

tcp port x : 指定仅抓取tcp协议目的端口或者源端口位x的数据通信

icmp : 指定仅抓取ICMP协议的数据通信

! : 反向匹配 例如 port ! 22 抓取非22端口的数据通信

以上规律规则可以使用and(&&)和or(||)进行组合

例:

tcpdump host 10.125.192.10 and tcp port 23

只抓取本机和10.125.192.10之间基于TCP的23端口通信

 

 

 

 

你可能感兴趣的:(网络)