监视器接口上收到的数据包,但不是主接口

时间:2013-10-17 18:03:17

标签: linux sockets udp wifi tcpdump

我正在从头开始构建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

对于它的价值,按照建议here设置net.ipv4.conf.all.rp_filter=0无效。也没有设置net.ipv4.ip_forward=1。启用net.ipv4.conf.all.log_martians不会在syslog中生成任何输出。

关于为什么会这样做的任何指示都是最受欢迎的!

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

编辑:这是我刚刚发现的有趣内容:tcpdump -i any也没有打印任何东西。只有当我显式运行tcpdump -i mon0时才能看到传入的数据包。为什么会从-i any中排除某些内容?

1 个答案:

答案 0 :(得分:1)

经过许多无结果的实验​​,我决定简单地将主界面置于监控模式

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

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