WIFI设置STA+AP模式

WIFI设置STA+AP模式

需求:

WIFI需要同时连接指定网络和持续对外发送广播,广播要求位于信道6、2.4GHz下

一、查看WIFI支持模式

不同的wifi芯片支持的配置组合是不同的,因此需要使用 iw 命令查看支持的模式

运行以下命令,重点关注输出中的几个部分:

复制代码
sudo iw phy phy0 info

这条命令会输出非常详细的信息,你需要关注以下几个关键部分:

查找的关键字段 它告诉你什么 如何解读
Supported interface modes: 核心信息。列出了网卡硬件支持创建哪些类型的虚拟接口。 这是最重要的部分。如果你看到 AP ​ 或 ​ __ap ​,就说明支持创建接入点(虚拟AP)。managed​是普通客户端,monitor是监控模式。
valid interface combinations: 组合限制。说明了可以同时创建哪些类型的接口以及它们的数量、信道限制。 根据之前的对话,你的输出里有 #channels <= 1​,这解释了为什么 wlan0​ 和 wlan0_ap 必须在同一个信道。
Band 1: ​ 和 Band 2: 支持的频段。分别代表2.4GHz和5GHz频段的能力。 可以查看每个频段支持的信道、最大速率等信息。
undefined 复制代码
 valid interface combinations:
                 * #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
                   total <= 3, #channels <= 2
                 * #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
                   total <= 4, #channels <= 1

                Frequencies:
                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (20.0 dBm)
                        * 2472 MHz [13] (20.0 dBm)
                        * 2484 MHz [14] (20.0 dBm)

因此,可见硬件支持STA+AP模式,但是配置AP模式时,总体channels要 <= 1,即虚拟出的STA和AP的只能位于同一个channel

二、查看、配置WLAN
undefined 复制代码
root@firefly:~# iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr 40:d9:5a:8b:52:d4
        type managed
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

配置:

undefined 复制代码
root@firefly:~# iw phy phy0 interface add wlan0_ap type __ap
root@firefly:~# 

配置后查看:

undefined 复制代码
root@firefly:~# iw dev
phy#0
        Interface wlan0_ap
                ifindex 6
                wdev 0x3
                addr 40:d9:5a:8b:52:d4
                type AP
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 31.00 dBm
        Unnamed/non-netdev interface
                wdev 0x2
                addr 42:d9:5a:8b:52:d4
                type P2P-device
                txpower 31.00 dBm
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr 40:d9:5a:8b:52:d4
                type managed
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 31.00 dBm
三、测试

测试一边用wlan0连接wifi上网,一边通过wlan0_ap发射广播数据

1、连接STA
undefined 复制代码
#!/bin/bash
# 核心WiFi连接脚本
SSID="YOUR_SSID"
PASSWORD="YOUR_PASSWORD"
INTERFACE="wlan0"

# 1. 生成配置并连接
wpa_passphrase "$SSID" "$PASSWORD" | sudo tee /etc/wpa_supplicant.conf > /dev/null
sudo wpa_supplicant -i $INTERFACE -c /etc/wpa_supplicant.conf -B

# 2. 获取IP
sudo dhclient $INTERFACE

# 3. 验证
echo "连接状态:"
iw dev $INTERFACE link | grep "SSID:"

连接后状态:

undefined 复制代码
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.196  netmask 255.255.255.0  broadcast 192.168.200.255
        ether 40:d9:5a:8b:52:d4  txqueuelen 1000  (Ethernet)
        RX packets 220  bytes 36049 (36.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 128  bytes 11822 (11.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

网络连通性:

undefined 复制代码
root@firefly:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=107 time=239 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=107 time=238 ms
2、AP发射

hostapd配置:

undefined 复制代码
root@firefly:/usr/dkkj/source/remote_id/lnc-rid# cat hostapd_rid.conf 
ctrl_interface=/var/run/hostapd
interface=wlan0_ap
driver=nl80211
hw_mode=g
channel=6
ssid=AP-TEST
wpa=2
wpa_passphrase=abc12345
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP TKIP
wpa_pairwise=TKIP CCMP

wireshark抓包

同时,两者的状态:

undefined 复制代码
root@firefly:/usr/dkkj/source/remote_id/lnc-rid# iw dev
phy#0
        Unnamed/non-netdev interface
                wdev 0x4
                addr 42:d9:5a:8b:52:d4
                type P2P-device
                txpower 31.00 dBm
        Interface wlan0_ap
                ifindex 6
                wdev 0x3
                addr 5e:be:22:04:ca:45
                ssid AP-TEST
                type AP
                channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
                txpower 31.00 dBm
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr 40:d9:5a:8b:52:d4
                ssid DKKJ_SH
                type managed
                channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
                txpower 31.00 dBm
相关推荐
欢乐熊嵌入式编程10 小时前
IoT 场景中的 DHCP、ARP、ICMP 到底在干嘛?
物联网·wifi·dhcp·iot wifi
数据线1 天前
ESP32-CAM通过WiFi传输视频
wifi·esp32·视频
一只小灿灿4 天前
手机通过WiFi进行数据传输的工作原理
智能手机·wifi
yunteng5219 天前
wifi安全实践
安全·wifi·渗透
Just_Paranoid17 天前
【Settings】Android 设备信息相关参数的获取
android·5g·wifi·ip·sn·network
硬汉嵌入式20 天前
【无标题】
stm32·wifi·英飞凌·sdio·赛普拉斯·cyw43·cyw55
課代表1 个月前
Windows 系统中查看已保存的WiFi密码
网络·windows·wifi·路由·netsh·无线·命令提示符
私人珍藏库2 个月前
WiFi密码B破器-密码查看器、可跑字典-免费无广
windows·wifi·工具
Smartlabs2 个月前
五大智能锁PK:哪种最适合你家?
wifi·matter·z-wave