一 tcpdump概述:
(1)tcpdump是一种包探测器,tcpdump指令用来监听所有经过本地网络接口的数据包,并记录下或者打印出符合用户指定的某些标准的包。
*例如:可以检查某台特定主机发送或接收的所有包;也可以检查与一条特定网络连接相关的TCP包。
*执行tcpdump需要root权限。
(2)命名格式:
tcpdump [...]...[...] [expression]
二 使用细则:
(1)-i选项和-n选项:
默认情况下,tcpdump监听它遇到的第一个网络接口,可以用-i选项指定网络接口。
如果DNS不能使用,或者不希望tcpdump进行名字查找,请使用-n选项(不把主机的网络地址转换为名字,可以加快tcpdump的速度)。这个选项很重要,因为较慢的DNS服务器会导致过滤器在tcpdump仍可以处理包之前就开始丢包。
(2)-v选项和-vv选项:
-v标志增加可以看到的关于包的信息,-vv标志提供更详细的数据。
(3)-w选项和-r选项:
-w选项使tcpdump可以把包存放在一个文件中。-w默认只保存包头,这种默认做法虽然转存文件变小,但是最有用和最有意义的信息可能就丢了。所以除非只需要包头,否则就要用-s选项加上大约在1560量级的一个值(实际上取决于MTU),捕获整个包供日后分析。
例如:sudo tcpdump -i eth0 -w log -s 1560.
-r选项可以再把转存文件读回来。
例如:sudo tcpdump -r log.
(4)-s选项:Snarf snaplen bytes of data from each packet rather than the default of 65535 bytes.
例如:tcpdum -i lo -s 100//capture size 100 bytes.
*其它选项参见tcpdump手册
三 expression(扮演过滤器的作用):
*tcpdump prints out a description of the contents of packets on a network interface that match the boolean expression。For the expression syntax, see pcap-filter(7).
*例如:sudo tcpdump host james
过滤器限制只显示与机器bull直接相关的包,james不是作为源地址就是作为目的地。
*例如:sudo tcpdump -i eth0 icmp。只显示eth0上的icmp包。