我有一台 Debian“jessie”机器,配置为与两个不同的 Wi-Fi USB 适配器配合使用。第一个 ( wlan0
) 使用 创建自组织无线网络hostapd
,而第二个 ( wlan1
)应该尝试使用连接到我的家庭网络wpa_supplicant
。这是我的/etc/network/interfaces
文件的相关部分:
# Ad-hoc wireless interface
allow-hotplug wlan0
iface wlan0 inet static
address 172.16.42.1
netmask 255.255.255.0
# Infrastructure wireless interface
allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
当hostapd
服务于 ad-hoc 网络时,客户端会使用dnsmasq
.
现在,有时一切正常:我启动系统,我的自组织网络被广播,DHCPdnsmasq
工作正常,第二个接口连接到我的家庭 Wi-Fi 并获取 IP 地址。
然而其他一些时候,虽然 ad-hoc 网络已初始化且工作正常,但第二个接口无法连接到我的家庭网络,而是从第一个接口获取 IP 地址。发生这种情况时,以下是输出ifconfig
:
wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.16.42.1 Bcast:172.16.42.255 Mask:255.255.255.0
...
wlan1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.16.42.18 Bcast:172.16.42.255 Mask:255.255.255.0
...
请注意,wlan1
应该是inet addr
我的家庭路由器提供的,而不是那个。
我认为这个问题可能与启动顺序有关:dnsmasq
可能启动得太早或太晚,但我不确定。你怎么认为?预先感谢您的帮助。
答案1
你有一个竞争条件,你wlan1
将获取它返回的第一个 IP 地址,无论它是来自 dnsmasq (错误)还是你的家庭路由器(正确)。将以下行添加到您的 dnsmasq 配置中,使其不响应来自以下位置的请求wlan1
dhcp-mac=blacklist,<wlan1 MAC address>
dhcp-ignore=blacklist