linux - 类似于 Linux 上的 VETH 的虚拟 WiFi/802.11 接口(interface)

标签 linux virtual wireless

<分区>

我正在寻找一种在单个设备上设置纯虚拟(即没有实际信号)802.11 网络的方法 - 以一种可以给我类似功能的方式进行测试:

  • 创建多个接入点接口(interface)(例如,ap0ap1..)
    • 设置它们的基本参数(ssid ...)
    • 在每一个上设置 dhcp 服务器,
    • 使用 shell 命令管理信号强度 (iw?)
    • 允许密码管理(更改密码、加密方法等)
  • 创建单一接入点客户端接口(interface)(wifi0),这将
    • 查看特定访问点(或所有访问点)
    • 允许我借助 NetworkManager 等工具连接到特定接口(interface)

实际上,它非常基础,看到 veth 驱动程序如何与 ip link 一起工作给了我很多希望。

iw 工具有可能吗?如果是这样 - 我该怎么做?

如果不是,如果我需要实现它,我通常会如何处理此事?通过创建一个提供数据的假 wpa_supplicant 驱动程序?

对于此事的任何提示和指示,我将不胜感激。

最佳答案

我尝试遵循 Stefano Cappa 发布的提示,但没有成功。我的界面一直报告No valid interface combinations,这表明我应该卡住(但没有)。

虚拟WIFI可以借助于

  • mac80211_hwsim内核模块
    • 模块可配置 radios 参数,指示虚拟物理卡的数量 (phy#)。
    • 每个phy#可以模拟一个独立的 radio 卡。
    • 每个 phy# 卡都有一个关联的 lan 接口(interface) (wlan#)。
    • 模块还带来了一个 hwsim# 接口(interface),可用于监听所有 radio 卡之间发生的伪 wifi 流量。
  • hostapd 能够将任何 radio (包括模拟 radio )变成接入点的工具,
  • wpa_supplicant 工具,可用于扫描区域的接入点或连接到这些接入点。

我最终想出了一个仅依赖于这三件事的解决方案(花了我一段时间,因为我试图通过 Android 实现它)。这些工具将使用 nl80211 驱动程序与伪硬件对话。

我的简单配置文件如下所示:

hostapd.conf(请注意,此文件的设置比要求的多,但我将所有设置都发布在这里)

interface=wlan1
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface_group=0
ssid=Vamonos Pest
country_code=US
hw_mode=g
channel=1
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1

wpa_supplicant.conf

network={
    ssid="Vamonos Pest"
    key_mgmt=NONE
    priority=16
}

终于推出了这两款:

hostapd -d hostapd.conf 
wpa_supplicant -Dnl80211 -iwlan0 -d -csupplicant.conf

成功了。 wpa_supplicant 能够扫描网络区域并找到所有虚拟 wifi 接入点。如果 hwsim 模块使用两个以上的 radio ,则可以创建更多 radio 。从这里开始,剩下的就很简单了——在 wlan1 上启动 dhcp 服务器,在 wlan0 上启动 dhcp 客户端,你就完成了。

关于linux - 类似于 Linux 上的 VETH 的虚拟 WiFi/802.11 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091895/

相关文章:

c++ - 删除还是虚拟删除?

python - 为什么 Visual Studio Code 找不到我的虚拟环境安装的模块?

docker - docker 现在还不能在 Strato 托管的虚拟服务器上运行吗?

ios - 在 ios 中集成 Sandisk Connect 无线棒

android - 打开无线网络 - 需要身份验证通知

检查修改日期不起作用

python - UNIX 命名的 PIPE 文件结尾

wireless - 以编程方式更改无线路由器设置-理想的Netgear

linux - 如何在 shell 脚本中使用 getopt 获取多个参数

windows - makemenu 配置与 Windows 等效