首页/网络/抓包与流量分析速查/tcpdump ether 按 MAC 过滤

tcpdump ether 按 MAC 过滤

按以太网地址过滤:ether host / ether src / ether dst / ether broadcast / ether multicast;定位具体网卡与二层转发问题时使用。

按 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 场景下两者的匹配结果可能并不一致。

易错点

  • 跨三层后用地址过滤期待命中:帧头地址已被重写,过滤结果与预期完全不同
  • 只写 ether host 却不加 -e,输出里看不到地址,无法验证过滤是否生效
  • 把广播帧数偏高直接判定为风暴:需要结合单位时间内的量与交换机侧计数一起判断

数据来源与参考

  • man 8 pcap-filter(ether 原语)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌