Linux wlan 单频段 dual wifi创建

环境基础

  • TP LINK WN722N V1网卡
  • linux 主机

查看设备是否支持双ap

  • managed:客户端模式(连接路由器/AP)
  • AP:接入点模式(创建热点)
  • AP/VLAN:支持带VLAN标签的虚拟AP
  • { AP, mesh point, P2P-GO } <= 2
    可以同时运行最多2个热点类接口(AP/P2P-GO/mesh)
    如2个AP(主Wi-Fi+访客Wi-Fi),或1个AP+1个P2P-GO

结论:支持单频段2.4G wifi创建

dual ap 创建

  1. 创建第一个AP接口(主网络)

    sudo iw phy phy1 interface add wlan0_vap type __ap

  2. 创建第二个AP接口(访客网络)

    sudo iw phy phy1 interface add wlan1_vap type __ap

  3. 查看无线设备接口信息

    实际上只是创建了rename9 and rename10网络接口

    ap接口已创建成功

  4. 配置双热点(Hostapd)

    配置主热点(/etc/hostapd/hostapd_ap1.conf)

    interface=rename9

    driver=nl80211

    ssid=000Main-AP

    hw_mode=g

    channel=6

    wpa=2

    wpa_passphrase=12345678

    wpa_key_mgmt=WPA-PSK

    rsn_pairwise=CCMP

    ap_isolate=1

    配置访客热点(/etc/hostapd/hostapd_ap2.conf)

    interface=rename10

    driver=nl80211

    ssid=000Guest-AP

    hw_mode=g

    channel=6

    wpa=2

    wpa_passphrase=12345678

    wpa_key_mgmt=WPA-PSK

    rsn_pairwise=CCMP

    ap_isolate=1

  5. 启动双热点命令

    sudo hostapd /etc/hostapd/hostapd_ap1.conf -B

    sudo hostapd /etc/hostapd/hostapd_ap2.conf -B

  6. 启动wifi 1 hostapd

    出现错误

    分析

    启动时遇到了接口名称冲突或驱动初始化失败的问题,之前我们提到过,这款网卡支持支持两个接口,ap或者managed的接口总数不能超过2,所以我选择down掉managed接口

    主wifi接口正常启动

  7. 启动wifi 2接口

    访客wifi启动失败
    debug步骤

    先关闭已经启动的接口

    再启动wifi 2接口,成功启动

    初步结论:关掉主wifi后,访客wifi启动成功,他们不能同时启动

    所以前面的分析原因有误,不是因为ap或者managed的接口总数不能超过2导致的无法启动hostapd wifi
    分析

    使用 -dd参数查看详细信息

    修改:

    尝试了一下多种方法,原来是因为这三个接口都是使用了相同的mac地址

    所以尝试修改rename8 的mac地址:

    sudo ip link set dev rename13 addr 38:83:45:1a:ae:6d

    再次启动:

  8. 启动成功

    wifi分别为000Guest-AP000Main-AP

    wifi扫描能扫描到wifi

  9. dnsmasq配置(/etc/dnsmasq.conf)

  10. 启动dnsmasq

    成功启动

  11. 网络连通性配置

    通信路由及隔离:

    sudo sysctl net.ipv4.ip_forward=1

    sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

    sudo iptables -A FORWARD -i rename9 -o ens33 -j ACCEPT

    sudo iptables -A FORWARD -i rename10 -o ens33 -j ACCEPT

    sudo iptables -A FORWARD -i ens33 -o rename10 -j ACCEPT

    sudo iptables -A FORWARD -i ens33 -o rename9 -j ACCEPT

    sudo iptables -A FORWARD -i rename9 -o rename10 -j DROP

    sudo iptables -A FORWARD -i rename10 -o rename9 -j DROP

  12. 双wifi连通性测试

为什么之前创建过ap,还要创建两个ap做实践?

  • 手动配置双AP涉及接口隔离、频道共享、DHCP作用域分离等,能深入理解Linux网络子系统的工作机制,理解和应用驱动的基础功能