列出接口在做什么
开始抓包前先看清本机有哪些可抓接口:物理网卡、回环、容器相关虚拟接口、各种伪接口都会出现在列表里,并带状态标记。列表里每一项都有编号,可以直接用编号代替接口名指定抓包位置。这一步能避免最常见的落空——命令跑得通、没有任何报错,却什么都没抓到,原因往往只是接口写错了或者选错了伪接口。
基本信息
| 命令 | tcpdump -D |
|---|---|
| 替代命令 | ip -br link show 查看接口名与状态 |
| 输出含义 | 每行一个接口,含编号与状态标记 |
| 指定方式 | 既可用接口名,也可用列表里的编号 |
| 权限要求 | 普通用户执行可能看不到完整列表 |
典型使用场景
- 抓包前先确认接口清单,避免接口名拼错
- 确认回环与虚拟接口是否存在,判断该抓哪一块
- 定位容器流量:找到对应的虚拟接口再抓取
- 核对接口状态:接口未启用时抓不到任何报文
- 脚本化抓包时先用列表判断接口是否可用
常用示例
常用示例
tcpdump -D # 列出接口与编号
tcpdump -i 2 -nn -c 5 # 按编号指定接口
tcpdump -i eth0 -nn -c 5 # 按名称指定接口
ip -br link show # 再对照一次名称与启用状态
ip -br addr show | head -10 # 确认各接口的地址,判断流量走哪块输出中的接口类型
| 出现的形式 | 含义 | 抓取价值 |
|---|---|---|
| 物理网卡名 | 实际收发业务流量的接口 | 排查链路与应用层问题的主力 |
| 回环接口 | 本机进程间通信 | 只有抓它才能看到本机之间的流量 |
| 全接口伪接口 | 同时抓所有接口的流量 | 快速摸底,但丢失链路层信息 |
| 网桥与虚拟接口 | 容器或虚拟化环境使用 | 按映射关系找到对应的那一块 |
| 状态标记 | 是否启用与是否点对点等 | 未启用的接口抓不到任何报文 |
| 过滤与队列类伪接口 | 内核投递的报文 | 与规则日志对照时使用 |
列表里同时给出编号与名称,用编号指定更短,但脚本里建议写名称,因为编号会随接口增减而变化,容易指错。
伪接口抓到的报文视角与真实网卡不同:伪接口看到的是内核投递的报文,可能缺少链路层信息,也可能看到重复报文,分析时要说明来源。
接口确认流程
接口确认流程
tcpdump -D | head -20 # 看清单
ip -br link show | grep -i up # 只看处于启用状态的接口
ip route get 10.0.0.9 # 确认访问某地址走哪块网卡
ethtool -S eth0 2>/dev/null | head -5 # 需要时看接口统计作为补充判读要点
- 列表为空通常意味着权限不足,用更高权限再执行一次
- 接口存在但抓不到包,先看它是否启用,再看流量是否真的经过它
- 容器环境里的虚拟接口数量多、名字带随机后缀,靠映射关系而不是记忆
- 虚拟接口与物理接口看到的报文可能重复,选一处抓取即可避免重复统计