我们有一台设备,它使用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=2hostapd输出运行/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-ENABLEDifconfig 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/address
02:03:7f:d7:00:04在客户端
服务器公开了错误的BSSID,因此协商失败。
WirelessNetView结果

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

发布于 2018-08-24 15:22:27
最后,是我们正在使用的硬件和软件的组合导致了问题。我们正在运行一个Yocto Linux镜像,在Digi cc6ul模块中使用Digi嵌入式Yocto 2.0进行烘焙。这些模块附带一个U-Boot,它有3个用于虚拟接口MAC地址的变量:wlan1adrr、wlan2adrr和wlan3adrr。事实证明,在cc6ul上,wlan1adrr变量用于为p2p0接口提供MAC,其中用于为wlan1接口提供MAC的是wlan2addr。最重要的是,BSSID的hostapd用户配置不会覆盖广播的BSSID,它直接是wlan2adrr的值。解决方案是只需更改wlan2addr U-Boot变量,然后在重启后一切正常!
发布于 2018-08-22 11:56:54
我认为日志显示的是src和dst地址,而不是BSSID。所以dst与02:03:7f:d7:00:04匹配。因此,您在客户端看到的地址就是客户端的mac地址。如果需要对BSSID进行解码,则可能需要捕获无线数据包
https://stackoverflow.com/questions/51860818
复制相似问题