在非混杂模式下,网络适配器仅侦听自己的 MAC 地址上的流量。在混杂模式下,它可以侦听所有数据包。
默认情况下,网络适配器设置为非混杂模式,混杂模式是数据链路层(L2)中的一个安全策略。
混杂模式下的网卡能接收所有通过它的数据流,不管是什么格式、地址(任何一个在同一冲突域中传输的所有包),在接收到数据包后由网络层判断确定这个包如何处理,例如是递交到上层处理还是交给下层转发还是丢弃,非混杂模式中网卡只把发给它自己的包(包括广播包)传递给上层,其它的包全部丢弃。
举一个简单的例子,一个交换机上连接着3个计算机,分别为c1、c2和c3,非混杂模式下c1给c2发送数据包c3是无法收到的,而在混杂模式下c1给c2发送数据包c3却可以收到,此时c3就是一个网络的监听者(偷听者),而这种监听c1和c2是不会察觉的。因此,有人称混杂模式叫做监听模式。
根据网络资料,网卡有四种模式,分别为广播模式、多播模式、混杂模式和非混杂模式(直接模式)。
一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。
当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。
在Linux *** 作系统中设置网卡混杂模式时需要管理员权限。
在Windows *** 作系统和Linux *** 作系统中都有使用混杂模式的抓包工具,比如著名的开源软件Wireshark。
# ip addr list
# ifconfig ens33 promisc
# ifconfig ens33
在 Linux 主机上以混杂模式使用虚拟网络适配器
https://docs.vmware.com/cn/VMware-Workstation-Pro/12.0/com.vmware.ws.using.doc/GUID-089D2595-26C5-433B-9DA4-D2A94C63B7B5.html
理解网卡混杂模式
https://zdyxry.github.io/2020/03/18/%E7%90%86%E8%A7%A3%E7%BD%91%E5%8D%A1%E6%B7%B7%E6%9D%82%E6%A8%A1%E5%BC%8F
char *eth_name = eth0//对网卡eth0进行混杂设置
struct ifreq ethreq//网络接口结构
strncpy(ethreq.ifr_name, eth_name, IFNAMSIZ)//指定网卡名称if(-1 == ioctl(sock_raw_fd, SIOCGIFFLAGS, &ethreq)) //获取网络接口{perror(ioctl)close(sock_raw_fd)exit(-1)}
/*此处用 | 是因为必须在保留原来设置的情况下,在标志位中加入“混杂”方式*/ ethreq.ifr_flags |= IFF_PROMISCif(-1 == ioctl(sock_raw_fd, SIOCSIFFLAGS, &ethreq)) //将标志位设置写入{perror(ioctl)close(sock_raw_fd)exit(-1)}
那就每次开机登录时自动修改呗~~~这个修改重启后会丢失,因此你要自己去修改~~修改mac地址也是重启就失效了
echo "ifconfig eth0 promisc " >>/root/.bash_profile
或者
echo "ifconfig eth0 promisc " >>/root/.bashrc
/root/.bashrc是进入root时自动会执行的一个脚本~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)