Appearance
wireshark 网卡混杂模式
混杂模式是一种允许网卡能够查看到所有数据包的驱动模式。在混杂模式下,网卡将会把每一个它所看到的数据包都传递给主机的处理器, 而无论数据包的目的地址是什么。一旦数据包到达 CPU,它就可以被一个数据 包嗅探软件捕获并进行分析。Wireshark 使用 libpcap / WinPcap 驱动,将网卡直接切换到混杂模式。关闭混杂模式就是要抑制 未知单播,仅允许目的 mac 是自身或者广播/组播报文。
- 未知单播:交换机起动时,MAC地址表为空,如果此时A主机发送一个帧给主机B,那么当交换机接受此帧的时,查看源地址(主机A),并将它添加到MAC地址表中,但是交换机并不知道主机B在哪个端口,所以交换机会泛洪这个帧。
混在模式简介
- wireshark 开启/关闭混杂模式
linux 网卡模式简介
- ifconfig 简介
root@client:~# ifconfig ens38
ens38 Link encap:Ethernet HWaddr 00:0c:29:6a:87:11
inet addr:10.10.2.2 Bcast:10.10.2.3 Mask:255.255.255.252
inet6 addr: fe80::20c:29ff:fe6a:8711/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1476 (1.4 KB)
- 字段描述 ^1
Flag | Description |
---|---|
UP | device is functioning |
BROADCAST | device can send traffic to all hosts on the link |
RUNNING | ??? |
MULTICAST | device can perform and receive multicast packets |
ALLMULTI | device receives all multicast packets on the link |
PROMISC | device receives all traffic on the link |
- linux 设置/取消混杂模式
# 开启混杂模式
ifconfig eth0 promisc
ens38 Link encap:Ethernet HWaddr 00:0c:29:6a:87:11
inet addr:10.10.2.2 Bcast:10.10.2.3 Mask:255.255.255.252
inet6 addr: fe80::20c:29ff:fe6a:8711/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1476 (1.4 KB)
# 关闭混杂模式
ifconfig eth0 -promisc
ens38 Link encap:Ethernet HWaddr 00:0c:29:6a:87:11
inet addr:10.10.2.2 Bcast:10.10.2.3 Mask:255.255.255.252
inet6 addr: fe80::20c:29ff:fe6a:8711/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1476 (1.4 KB)
未知问题(已解决)
按《wireshark 数据包分析实战》描述,关闭混杂模式应该收不到目的 mac 地址不是自己的报文,不清楚为啥还能收到广播包。
- tcpdump 描述:
--no-promiscuous-mode
Don't put the interface into promiscuous mode. Note that the interface might be in promiscuous mode for some other reason; hence, `-p' cannot be used as an abbreviation for `ether host {local-hw-addr} or ether broadcast'.
- 客户端测试
root@client:~# socat STDIO UDP4-DATAGRAM:10.10.2.3:6666,broadcast
1
- 服务端抓包 (-p)
root@router:/home/ubuntu# tcpdump -i ens39 -p udp -e
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens39, link-type EN10MB (Ethernet), capture size 262144 bytes
22:56:03.225065 00:0c:29:6a:87:11 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 60: 10.10.2.2.50726 > 10.10.2.3.6666: UDP, length 1