WIFI - 单个无线电同时充当 AP 和 AP 客户端

dav*_*dgo 5 wireless-networking wireless-access-point

单个 (802.11 b,g,n,ac) WIFI 无线电是否有可能同时充当接入点和接入点客户端 - 如果是这样,以及是否有允许这样做的软件示例(我特别感兴趣在 Linux 中,但任何能做到这一点的操作系统都会证明它可以做到,因此对我来说很有价值)。如果没有,为什么不呢?

为清楚起见,我不是在谈论一台收音机充当其中一个或另一个,并在不同时间转换角色,也不是我在谈论两个不同频率的收音机做不同的工作。我也对 ad-hoc 模式不感兴趣,除非可以利用它分别作为 AP 和 AP 客户端显示给其他 AP 和 AP 客户端。

use*_*686 6

是的,可以做到(取决于 Wi-Fi 设备功能)。我相信“Wi-Fi Direct”将其变成了官方功能(例如,一台电视同时充当家庭网络上的一个站点,并作为直接视频传输的接入点),但也可以只拥有一个常规 AP。

无知的解释尝试

据我所知,无论是 AP 还是站,物理无线电的行为都是一样的——至少在像 802.11b/g/n 这样的“更简单”的模式下(也许在 802.11ac 中更复杂)。也就是说,它不需要在不兼容的“AP”和“STA”行为之间切换

相反,它只是发送不同类型的帧。如果固件允许,那么它可以自由地同时发送“AP-like”和“STA-like”帧。对于“SoftMAC”设备尤其如此,它(与“FullMAC”设备不同)将大部分控制权交给操作系统和驱动程序。

在实践中配置它

我真的不知道它是如何工作的;我只是写这篇文章,因为我已经在我自己的硬件上测试过了。

  • 例如,这里是iw phy关于 Atheros ath9k 系列适配器的说明。(它已经有几年历史了,只有 2.4 GHz,但它是一个“SoftMAC”设备——这意味着驱动程序可以处理所有事情并且可以自由地做很多奇怪的事情。)

    valid interface combinations:
             * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1,
               total <= 2048, #channels <= 1, STA/AP BI must match
             * #{ WDS } <= 2048,
               total <= 2048, #channels <= 1, STA/AP BI must match
    
    Run Code Online (Sandbox Code Playgroud)

    *行都是一个组合列表。所以我可以关联2000个网络作为一个站点托管8个网络作为一个AP;当然,它们必须全部保留在一个通道上 ( #channels <= 1)。[1]

  • 同样,这里有一个英特尔“无线 3160”适配器。由于它支持 802.11ac,它在固件中做了更多的工作(即“FullMAC”设备),因此受到固件可以做什么的限制。[2]

    valid interface combinations:
             * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
               total <= 3, #channels <= 2
    
    Run Code Online (Sandbox Code Playgroud)

    因此,由于这些模式现在是基于固件而不是基于驱动程序,因此您只能拥有其中的一个——但您仍然可以是一个站点一个 AP。

    它还说#channels <= 2- 不仅因为它是双频段,还因为它甚至可以在两个相同频段的频道上工作。我相信他们已经做到了,因为 Wi-Fi Direct 需要它——在我对 2.4 GHz 频段的测试中,如果我使用不同的频道,我的手机会在笔记本电脑的 SSID 旁边显示一个“[P2P]”标记。如果我使用相同的频道,手机只会显示一个普通的 AP。

至于如何配置:

  1. 首先,使用iw在同一个“phy”(物理适配器)之上添加一个新的虚拟设备。默认情况下,您的适配器是phy0,并且有一个网络接口wlan0。所以添加第二个:

    iw phy phy0 interface add wlan1 type __ap                 # [sic]
    
    Run Code Online (Sandbox Code Playgroud)

    如果您想托管网络,通常您会使用type managed并期望hostapd将接口切换到 AP 模式,但由于某些原因,当存在多个接口时不会发生这种情况。因此,您可能必须直接在 AP 模式下预先创建它。

  2. 其次,只需hostapd像往常一样配置为使用该接口。


1此处解释了“BI 必须匹配”限制。) 2(仍然比某些 Realtek 或 Broadcom 设备更好,它们甚至根本不支持 AP 模式!)


pim*_*pim 2

运作模式

提供WiFi的接入点通常称为AP,而客户端称为STA

可以将您的设备配置为中继器或我称之为无线无线路由器的东西,因为我找不到一致的名称。

  • 中继将使用现有的网络基础设施进行DHCP、路由等桥接(在 STA 和 AP 端之间传输所有以太网数据包)。
  • 无线-无线路由器将 在STA和AP端之间路由选定的数据包,提供DHCP和NAT

无线-无线路由器将需要更多配置,但只会根据需要传输数据包。

硬件兼容性

有些无线适配器不能同时使用STA和AP模式(有些适配器甚至不能作为AP)。

如果您手头有一个适配器,iw list可以用来确定它是否能够同时充当客户端和接入点。正如这个问题中所说,您必须查找命令valid interface combinations的部分iw list

关于单个 802.11 a/b/g/ac 无线电

由于 802.11 b/g/n 使用 2.4 GHz,802.11 a/ac 使用 5 GHz,因此从 Linux 的角度来看,适配器将需要至少 2 个 phy,并且可能需要配置为 2 个独立的接入点。

关于软件

它们有很多针对小型计算机和 WiFi 路由器的专用 Linux 发行版,以下是一些示例:

前面列出的所有发行版都有自己的超级用户标志。

关于WRT名称

有趣的是,许多针对路由器的 Linux 发行版都包含 WRT一词,因为它们最初是作为古老的LinkSys WRT54G的替代固件。