网卡工作模式有4种,分别是:
广播(Broadcast)模式
多播(Multicast)模式
单播模式(Unicast)
混杂模式(Promiscuous)。
在混杂模式下的网卡能够接收一切通过它的数据,而不管该数据目的地址是否是它。如果通过程序将网卡的工作模式设置为 “混杂模式”,那么网卡将接受所有流经它的数据帧,这实际上就是Sniffer工作的基本原理:让网卡接收一切他所能接收的数据。Sniffer就是一种 能将本地网卡状态设成混杂(promiscuous)状态的软件,当网卡处于这种”混杂”方式时,该网卡具备”广播地址”,它对所有遇到的每一个数据帧都 产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数 据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。
混杂模式(英语:promiscuous mode)是计算机网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。
[root@test123 log]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 14:18:77:2d:f8:11 brd ff:ff:ff:ff:ff:ff
inet 121.121.222.12/28 brd 211.151.213.239 scope global em1
valid_lft forever preferred_lft forever
3: em2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 14:18:77:2d:21:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global em2
valid_lft forever preferred_lft forever
4: em3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 14:18:77:2d:21:cc brd ff:ff:ff:ff:ff:ff
5: em4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 14:18:77:2d:21:cd brd ff:ff:ff:ff:ff:ff
其中UPBROADCAST RUNNING PROMISC MULTICAST的PROMISC说明网卡em2已经设置成混杂模式。
字段含义说明:
eth0/eth1: 分别表示第一块网卡和第二块网卡;
lo: 表示回环测试接口,注意,这个虚拟的interface一定要存在!
usb0: 表示USB接口的网卡;
Linkencap: 表示位于OSI物理层的名称,即连接类型Ethernet(以太网)
HWaddr: 表示网卡的硬件地址,即MAC地址
inetaddr: 表示网卡IP;
Bcast: 表示广播(broadcast ) 的地址;
Mask: 表示子网掩码;
UP: 表示网卡开启状态;
BROADCAST: 表示支持广播;
MULTICAST: 表示网卡混杂模式;
RUNNING: 表示网卡的网线被接上;
MULTICAST: 表示支持组播;
MTU: 表示MaximumTrasmission Unit 最大传输单元(字节),即此接口一次所能传输的最大封包;
Metric: 表示路由度量值,缺省值是0;
RX: 表示网络由激活到目前为止接收的数据包;
TX: 表示网络由激活到目前为止发送的数据包;
collisions: 表示网络信号冲突的情况;
txqueuelen: 表示传输缓冲区长度大小;
Memory: 表示占用内存范围。
设置混杂模式
ifconfig em2 promisc 设置混杂
ifconfig em2 -promisc 取消混杂