无法通过多个虚拟接口连接到多个 WiFi 网络

无法通过多个虚拟接口连接到多个 WiFi 网络

我的笔记本电脑有一张 atheros WiFi 卡,我在其上创建了 2 个虚拟接口,使用以下命令:

  • iw dev wlan0 接口添加 vlan0 类型站
  • iw dev wlan0 接口添加 vlan1 类型站

我修改了它们的 MAC 地址,如下:

  • macchanger -e vlan0
  • machhanger-e vlan1

然后我打开它们:

  • ifconfig vlan0 up
  • ifconfig vlan1 up

我想将这两个接口连接到 2 个不同的网络。假设我有 2 个不同的 AP 广播的 SSID1 和 SSID2。

我执行以下命令来执行此操作:

  • iw dev vlan1 连接 SSID1
  • iw dev vlan2 连接 SSID2

问题是,vlan1 可以连接,但 vlan2 不能。为了找到答案,我跟踪了空中的帧,我发现当要求 vlan2 连接时,它会发送探测请求并从 SSID2 获得探测响应,但它从不发送关联请求。

但是,如果我尝试将 vlan1 和 vlan2 都连接到一个 SSID - SSID1/2,则它们两个都能够连接和关联。

问题是,为什么 2 个不同的虚拟接口不能连接到 2 个不同的网络?

答案1

一般而言,单个 Wi-Fi 卡只有一个无线电,因此每次只能调至一个频道。从某种意义上说,支持 MIMO(2 个或更多空间流)的卡在技术上具有多个无线电,但它们是组合在一起的;它们仅设计为在同一频道上作为一个团队工作。

如果发布您感兴趣的两个 SSID 的最近的 AP 位于不同的信道上,那么您将无法同时连接到这两个信道,因为您的无线电无法同时调到两个信道。尝试在信道之间快速切换(称为“时分双工”或 TDD)并不是成功的秘诀;您最终会丢失两个网络上的大量数据包。即使您的卡明智地使用 802.11 省电模式要求 AP 在客户端位于另一个信道时对数据包进行排队,客户端仍可能会错过重要的多播/广播,包括 ARP 请求。

答案2

如果您只有一张 WIFI 卡,则无法从同一台电脑连接到两个网络。

即使您有两个虚拟机,并尝试将它们连接到两个网络 - 您要做的是让同一台 PC 上的程序使用相同的 WIFI 卡连接到不同的网络。

这是不可能的。

答案3

确实,一些 wifi 设备支持您的场景(我个人不能否认或确认 Spiff 关于使用不同渠道的评论,但是下面的 wiki 没有提到这个限制):

https://wireless.wiki.kernel.org/en/users/Documentation/iw/vif

至少一些 atheros 设备有这种功能,但是对于英特尔 8265 我没有运气。

答案4

虽然进入后期,但这确实是可能的。设置虚拟接口是第一步,但真正的问题是硬件和驱动程序通常无法支持这种事情。例如,硬件本身可能有一个内部状态机,它只支持一次“加入”一个网络。

幸运的是,在 Linux 中,有整个 802.11 mac 层的软件模拟,因此只要您有支持原始数据包的卡,就可以用软件弥补任何缺少的硬件功能。缺点是这样做需要更多 CPU。

Linux mac80211 文档: https://www.kernel.org/doc/html/v4.9/80211/mac80211.html

相关内容