哲思官方群认证群组  - 讨论区

标题:[zeuux-www] 学习tcpdump

2008年05月08日 星期四 14:29

Jianjun Kong kongjianjun at gmail.com
Thu May 8 14:29:51 CST 2008

更新了一下。

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.w3.org/1999/xhtml">



学习tcpdump-文档-哲思自由软件社区


  

学习tcpdump

作者:kongjianjun at gmail.com">孔建军

1. tcpdump介绍

tcpdump 是一款开源的网络数据截取分析工具,具有强大的功能和灵活的截取策略,用在网络维护、入侵检测等方面。它支持针对网络层、协议、主机、网络或端口的过滤,正则表达式的灵活应用能帮你准确获取有用信息。tcpdump 具备开源软件的优势,接口公开,具有较强的可扩展性。运行此命令必须有root权限,它通过将网络接口设置为混杂模式,绕过标准TCP/IP堆栈,进行工作。出于安全等问题考虑,FreeBSD里通过内核取消对伪设备bpfilter的支持,来屏蔽tcpdump之类的网络分析工具。在linux下可采用软件包或编译源代码的方式安装。

tcpdump官方网站:http://www.tcpdump.org/">http://www.tcpdump.org/>

2. 运行效果:

kongove at ubuntu:~/Desktop$ sudo tcpdump -i eth0
07:27:47.755975 arp who-has 172.17.35.153 tell 172.17.35.153

3. 基本使用:

tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ]
[ -T type ] [ -w file ] [ -W filecount ][ -E spi at ipaddr algo:secret,... ]
[ -y datalinktype ] [ -Z user ] [ expression ]

通过对 tcpdump 选项、参数、表达式的组合应用,从大流量的网络数据当中,过滤出真正有用的信息,从而缩小分析范围。

3.1 tcpdump 选项:

选项 含义
-A 以ASCII格式打印出所有分组,并将链路层的头最小化。
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-D 打印出系统中所有可以用tcpdump截包的网络接口;
-ddd 将匹配信息包的代码以十进制的形式输出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-L 列出网络接口的已知数据链路;
-n 不把网络地址转换成名字;
-N 不输出主机名中的域名部分,如“kongove.ubuntu.cn”只输出“kongove”;
-O 不运行分组分组匹配(packet-matching)代码优化程序;
-p 不将网络接口设置成混杂模式;
-q 快速输出,只输出较少的协议信息;
-S 将tcp的序列号以绝对值形式输出,而不是相对值;
-t 在输出的每一行不打印时间戳;
-u 输出未解码的NFS句柄;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c count 指定监听数据包数量,当收到指定的包的数目后,tcpdump就会停止;
-C file_size 限定数据包写入文件大小;
-F file 从指定的文件中读取表达式,忽略其它的表达式;
-i interface 指定监听网络接口;
-m module 打开指定的SMI MIB组件;
-M secret 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详见RFC 2385);
-r file 从指定的文件中读取包(这些包一般通过-w选项产生);
-s snaplen 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节;
-T type 将截取的数据包直接解释为指定类型的报文,常见类型有rpc(远程过程调用)和snmp(简单网络管理协议),还包括aodv、cnfp、rpc、rtp、rtcp、snmp、tftp、vat、wb等;
-w file 指定将监听到的数据包写入文件,直接将包写入文件中,并不分析和打印出来;
-W filecount 限定数据包写入文件数量;
-E spi at ipaddr algo:secret,... spi at ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组;
expression 综合参数表达式。

3.2 tcpdump的表达式介绍

tcpdump利用正则表达式作为过滤报文的条件,如果数据包满足表达式的条件,则会被捕获。如果没有给出任何条件,则网络上所有的数据包将会被截获。表达式中常用关键字如下:
第一种是指定参数类型的关键字,主要包括host,net,port等,如果没有指定类型,缺省的类型是host;
如:tcpdump host 222.24.20.86 截获ip为222.24.20.86的主机收发的所有的数据包
第二种是指定数据报文传输方向的关键字,主要包括src , dst ,dst or src, dst and src,缺省为src or dst。
如:tcpdump src net 222.24.20.1 截取源网络地址为 222.24.20.1 的数据包
第三种是指定协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型,默认监听所有协议的数据包;
如:tucpdump arp 截获arp协议的数据包
其他重要的关键字还有,gateway,broadcast,less,greater,三种逻辑运算(取非运算是 'not ','! '; 与运算是 'and ','&& ';或运算 是'or ','|| ')等。这些关键字的巧妙组合,能灵活构造过滤条件,从而满足用户需要。

3.3 tcpdump的输出信息

tcpdump命令四种典型的输出信息:

  • 1) 数据链路层头信息
  • 使用命令:tcpdump -e host host1
    输出结果:11:15:12.247009 eth0 < 88:0:0:7:2b:26 0:90:27:58:af:1a ip 60: host2.25258 > host1.telnet 0:0(0) ack 22552 win 7890 (DF)
    分析:“11:15:12”是显示的时间,“247009”是ID号,“eth0 <”表示从网络接口eth0接受该数据包,“88:0:0:7:2b:26”为发送数据主机的MAC地址,“ ip”是表明该数据包是IP类型数据包,“60”是数据包的长度,“ host2.25258 > host1.telnet”表明该数据包是从主机host2的25258端口发往主机host1的TELNET(23)端口。“ack 22552”表明对序列号是22552的包进行响应。“ win 7890”表明发送窗口的大小是7890。

  • 2) ARP包的TCPDUMP输出信息
  • 使用命令:tcpdump arp
    输出结果:22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
    分析:“eth0 >”表示从网络接口eth0发送数据包。

  • 3) TCP包的输出信息
  • 输出信息:
    src > dst: flags data-seqno ack window urgent options
    分析:“src > dst:”表明从源地址到目的地址, flags是TCP包中的标志信息(S是SYN标志,F(FIN),P(PUSH),R(RST),"."(没有标记));data-seqno是数据包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大小,urgent表明数据包中是否有紧急指针,Options是选项。

  • 4) UDP包的输出信息
  • 输出信息:
    host.p1 > linux.p2: udp lenth
    分析:从主机host的p1端口发出的一个udp类型数据包到主机linux的p2端口,包的长度是lenth。

4. 功能扩展

tcpdump还可以结合tcpshow、管道、重定向使用,从而扩展其功能。

5. 总结

6. 参考资料

man手册
http://www.tcpdump.org/">tcpdump官方网站帮助文档


-------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.zeuux.org/pipermail/zeuux-www/attachments/20080508/9ef84b1b/attachment-0001.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-www]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号