Linux 网络接口的混杂模式(Promiscuous mode)认知
认定一件事,即使拿十分力气都无法完成,也要拿出十二分力气去努力。 —《剑来》
写在前面
- 博文内容为
混杂模式
的简单认知 - 理解不足小伙伴帮忙指正
认定一件事,即使拿十分力气都无法完成,也要拿出十二分力气去努力。 —《剑来》
网络接口的混杂模式
混杂模式(Promiscuous mode)
,简称 Promisc mode
,俗称监听模式
。
混杂模式
通常被网络管理员用来诊断网络问题,但也会被无认证的、想偷听网络通信的人利用。根据维基百科的定义,混杂模式是指一个网卡会把它接收的所有网络流量都交给CPU,而不是只把它想转交的部分交给CPU
。
在 IEEE 802
定的网络规范中,每个网络帧都有一个目的MAC地址
。在非混杂模式下,网卡只会接收目的MAC地址
是它自己的单播帧
,以及多播及广播帧
;在混杂模式下,网卡会接收经过它的所有帧!
使用ifconfig
或者netstat-i
命令查看一个网卡是否开启了混杂模式,当输出包含 PROMISC
时,表明该网络接口处于混杂模式
。
1 | liruilonger@cloudshell:~$ ifconfig eth0 |
netstat -i
命名查看
1 | liruilonger@cloudshell:~$ netstat -i |
启用网卡的混杂模式
,可以使用下面这条命令:ifconfig eth0 promisc
1 | liruilonger@cloudshell:~$ sudo ifconfig eth0 promisc |
可以看到多了一个 PROMISC 状态
使网卡退出混杂模式
,可以使用下面这条命令:ifconfig eth0 -promisc
1 | liruilonger@cloudshell:~$ sudo ifconfig eth0 -promisc |
将网络设备加入 Linux bridge
后,会自动进入混杂模式: 把一个 veth 虚拟设备添加到网桥
1 | liruilonger@cloudshell:~$ sudo ip link add veth5 type veth |
如上所示,veth5
设备加入Linux bridge
后,可以通过查看内核日志看到 veth5
自动进入混杂模式,而且无法退出,直到将 veth5
从 Linux bridge
中移除。即使手动将网卡设置为非混杂模式,实际上还是没有退出混杂模
1 | liruilonger@cloudshell:~$ sudo brctl delif br5 veth5 |
博文部分内容参考
© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知 :)
《 Kubernetes 网络权威指南:基础、原理与实践》
© 2018-至今 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)
Linux 网络接口的混杂模式(Promiscuous mode)认知
https://liruilongs.github.io/2024/03/03/Linux/Linux网络/Linux-网络接口的混杂模式-Promiscuous-mode-认知/
1.如何使用 BPF 分析 Linux 内存泄漏,Linux 性能调优之 BPF 分析内核态、用户态内存泄漏
2.认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知
3.Linux 系统内存监控:Linux 内存调优之系统内存全面监控
4.Linux 进程内存监控:Linux 内存调优之进程内存深度监控
5.如何使用 eBPF 监控 Linux 内存 OOM killer:Linux 内存调优之 eBPF 监控内存 OOM killer 事件
6.认识 Linux 内存构成:Linux 内存调优之虚拟内存与物理内存
7.Linux 性能调优之CPU调优认知
8.Linux 性能观测之平均负载