linux下将网卡设置为混杂模式,Linux下网卡的混杂模式浅谈

9d0a759aa1d7b4c90b2e76c3d71c76a2.png

混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。

一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

网卡具有如下的几种工作模式:

1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。

2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。

3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。

4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

Linux下设置把网卡设置成混杂模式的命令也很简单

ifconfig eth0 promisc

98eeeb41e8b761dabed0c4a622d430e4.png

取消混杂模式

ifconfig eth0 -promisc

7a7ef30b1c229c11984d450039a852b6.png

小知识:使用tcpdump抓包时网卡会进入混杂模式,可以在/var/log/messages里看到

如下图,开启tcpdump抓包后,在新窗口克隆会话tail -f /var/log/messages可以看到系统日志

kernel: device eth0 entered promiscuous mode

a304236169349d21f99b80598e384089.png

实际上网卡是否处于混杂模式并不能根据ifconfig查看是否有PROMISC字段来判断,

例如开启tcpdump抓包,这时ifconfig查看并没有PROMISC字段

实际上,网卡是否处于PROMISC模式,ifconfig并不是最直接的判断依据,换句话说就是ifconfig能看到PROMISC标记表示一定处于混杂模式,但处于混杂模式并不一定能看到PROMISC标记。内核判断网卡是否处于混杂模式是看/sys/class/net/eth0/flags的值,如果置位了0x100,则处于混杂模式

39976e598be73bb8aeffc2da16f82106.png

[root@CentOS_DIY ~]# cat /usr/include/linux/if.h | grep -i promisc

#define IFF_PROMISC     0x100           /* receive all packets          */

75d8bb6f5f5ae4ed536bbf2531f0ac73.png

google查到的相关解释

7fc841ce5244ff6a25cf6b8fbe249d25.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值