介绍
tcpdump是一个网络抓包工具,可以截获并分析网络传输的数据包。它可以监听特定的网络接口,过滤和捕获网络数据包,并将捕获的数据包以可读格式输出到控制台或文件中。tcpdump可以在多种操作系统上使用,包括Linux、Unix和Windows等。
使用tcpdump可以帮助网络管理员和安全专业人员分析网络问题和攻击,例如识别网络流量威胁、检测网络配置问题、调查网络故障等。它可以捕获和分析各种协议的数据包,例如TCP、UDP、ICMP、HTTP、FTP等。由于tcpdump是命令行工具,因此需要一定的技能和经验才能使用它进行高效的网络分析。
使用
-c
count 抓取数据包的数量达到count后结束命令,如果不使用-c 参数,会不停的抓取数据包,直到手动停止
-C
file_size 抓取数据包保存到文件时,通过该命令指定文件的大小。文件达到指定大小后,会创建一个在原文件名称后面加上序号的新文件,如:dump.txt,dump.txt1。file_size的单位是b
-D
列出服务器所有网卡。tcpdump默认监听的是编号最小的那个网卡,一般是eth0。在进行抓包时可以通过 -i 参数指定监听的网卡,any表示监听所有网卡
-i
interfaces指定监听的网卡名称,any表示监听所有的网卡
-n
输出结果中,不把ip转换成主机名(默认显示的是主机名)
-q
快速输出,只输出简要的数据包信息
-r
file从文件中获取数据包,不再从网络获取数据包
-t
不输出时间戳
-w
file将抓取的数据包保存到文件,-r 参数可以从文件中读取数据包
-W
filecount指定文件的数量,当文件滚动到指定数量后会从第一个文件开始覆盖
-host
过滤主机,如 tcpdump host 1.1.1.1 只抓取经过这个ip的数据包
-src
用来过滤请求来源方的参数,如:tcpdump src host 1.1.1.1 只抓取从这个ip过来的数据包
-dst
用来过滤请求接收方的参数,如:tcpdump dst host 1.1.1.1 只抓取发送到这个ip的数据包
-port
过滤端口,如:tcpdump port 8080 只抓取经过8080端口的数据包
-net
过滤网络,如:tcpdump net 1.1 只抓取经过这个网段的数据包
-and、not、or
条件过滤,和字面意思一样。如:tcpdump net 1.1 and port 8080 抓取经过1.1网段并经过8080端口的数据包
示例
抓取8080端口的数据包
tcpdump -i any port 8080
抓取从1.1.1.1发送到1.1.1.2的数据包
tcpdump -i any src host 1.1.1.1 and dst host 1.1.1.2
抓取1.1网段除了1.1.1.1的请求的数据包
tcpdump -i any src net 1.1 and 'src host not 1.1.1.1'
抓取8080端口的数据包并写入dump.log文件中
tcpdump -i any port 8080 -w dump.log
k8s中容器内复制到容器外
kubectl -n ns1 cp -c istio-proxy podname:dump.cap /root/dump.cap
报文分析
这些术语是TCP/IP协议中的标志位(flag),用于在网络通信中标识通信的不同阶段或类型:
PSH:推送标志,表示数据包应该立即发送而不是等待缓冲区填满。
SYN:同步标志,表示发起一个连接请求。
ACK:确认标志,表示确认收到了数据包。
SYN,ACK:表示确认连接请求,并发起连接。
FIN,ACK:表示结束一个连接。