tcpdump 无法捕获 WiFi 到 WiFi 的流量

tcpdump 无法捕获 WiFi 到 WiFi 的流量

我在网络上配置了一个透明桥,该桥应使用 tcpdump 捕获其连接设备的所有流量(见图1)。

网桥配置在 Debian 11 服务器上,并具有到路由器的上行链路 (eth1),该路由器还处理 DHCP 等。以太网/LAN 设备通过 eth2 上的网络集线器(图中未显示)连接。Wi-Fi 设备通过使用 hostapd (wlan0) 的 USB 3.0 NIC (ALFA AWUS1900) 连接。所有接口 (eth1、eth2、wlan0) 都配置为网桥 (br0)。

当我尝试使用以下方式捕获来自不同设备的 PING 流量时

tcpdump -i br0

我可以看到来自 WLAN<->Internet、LAN<->Internet 和 LAN<->LAN 的请求和响应。但是,当我尝试从一个 WLAN 设备 ping 到另一个 WLAN 设备(例如从 192.168.0.21 到 192.168.0.22)时,即使我收到了 ping 响应,tcpdump 也无法捕获流量。此外,绝对不会捕获从一个 WLAN 设备到另一个 WLAN 设备的流量。

这是我的 /etc/network/interfaces 的相关片段:

# Bridge interface
iface eth1 inet manual
iface eth2 inet manual
iface wlan0 inet manual

auto br0
iface br0 inet static
  bridge_ports eth1 eth2

我的 /etc/hostapd/hostapd.conf:

# INTERFACE CONFIGURATION
interface=wlan0
driver=nl80211
bridge=br0
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

# WI-FI CONFIGURATION
ssid=****
hw_mode=g
country_code=AT
channel=1
auth_algs=1
macaddr_acl=0
# WPA
wpa=2
wpa_passphrase=****
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

我遗漏了什么,导致 WLAN 到 WLAN 的流量无法被捕获?任何帮助都将不胜感激!

编辑: 以下是输出ip -a address

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether ac:1f:6b:00:00:00 brd ff:ff:ff:ff:ff:ff
    altname enp25s0f0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:c0:ca:00:00:00 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:60:6e:00:00:00 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ca:a0:96:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.3/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever

答案1

你需要ap_isolate=1在 hostapd 的设置中防止无线驱动程序对来自 Wifi 的无线帧执行低级桥接并发送回同一个 Wifi,这会导致网络堆栈和桥接器短路br0

ap_isolate单独会导致 Wifi 客户端被隔离:如果不进行额外设置,它将无法看到其他 Wifi 客户端。

Wii-to-Wifi 从以下版本开始:

wlan0 -----> AP -----> wlan0
             X

            br0

到(无处,或无用广播到以太网端口:失去连接):

wlan0 ---> (AP) ---> br0 X
     

由于桥接器默认不会将流量发送回其来源端口,因此 Wifi 到 Wifi 的连接被禁用(这就是ap_isolate首先调用该参数的原因)。在这种情况下,必须在桥接器上启用这种流量:发夹形

bridge link set dev wlan0 hairpin on

(可获得完全相同结果的替代命令ip link set dev wlan0 type bridge_slave hairpin on:)

现在流量变成:

wlan0 ---> (AP) --->
                    br0
wlan0 <--- (AP) <---
          

br0由于,交换流量通过时ap_isolate=1,由于发夹结构而不受中断,tcpdump现在可以捕获 Wifi 到 Wifi 上br0(或直接在wlan0端口上)。

相关内容