0

我们有一个使用 wlan1 的 MAC 地址作为 BSSID 创建接入点的设备。我们正在尝试更改此默认 BSSID,并且以某种方式设法做到了,但似乎我们的更改不会对客户端视为网络的 BSSID 产生影响。

问题是如何正确配置 hostapd 以使用我们希望它拥有的 BSSID 运行接入点。

在服务器端

我们可以看到我们的配置对我们期望的所有 3 个地方都有影响。

hostapd 配置文件

# ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=wlan1
driver=nl80211
country_code=DK

# WPA2-AES encryption
ssid=ap-wlan1-ccee
bssid=02:03:7f:d7:00:04
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_passphrase=password-wpa2aes
max_num_sta=5

# IEEE 802.11ac
hw_mode=g
channel=7
ieee80211ac=1
ieee80211n=1

logger_stdout=-1
logger_stdout_level=2

hostapd 输出运行 /usr/sbin/hostapd /etc/hostapd_wlan1.conf

Configuration file: /etc/hostapd_wlan1.conf
wlan1: interface state UNINITIALIZED->COUNTRY_UPDATE
Using interface wlan1 with hwaddr 02:03:7f:d7:00:04 and ssid "ap-wlan1-ccee"
wlan1: interface state COUNTRY_UPDATE->ENABLED
wlan1: AP-ENABLED

ifconfig wlan1

wlan1     Link encap:Ethernet  HWaddr 02:03:7F:D7:00:04
          inet addr:192.168.46.30  Bcast:192.168.46.255  Mask:255.255.255.0
          inet6 addr: fe80::3:7fff:fed7:4%2126838504/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63 errors:0 dropped:15 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1890 (1.8 KiB)  TX bytes:5588 (5.4 KiB)

/sys/class/net/wlan1/地址

02:03:7f:d7:00:04

在客户端

服务器暴露了错误的 BSSID,因此协商失败。

WirelessNetView 结果

无线网络视图

Wireshark 结果

我们可以看到服务器从正确的地址发送,但客户端响应错误的地址。

4

2 回答 2

1

最后,是我们使用的硬件软件的组合导致了问题。我们在 Digi cc6ul 模块中运行使用 Digi Embedded Yocto 2.0 烘焙的 Yocto Linux 映像。这些模块带有一个 U-Boot,它有 3 个用于虚拟接口 MAC 地址的变量wlan1adrrwlan2adrrwlan3adrr. 事实证明,在 cc6ul 上,该wlan1adrr变量用于为p2p0接口提供 MAC,其中用于为接口提供 MAC 的变量wlan1wlan2addr. 最重要的是,BSSID 的 hostapd 用户配置不会覆盖广播的 BSSID,这直接是wlan2adrr值。解决方案是只需更改wlan2addrU-Boot 变量,然后重新启动后一切正常!

于 2018-08-24T07:22:26.563 回答
0

我认为日志显示的是 src 和 dst 地址,而不是 BSSID。所以 dst 与 02:03:7f:d7:00:04 匹配。所以你在客户端看到的地址就是客户端的mac地址。如果您需要解码 BSSID,您可能需要捕获无线数据包

于 2018-08-22T03:56:53.593 回答