tcpdump命令是Linux提供的一个非常强大的抓包工具,熟练使用它,对我们排查网络问题非常有用。如果在机器上还没有安装该工具,则可以使用如下命令安装:
yum install tcpdump sudo apt install tcpdump #装不了请bing或google搜索一下
tcpdump运行时得有sudo权限
tcpdump的常用选项如下
- -i 指定要捕获的目标网卡名,网卡名可以使用ifconfig命令获得 如果要抓取所有网卡上的包,则可以使用any关键字
tcpdump -i ens33 tcpdump -i any
- -X 以ASCII和十六进制形式输出捕获的数据包内容,减去链路层的包头信息;-XX以ASCII和十六进制形式输出捕获的数据包内容,包括链路层的包头信息。
- -n 不要将IP地址显示成别名 ;-nn指不要将ip地址和端口显示成别名
- -S 以绝对值显示包的SN号 默认以上一包的偏移量显示
- -vv显示详细的捕获的数据包 -vvv更详细的显示数据包内容
- -w将抓包的原始信息写入到文件中,后跟文件名
tcpdump -i any -w filename.cap
- -r 从使用-w选项保存的文件中读取包信息
除了使用可选参数 另外可以使用包过滤的表达式
##仅仅显示tcp/udp端口8888 的数据包 tcpdump -i any 'port 8888' ## 仅显示经过tcp:8888端口的数据包 tcpdump -i any 'tcp port 8888' ##仅显示源端口是tcp:8888的数据包 tcpdump -i any 'tcp src port 8888' ##仅显示源端口是tcp:8888或目标端口是udp9999的包 tcpdump -i any 'tcp src port 8888 or udp dst port 9999' ##仅显示原地址为127.0.0.1 且源端口是tcp 9999的包 以ASCII和十六进制显示详细的输出 不显示ip地址和端口号的别名 tcpdump -i any 'src host 127.0.0.1 and tcp src port 9999' -XX -nn -vv