按 MAC 过滤
ether 原语按以太网地址过滤:ether host 匹配源或目的,ether src 与 ether dst 限定方向,ether broadcast 与 ether multicast 分别匹配广播与组播帧。定位具体网卡与排查二层转发时很实用,但只对同一个二层网络内的帧有效,跨三层设备后帧头地址已被重写。
基本信息
| 适用平台 | Linux / macOS / BSD 上的 tcpdump |
|---|---|
| 语法 | ether host|src|dst <MAC>,或 ether broadcast / ether multicast |
| 常用搭配 | -e 打印帧头中的地址、-nn 不解析名字、-c 限量 |
| 生效范围 | 仅限同一二层网络 |
| 注意点 | 跨三层后地址被重写,过滤结果会与预期不符 |
典型使用场景
- 确认某台物理机的网卡是否真的在收发流量
- 排查广播风暴与组播泛洪的来源设备
- 虚拟化环境中核对虚拟网卡地址与预期是否一致
- 二层转发异常时确认帧是否被送到正确的下一跳
- 抓某个网卡的流量时排除其他设备的干扰
常用示例
常用示例
tcpdump -i eth0 -nn -e 'ether host 00:11:22:33:44:55' # 源或目的为该地址
tcpdump -i eth0 -nn 'ether broadcast' -c 20 # 抓广播帧
tcpdump -i eth0 -nn 'ether multicast and not ip6' # 抓非 IPv6 的组播
tcpdump -i eth0 -nn 'ether src 00:11:22:33:44:55' # 只看该地址发出的帧写法与用途
| 写法 | 匹配对象 | 典型用途 |
|---|---|---|
| ether host <MAC> | 源或目的为该地址的帧 | 定位某台物理机 |
| ether src <MAC> | 源地址为该地址 | 确认发包设备 |
| ether broadcast | 广播帧 | 排查广播风暴 |
| ether multicast | 组播帧 | 排查组播泛洪 |
虚拟化环境中看到的源地址可能是宿主或虚拟交换机改写的结果,需要结合拓扑解读。
交换网络下普通主机通常抓不到其他设备的单播流量,需要端口镜像才能看到旁路流量。
补充要点
- 抓包前先确认链路类型与拓扑,地址过滤只在同一二层网络内有效
- 把结果与交换机地址表对照,能快速判断转发是否异常
- 虚拟化环境中地址可能被改写,必要时在虚机与宿主机两侧分别取证
- 广播与组播识别不依赖帧头显示,关键是选对关键字
地址过滤与 IP 过滤同时使用时,VLAN 场景下两者的匹配结果可能并不一致。