![在使用 ad-hoc 网络时,如何强制节点使用相同的单元 ID(bssid)?](https://linux22.com/image/1351588/%E5%9C%A8%E4%BD%BF%E7%94%A8%20ad-hoc%20%E7%BD%91%E7%BB%9C%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%E8%8A%82%E7%82%B9%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E5%8D%95%E5%85%83%20ID%EF%BC%88bssid%EF%BC%89%EF%BC%9F.png)
我有 Debian/Ubuntu 主机,我通过临时网络连接,设置如下:
board:~# cat /etc/network/interfaces
auto wlan0
iface wlan0 inet static
address 10.0.0.2
netmask 255.255.255.0
wpa-driver nl80211
wpa-conf /etc/wpa_supplicant.conf
board:~# cat /etc/wpa_supplicant.conf
# IBSS/ad-hoc network with WPA-None/TKIP.
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="adhoc_test"
mode=1
frequency=2412
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="abcdefgh"
bssid=F8:D1:11:52:0C:4E
}
这些配置会创建一个临时 WLAN;但是,节点通常会获得不同的单元 ID,因此它们无法相互通信。为了防止这种情况,我添加了一行bssid=F8:D1:11:52:0C:4E
;但是,节点在获取单元 ID 时不会获取预定义的单元 ID。
我的问题是如何防止节点获得不同的单元 ID?为什么线路bssid
在 ad-hoc 模式下不起作用?
PS 我在内核为 3.2 和 3.4 的 Ubuntu 和 Debian 发行版上尝试了这些设置。我使用的 Wpa_supplicant 版本为 0.7、1.0 和 2.0。均无效。对于芯片组,我使用 Atheros AR9271 芯片组作为 Wi-Fi 模块。
答案1
命令和设置正确。但是,之前wpa_supplicant 2.0
不允许您预定义BSSID
。因此,您需要将 wpa_supplicant 更新为版本2.0,那么问题就解决了。
顺便说一句,如果您没有BSSID
提前定义,每个节点将获得 BSSID 作为其自己的 MAC 地址。然后,当 WLAN 检测到广播时,它们应该合并。如果它们没有合并,则检查它们是否在同一个频道上,或者 SSID 拼写错误。
答案2
我正在尝试通过 ad-hoc 网状网络连接一些 Raspberry Pi。遇到了同样的问题,不同的单元,或称为“单元分裂”。
经过几天的搜索,我发现了这篇很棒的帖子:
http://tiebing.blogspot.com/2009/12/ad-hoc-cell-splitting-re-post-original.html
所以我解决了这个问题,这是我的脚本:
$IFC "$IFACE" down
$IWC "$IFACE" mode managed
$IWC "$IFACE" power off
$IWC "$IFACE" mode ad-hoc channel 10 rts 250 frag 256
$IWC "$IFACE" essid whateveryouwant
$IWC "$IFACE" key off
$IWC "$IFACE" ap 11:22:33:44:55:66
$IFC "$IFACE" up
$IFC "$IFACE" 10.10.10.10/24 up
命令“sudo iwconfig ath0 ap 11:22:33:44:55:66”强制我的 ralink5370 进入指定的 cell-id。
希望这可以帮助。
答案3
使用 ap_scan=2 并从配置中删除 bssid= 行。