tcpdump
是服务器上常用的网络抓包工具。通过抓包可以帮助我们快速分析网络中的错误。默认显示出所有连接上的分组信息。
直接在终端中输入tcpdump即可抓取网络报文,默认输出到屏幕。
命令的常用选项
-e 打印出数据链路层的头部信息(包括源、目的MAC)以及网络层协议
-n 不解析域名
-nn 不解析域名和端口
-v 输出详细信息
-vv 输出更详细的信息
-vvv 输出更更详细信息
-c 设置抓取的报文数
-w 保存报文到指定的文件中
-i 指定网络接口
-r 读取保存的报文
-T 将监听到的包直接解析为指定类型的报文
-S 打印每个坚挺到的数据包的TCP绝对序号,而非相对序号
-s 从每个报文中截取指定字节长度的数据,而非默认的68,68直接适用于IP、ICMP、TCP和UDP,可能会截掉DNS服务器和NFS的报文信息。
常用判断条件
and 逻辑与 &&
or 逻辑或 ||
not 逻辑非 !
tcpdump port 80 and (host 172.20.1.11 or host 172.20.1.21)
类型关键字
host # 指定主机
tcpdump host 172.20.1.11 # 获取172.20.1.11 主机的所有数据包
port # 指定端口
tcpdump host 172.20.1.11 port 80 # 获取172.20.1.11 80端口的数据包
net # 指定网络
tcpdump net 172.17.32.0/20
传输方向关键字
src # 源
dst # 目的
tcpdump src 172.23.191.180 and dst 172.20.1.11 and port 22
协议关键字
ip、arp、tcp、udp、icmp、vrrp
tcpdump -i eth0 -s 1500 -nn host 172.20.1.11 or 172.20.1.21 and icmp -e