网络包拦截分析工具介绍。支持过滤网络层、协议、主机、网络或端口。并提供and、or、not等逻辑语句,帮助去除无用信息。tcpdump-dumptrafficonanetwork示例不指定任何参数并侦听通过第一个网卡的数据包。主机上可能有多块网卡,所以往往需要指定网卡。tcpdump监控特定网卡tcpdump-ien0监控特定主机示例:监控本机与主机182.254.38.55之间的通信数据包。备注:传出和传入的数据包都将被监控。tcpdumphost182.254.38.55与特定源和目标地址通信具体源tcpdumpsrchosthostname具体目标地址tcpdumpdsthosthostname如果不指定src和dst,则将监视与源或目标为hostname的通信tcpdumphosthostnamespecificporttcpdumpport3000监听分别使用TCP和UDP作为传输层的TCP/UDP服务器上的不同服务。如果只想监听TCP数据包tcpdumptcpsourcehost+port+TCP监听来自host123.207.116.169的TCP数据包在22端口tcpdumptcpport22andsrchost123.207.116.169监听特定主机之间的通信tcpdumpiphost210.27.48.1和210.27.48.2210.27.48.1与210.27.48.2以外的主机通信tcpdumpiphost210.27.48.1and!210.27.48.2一个更详细的示例tcpdumptcp-ieth1-t-s0-c100和dst端口!22andsrcnet192.168.1.0/24-w./target.cap(1)tcp:ipicmparprarp、tcp、udp、icmp等选项必须放在第一个参数中,用来过滤数据报的类型(2)-ieth1:只抓取通过接口eth1的包(3)-t:不显示Timestamp(4)-s0:抓包时默认抓包长度为68字节。添加-S0后可以抓取完整的数据包(5)-c100:只抓取100个数据包(6)dst端口!22:不抓取目的端口为22的数据包(7)srcnet192.168.1.0/24:数据包的源网络地址为192.168.1.0/24(8)-w./target.cap:保存把它作为一个cap文件,方便使用ethereal(即wireshark)分析抓包http包TODO来限制抓包数量如下。抓到1000个包后会自动退出tcpdump-c1000保存到本地到本地磁盘tcpdump-n-vvv-c1000-w/tmp/tcpdump_save.cap也可以加-U强制写入立即本地盘(一般不推荐,性能比较差)。实际例子,我们看下面常见的一种部署方式,nodejs服务器部署在服务器上,监听3000端口,nginx反向代理监听80端口,将请求转发给nodejs服务器(127.0.0.1:3000).浏览器->nginx反向代理->nodejs服务器问题:假设用户(183.14.132.117)访问浏览器,发现请求没有返回,如何排查?第一步:查看请求是否到达nodejs服务器->可以通过日志查看。第二步:检查nginx是否将请求转发给了nodejs服务器。tcpdumpport8383此时你会发现没有任何输出,即使nodejs服务器已经收到了请求。因为nginx转发到的地址是127.0.0.1,没有使用默认接口,所以此时需要显示指定接口tcpdumpport8383-ilo,也就是说下面的监听是无效的,因为此时对于nodejs服务器来说,src主机是127.0.0.1tcpdump端口8383-ilo和src主机183.14.132.117第三步:检查请求是否到达服务器tcpdump-ntcpport8383-iloandsrchost183.14.132.117相关链接tcpdump很详细http://blog.chinaunix.net/uid...http://www.cnblogs.com/ggjuch...Linuxtcpdump命令详解Tcpdump使用示例(推荐)http://www.rationallyparanoid...使用TCPDUMP抓取HTTP状态头信息http://blog.sina.com.cn/s/blo...
