1486 字
7 分钟
网卡的混杂模式
我们来详细解释一下 Linux 网卡的混杂模式。
1. 什么是网卡的混杂模式?
简单来说, 混杂模式是一种网卡的工作模式 。
- 正常模式 :在普通模式下,网卡有一个唯一的 MAC(物理)地址。它只会接收 目的地 MAC 地址是自己 的数据帧,以及 广播地址 (ff:ff:ff:ff:ff
)和 组播地址 (如果已订阅)的数据帧。所有其他目的地 MAC 地址的数据帧都会被网卡硬件直接丢弃,根本不会上传给操作系统内核处理。这大大节省了 CPU 资源。 - 混杂模式 :当网卡被设置为混杂模式时,它会 捕获所有流经其所在网络端口的数据帧 ,而不管这些帧的目的地 MAC 地址是什么。它会将所有数据包都上传给操作系统,以供进一步处理。
可以把它想象成一个邮差:
- 正常模式 :邮差只把写着你名字和地址(你的 MAC 地址)的信件,或者写着“全体居民收”(广播地址)的信件投递给你。其他人的信件他看都不看就直接扔掉了。
- 混杂模式 :这个邮差变得“八卦”了,他把所有经过他手的信件,无论收件人是谁,都复制一份给你。
2. 混杂模式的作用
混杂模式的主要作用是 网络流量分析和监控 。
- 网络抓包与故障排查 :这是最核心和正当的用途。像
tcpdump、Wireshark这样的网络抓包工具,要想捕获不是发往本机的数据包(例如同一个局域网内其他设备之间的通信),就必须将网卡置于混杂模式。这是网络管理员诊断网络问题、分析协议交互的必备手段。 - 入侵检测系统 :IDS(如 Suricata, Snort)需要监控整个网段的流量来检测潜在的攻击和异常行为,因此它们必须在混杂模式下运行。
- 网络桥接或透明代理 :某些网络设备(如软件桥接、防火墙或透明代理服务器)需要看到所有经过它们的流量才能做出转发或过滤决策,这也需要混杂模式。
- 恶意用途 :当然,这个特性也可能被恶意软件利用,例如 网络嗅探 ,用于窃听局域网内的明文传输密码、聊天记录等敏感信息。这就是为什么交换机的普及大大增加了网络窃听的难度,因为交换机不像集线器那样广播所有流量。
重要提示 :在现代化的交换网络环境中,即使开启了混杂模式,一台主机通常也只能看到发往自己的流量、广播流量和组播流量。要捕获其他主机间的流量,通常需要通过 端口镜像 或在网络网关位置进行抓包。
3. 网卡的其他模式
除了混杂模式,网卡通常还有以下几种常见的工作模式或状态:
-
单播模式
这是网卡最基础、最普通的工作模式,也就是上面描述的“正常模式”。它只接收目的地为自己 MAC 地址的帧。
-
广播模式
网卡默认都会接收目的地址为广播地址(
FF:FF:FF:FF:FF:FF)的帧。这种帧是发给网络中的所有设备的,例如 ARP 请求“谁的 IP 是 192.168.1.1?”就是通过广播实现的。 -
多播/组播模式
网卡可以配置为监听一个或多个多播 MAC 地址。当它加入某个多播组后(例如通过 IGMP 协议),它就会接收发往该组地址的流量。这在视频会议、流媒体等应用中很常见。多播模式可以看作是介于单播和广播之间的一种“选择性接收”模式。
-
promiscuous mode(混杂模式)
正如上文详细解释的,接收所有帧的模式。
-
allmulti mode(全部多播模式)
可以理解为 “多播版本的混杂模式”。
- 混杂模式 :接收 所有 帧(单播、广播、多播)。
- 全部多播模式 :只接收 所有多播帧和广播帧 ,但不接收目的地为其他主机的单播帧。 这个模式在某些特定的网络监控场景下有用,当你只关心多播流量时,可以避免被过多的无关单播流量淹没。
4. 如何设置和管理这些模式?
在 Linux 中,你可以使用 ip命令或旧的 ifconfig命令来查看和设置网卡的模式。
- 查看当前模式 :
或者ip link show eth0在输出中,如果看到ifconfig eth0
PROMISC标志,则表示网卡正处于混杂模式。 - 开启混杂模式 :
或者sudo ip link set dev eth0 promisc onsudo ifconfig eth0 promisc
- 关闭混杂模式 :
或者sudo ip link set dev eth0 promisc offsudo ifconfig eth0 -promisc
- 开启全部多播模式 :
sudo ip link set dev eth0 allmulticast on
5. 总结
| 模式 | 接收的流量 | 主要用途 |
|---|---|---|
| 单播模式 | 目的地为本机的帧 | 正常网络通信 |
| 广播模式 | 广播地址的帧 | 接收网络广播(如 ARP) |
| 多播模式 | 已订阅的多播组帧 | 视频流、服务发现 |
| 混杂模式 | 所有 流经网卡的帧 | 网络抓包分析、IDS |
| 全部多播模式 | 所有多播和广播 帧 | 多播流量监控 |
混杂模式是一个强大的网络诊断工具,但使用时需要具备相应的权限(root),并且要符合网络安全管理规定。