tcpdump —linux
tcpdump ip -i etc0 -c 100 -C 30 -W 5 -w tt.cap
解释:
-i 指定抓包网卡
-c 捕获数据包数量
-C 单个捕获文件大小。单位M
-W 捕获文件数量
-w 捕获文件路径命名
tcpdump tcp -i eth0 -t -s 0 and dst port 22 and src net ip地址 -C 20 -W 40 -w ./rrr.pcp
-i 只抓经过eth0的数据包
-t 不显示时间戳
-s 0 抓取数据包默认长度为68字节,如果是-S 0可以抓取完整的数据包
-c 捕获的数据包数量
dst port 22 抓取目标端口是22的数据包
src net ip 数据包的源网络地址ip
tcpdump -i any 监听所有网卡上的请求
tcpdump -i any host 192.168.22.56 -w ttt.cap
捕获所有经过网卡,目的ip为192.168.22.56的网络数据包
tcpdump -I 网卡 host 192.168.1.11
#抓包捕获192.168.1.11经过网卡的数据包
tcpdump -i eth0 host 192.168.1.11 and port 80 -w /eee.cap
抓取经过网卡eth0,目标主机为192.168.1.11的端口80的网络数据包
容器抓包方法
1 可以先执行kubectl get pods $PodName -n $NameSpace -o wide看看pod运行的节点
2 登录到对应的node上,
如果是docker运行时,执行 docker ps| grep $pod名称找到容器ID,然后在执行 docker inspect -f {{.State.Pid}} 容器id 找到容器的进程pid
如果是containerd, 使用命令:
yum -y install jq; crictl inspect $(crictl ps | grep crictl pods | grep $POD_NAME名称 | awk '{print$1}'
| awk ‘{print$1}’) | jq .info.pid
找到容器的进程pid
3 执行yum -y install util-linux.x86_64 安装下 nsenter工具,然后执行 nsenter --target 容器pid -n 进入到容器的网络名称空间
使用命令抓包:tcpdump -i eth0 host ip地址 and port 端口 -s 0 -C 40 -W 50 -w /tmp/Pod.pcap
客户端到目标端抓包
sudo tcpdump -i eth0 tcp and port 3306 -n -nn -C 20 -W 50 -s 0 -w /tmp/mysql.pcap