0

我正在从头开始构建 UDP 数据包(包括 802.11 MAC、LLC、IP 和 UDP 标头)并使用 LORCON 将它们注入无线网络。接收主机有一个wlan0处于常规托管模式的接口(但未连接到任何 AP),并且我添加了一个mon0在监控模式下运行的子接口,如下所示:

iw dev wlan0 interface add mon0 type monitor

观察监控界面,报文接收正确:

$ sudo tcpdump -vei mon0 udp
tcpdump: WARNING: mon0: no IPv4 address assigned
tcpdump: listening on mon0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 65535 bytes
<time> <signal info> DA:Broadcast BSSID:... SA:... LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0x03: oui Ethernet (0x000000), ethertype IPv4 (0x0800): (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 53)
    10.0.0.1.1234 > 255.255.255.255.1234: UDP, length 17

但是,如果我运行sudo tcpdump -vei wlan0,即使 MAC 和 IP 目标地址都设置为广播地址,也不会打印任何数据包。源地址设置为虚构地址,但我认为这根本不应该阻止tcpdump看到数据包?

$ ip link
...
7: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:21:6a:c5:3e:7a brd ff:ff:ff:ff:ff:ff
8: mon0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
    link/ieee802.11/radiotap 00:21:6a:c5:3e:7a brd ff:ff:ff:ff:ff:ff

对于它的价值,这里net.ipv4.conf.all.rp_filter=0建议的设置没有效果。设置也不行。启用不会在 syslog 中产生任何输出。net.ipv4.ip_forward=1net.ipv4.conf.all.log_martians

任何关于为什么这可能是最受欢迎的指示!

FWIW,机器运行的是 Ubuntu 12.04.3,但内核是 3.5.7。

编辑:这是我刚刚发现的一些有趣的事情:tcpdump -i any也不打印任何东西。只有当我明确运行时,我tcpdump -i mon0才能看到传入的数据包。为什么有些东西会被排除在外-i any

4

1 回答 1

1

经过多次徒劳的实验,我决定简单地将主界面设置为监控模式

iw dev wlan0 set type monitor
ip link set wlan0 promisc on

然后使用 pcap 提取有问题的数据包。添加对 pcap 的依赖,但似乎比试图找出 Linux 内核中的数据包更容易。可以在这里找到一个很好的 pcap 介绍。

于 2013-10-18T12:39:00.467 回答