TCP dump抓包全流程

# CentOS/RHEL系统

yum install -y tcpdump

# Ubuntu/Debian系统

apt-get update && apt-get install -y tcpdump

抓包:
tcpdump -i 网卡 -o 文件名

抓包内网:
tcpdump -i eth0 host 10.9.76.222

抓包外网
tcpdump -i eth0 -nn icmp

注意:另外需要有一台本地主机持续ping测试主机外网IP

抓包外网
tcpdump -i eth0 -nn icmp
这个是未达到外网网卡

客户实例:

sudo tcpdump -i eno8303 -nn -s 0 host docs.ucloud.cn -w ucloud.pcap

sudo tcpdump -i eno8303 -nn -s 0 host code.visualstudio.com -w vscode.pcap

 # 引导客户侧抓包
  # 1. 新建目录并抓包
  mkdir -p /data/pcap/
 
  nohup tcpdump -i 网卡名称 -enn -tttt 'host 113.31.111.184 and port 6379' -G 60 -C 150M -w /data/pcap/ 113.31.111.184_client_%Y%m%d%H%M.pcap &
 
  # 2. 告警复现后,查看抓包命令的 pid后,kill 
  ps -ef|grep '/data/pcap/113.31.111.184_client'|grep -v grep

  # 3. 需要注意的是,磁盘不要被抓包文件写满,默认是每分钟生成一个抓包文件

参数记得改下,然后可以抓端口也可以只抓icmp

eg:

U1 10.7.177.0
U2 10.7.100.176

U1去pingU2

U2上抓包U1数据

左边U1,右边U2

操作步骤:

(1)先在U2上创建目录

mkdir -p /data/pcap/

(2)U2上抓包命令:

nohup tcpdump -i eth0 -enn -tttt 'host 10.7.177.0' -s 0 -G 60 -C 150M -w /data/pcap/10.7.177.0_to_10.7.100.176_%Y%m%d%H%M.pcap &

命令详解:

  • nohup: 让命令在您退出终端后也能继续在后台运行。
  • tcpdump: 抓包工具。
  • -i eth0: 指定抓取网卡 eth0 的流量(根据您的ip a结果,这是正确的网卡)。
  • -enn -tttt: 设置输出格式,包含完整的时间戳和链路层信息。
  • 'host 10.7.177.0': ​关键过滤条件,只捕获与源服务器 10.7.177.0 之间的流量。
    • 如果您想抓取特定端口的流量(例如MySQL的3306端口),可以修改为 'host 10.7.177.0 and port 3306'
  • -s 0: 抓取完整的数据包(而不是默认的只抓前96字节),建议加上。
  • -G 60: 每60秒自动轮转一个新的抓包文件。
  • -C 150M: 每个抓包文件最大150MB。
  • -w /data/pcap/...pcap: 指定抓包文件的保存路径和命名规则(图片显示您已创建此目录)。
  • &: 让命令在后台运行。

(3)U2验证后台是否挂上tcpdump

 ls -lh /data/pcap/ | grep .pcap

(4)停止抓包:

ps aux | grep tcpdump
kill 12345

12345是pid

(5)分析数据包:您可以将 /data/pcap/ 目录下的 .pcap 文件下载到您的本地电脑,使用图形化工具 ​Wireshark​ 打开进行详细分析。

另外的抓包命令

# 客户端抓包
tcpdump -i eth0 -enn -tttt 'host 源PodIP and host 目PodIP' -G 600 -C 200M -w /tmp/client_源PodIP.pcap

# 服务端抓包
tcpdump -i eth0 -enn -tttt 'host 源PodIP and host 目PodIP' -G 600 -C 200M -w /tmp/server_目PodIP.pcap

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐