Linux网卡开启混杂模式
一. 混杂模式介绍
网卡正常情况下,即非混杂混杂模式下,只接收目的地址是本机的数据包。在以太网上,有大量的数据包,但真正发送给自己的非常少,所以非混杂模式下可以极大的减轻网卡的处理负担。混杂模式(Promiscuous Mode
)则是相反,网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
有时候为嗅探到网络上的数据,需要将网卡设置到混杂模式,进入该模式将网络上的数据一并抓获,设置方式 CentOS 和 Ubuntu 开启混杂模式大体相同。
二. 查看混杂模式
有关键字PROMISC
表示开启
# 方法1
ip link show enp2s0
2: enp2s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether ac:e2:d3:4d:4a:52 brd ff:ff:ff:ff:ff:ff
# 方法2
ifconfig enp2s0
enp2s0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 172.16.130.83 netmask 255.255.0.0 broadcast 172.16.255.255
inet6 fe80::177:37f9:572:3ecd prefixlen 64 scopeid 0x20<link>
ether ac:e2:d3:4d:4a:52 txqueuelen 1000 (Ethernet)
RX packets 27989169 bytes 6321222023 (6.3 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 69903080 bytes 93642610689 (93.6 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
三. 设置混杂模式
# 方法1
sudo ip link set dev eth1 promisc on
sudo ip link set dev eth1 promisc off
# 方法2
ifconfig eth1 promisc
ifconfig eth1 -promisc
# 方法3(for macos)
tcpdump -Ii en0
# centos 持久化
vim /etc/sysconfig/network-scripts/ifcfg-eth1
PROMISC=yes
# ubuntu 持久化
auto eth0
iface eth0 inet dhcp
up ifconfig eth0 promisc
...