主机级过滤是什么
把抓包范围限定到一台主机或一个网段,是抓包时要做的第一个动作:主机、源或目的主机、网段、MAC 地址这几类限定词,通常能一口气砍掉九成以上的噪声。过滤表达式在抓包开始前就交给内核执行,写法越精确,丢掉的无用报文越多,抓包本身对系统的开销也越小——在流量大的业务口上,这往往决定你能不能抓到有用的样本。表达式写错会被直接拒绝并提示语法错误,不会静默地少抓,所以可以放心先跑一遍验证。
基本信息
| 适用平台 | Linux、macOS 与 BSD;Windows 侧用图形化抓包工具或等效命令行实现 |
|---|---|
| 权限 | 需要 root 或具备原始套接字能力 |
| 常用开关 | 选网卡、关闭名称解析、限制条数、落盘、显示二层信息 |
| 过滤时机 | 表达式在抓包前生效,由内核执行,条件越精确开销越小 |
| 语法提示 | 含逻辑或与逻辑非的表达式在 shell 中要整体加引号,否则会被当成命令分隔符 |
| 落盘建议 | 把过滤条件一并记录在文件名或备注里,事后才不会拿错样本 |
典型使用场景
- 只关心与某台服务器有关的流量,用它把无关会话全部过滤掉
- 按方向排查:只抓某台主机发出的包,判断它的请求是否真的发出去
- 排查网段级问题:按网段抓取,观察广播、ARP 与异常扫描流量
- 排除干扰源:用否定条件把监控、备份等已知噪声源排除在外
- 二层问题定位:按 MAC 过滤,确认报文是否真的到达本机网卡
- 交接留证:把过滤条件与结果文件一起归档,便于他人复核
主机与网段过滤
主机与网段过滤
tcpdump -nn -i eth0 host 10.0.0.5 # 源或目的为该地址
tcpdump -nn -i eth0 src host 10.0.0.5 # 只看它发出
tcpdump -nn -i eth0 dst host 10.0.0.5 # 只看发往它
tcpdump -nn -i eth0 net 10.0.0.0/24 # 整个网段
tcpdump -nn -i eth0 'not host 10.0.0.5' # 排除某台主机
tcpdump -nn -e -i eth0 'ether host 00:16:3e:aa:bb:cc' # 按 MAC,需显示二层才看得到
tcpdump -nn -i eth0 ip host 10.0.0.5 # 显式限定 IPv4
tcpdump -nn -i eth0 -c 50 'host 10.0.0.5 and tcp' # 限条数,避免刷屏限定词读法
| 表达式 | 含义 | 使用注意 |
|---|---|---|
| host X | 源或目的为 X | 现代版本中同时匹配 IPv4 与 IPv6 |
| src host / dst host | 仅源地址 / 仅目的地址 | 排查方向时优先用它缩短结论路径 |
| net 10.0.0.0/24 | 整个网段 | 网段写法要带掩码位数,避免误判范围 |
| ether host MAC | 按二层 MAC 地址过滤 | 必须显示二层信息才能看到对应字段 |
| ip host / ip6 host | 显式限定协议族 | 双栈环境用它避免歧义 |
双栈环境下单写主机名或地址可能同时命中 IPv4 与 IPv6 的结果;要精确控制就显式限定协议族。落盘分析时把过滤条件一并记录,事后才不会拿错样本。
在生产业务口上不加任何过滤直接抓包,会同时带来磁盘写入与解析开销;流量大的接口应先用主机或端口条件收窄,并配合条数与文件大小上限使用。
过滤思路
- 先宽后窄:先按主机或网段抓,再看结果决定是否加端口与协议条件
- 方向优先:排查「请求到底有没有发出去」时先限定源地址
- 排除法:把监控、备份等已知噪声源用否定条件屏蔽
- 抓不到包时逐条去掉条件,确认是哪一条写得太窄
- 留证归档:落盘文件名带上过滤条件与时间,便于他人复核