tcpdump
使用tcpdump分析网络数据包
什么是tcpdump?
tcpdump是命令行驱动的数据包嗅探工具。tcpdump用于捕获计算机发送和接收的数据包。tcpdump通常用作网络管理工具,以帮助调试网络问题。tcpdump基于传递的表达式显示捕获的网络数据包内容的描述。tcpdump必须以root运行。
tcpdump基本捕获命令
tcpdump的最简单形式:tcpdump
tcpdump
tcpdump将持续向stdout显示捕获的信息,直到遇到SIGINT信号为止。通常是按下 Crtl + C。
10:57:44.025286 IP server1.ubuntu > server1.centos.2986: P 462764:462912(148) ack 79613 win 16616 10:57:44.025427 IP server1.ubuntu > server1.centos.2986: P 462912:463060(148) ack 79613 win 16616 10:57:44.025538 IP server1.ubuntu > server1.centos.2986: P 463060:463208(148) ack 79613 win 16616
tcpdump -A
在Ascii中显示数据包
tcpdump -c 20
通过指定-c
标志,我们指示tcpdump仅捕获20个数据包。一旦捕获的数据包数量与该值匹配,tcpdump将停止其捕获过程。
tcpdump -D
显示系统上可用的网络接口列表,tcpdump可以将其捕获数据包。对于找到的每个接口,都会显示一个以数字为前缀的列表。然后,该信息可以与-i
接口选项一起使用。
# tcpdump -D 1.eth0 2.any (Pseudo-device that captures on all interfaces) 3.lo
tcpdump host centos01
仅显示包含主机名centos01的数据
tcpdump -e
在每个转储行上显示链接级别标题。
tcpdump -F filter_file_name
使用过滤器文件捕获流量。在下面的示例中,我们创建了一个非常简单的过滤器文件:创建一个配置过滤器的文件(此处为TCP 80端口)
# vi Filter_File_Name port 80
tcpdump -i 接口
在特定接口上捕获。如果没有接口传递给tcpdump命令,则tcpdump将在接口列表中搜索编号最少的已配置up
接口。
tcpdump -L
列出到标准输出的已知数据链接类型:
# tcpdump -L Data link types (use option -y to set): DOCSIS (DOCSIS) (not supported) EN10MB (Ethernet
tcpdump -n
-n
选项强制显示数字地址而不是进行DNS解析:
tcpdump port http
仅捕获端口80。
tcpdump -q
显示较少的协议信息,从而缩短输出行。
tcpdump -r capture_file_name
从使用-w
选项创建的文件或通过wireshark
创建的文件中读取数据包信息
tcpdump src 192.168.0.11 and dst 192.168.0.18 and port ftp
显示从192.168.0.11到目标地址192.168.0.18的使用ftp端口的数据包
tcpdump -t
不要在每行都打印时间戳。
tcpdump -tt
在每行上打印未格式化的时间戳。
tcpdump -ttt
在每行的当前行和上一行之间打印增量(以微秒为单位)。
tcpdump -tttt
以缺省格式在每个行上按日期打印时间戳。
tcpdump -u
仅捕获UDP信息。
tcpdump -v
详细输出:打印IP数据包中的生存时间,标识,总长度和选项。
tcpdump -vv
非常详细
选项。
tcpdump -vvv
非常详细
选项。
tcpdump -vv
-vv是非常详细的选项
tcpdump -w capture_file_name
将原始数据包写入文件。以后可以使用-r
选项读取它们。
tcpdump -w capture_file_name -i 接口
将原始数据包从指定接口写入指定文件。以后可以使用-r
选项回读这些数据包。