Linux Wi-Fi 实战指南:AP / STA 实战用例(实战篇一)

前言

同一块 WiFi 网卡,有时像手机一样去连别人热点,有时又像路由器一样站在门口接人。很多人第一次接触这件事,都会有一个很自然的疑问:明明都是无线,为什么一边叫 STA,一边叫 AP,像是两个完全不同的世界?

答案其实并不复杂。它们不是两个名字,而是两套角色。STA 负责"加入别人",AP 负责"接纳别人"。一个像排队进场的人,一个像门口检票的人。角色一变,状态机、配置项、日志位置和测试方法都会跟着变。你要是把它们混在一起,后面的命令和排障思路就会开始打架。

这一篇不想停留在概念层,所以直接讲实战:怎么判断网卡支持什么,怎么用 iw 看状态,怎么把 STA 连上去,怎么把 AP 开起来,最后怎么验证它们到底稳不稳。

这张图最重要的地方在于,它把"连出去"和"接进来"分成了两条完全不同的链路。STA 关注的是"我能不能进去",AP 关注的是"我愿不愿意让你进来"。这就是后面所有命令、日志和测试项的分水岭。

查询Wi-Fi芯片的能力

真正上手之前,第一件事不是连网,而是看网卡能力。很多 AP / STA 问题,根本不是配置错,而是设备本来就不支持。

最先跑的命令通常是iw dev/iw list,iw dev用来看当前接口和工作状态,iw list用来看能力边界。下面是一组最简洁的查询命令:

bash 复制代码
# 当前模式(STA 还是 AP)→ iw dev
iw dev wlan0 info | grep type

# 是否支持 STA / AP → iw list
iw list | grep -A 10 "Supported interface modes"

# 支持哪些频段(2.4G / 5G / 6G)→ iw list
iw list | grep "Band [0-9]"

# 支持哪些信道 → iw list
iw list | grep -E "^\s+\* [0-9]"

# 支持的加密 → iw list
iw list | grep -A 10 "Supported Ciphers"

# 支持的带宽(HT20/40, VHT80/160)→ iw list
iw list | grep -E "HT20|HT40|80 MHz|160 MHz"

在想使能Wi-Fi功能之前,需要知道当前Wi-Fi芯片支持什么能力

bash 复制代码
iw list | grep -A 6 "Supported interface modes"
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * AP/VLAN
		 * monitor
		 * mesh point

对我手上这颗Wi-Fi芯片(88x2bu)所支持的模式简单说明:、

模式 含义 典型场景
managed 客户端模式(STA) 连接路由器/热点,日常上网
AP 接入点模式 开热点,让其他设备连过来
AP/VLAN 带 VLAN 隔离的 AP 每条 STA 绑定独立 VLAN,企业/多租户
IBSS Independent BSS,Ad-Hoc 模式 设备间直连,不经过 AP,点对点组网
monitor 监听模式 抓包、安全审计、信道分析
mesh point Mesh 节点模式 多跳自组网,覆盖扩展

简单说:

  • 你要连别人热点 → managed
  • 你要开热点给别人连 → AP
  • 你要抓空口包做分析 → monitor
  • 你要两台设备直连不经过 AP → IBSS
  • 你要组多跳 Mesh 网络 → mesh point

这块最容易被忽略的是:网卡驱动和固件必须同时支持 对应模式,光 iw list 列出来不够,实际切过去不报错才算数。

如果这一步都没过,后面连不上不是问题,后面能连上才是意外。

AP启动用例

在确认我们手上的Wi-Fi芯片支持AP后,通常我们可以在hostapd的hostapd的配置文件中配置Wi-Fi的AP模式。简单来说,通过hostapd启动AP的命令是

bash 复制代码
hostapd /etc/hostapd/hostapd.conf

那么我们就在hostapd.conf中要配置我们想启动的AP,比如SSID、信道、加密、接入控制和 beacon 广播。在这里分享当前我的AP配置文件

ctrl_interface=/var/run/hostapd

interface=wlan0

driver=nl80211

ssid=test-ap

wpa_passphrase=123123123

hw_mode=a

ieee80211n=1

ieee80211ac=1

ieee80211ax=0

channel=149

wmm_enabled=1

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

country_code=CN

ieee80211d=1

ieee80211h=1

max_num_sta=128

wpa=2

wpa_key_mgmt=WPA-PSK

rsn_pairwise=CCMP

最详细的配置文件说明保存在hostapd的源码hostap/hostapd/hostapd.conf文件中。我当前配置文件启动的AP信息为:

其中"test-ap"是我们启动的AP名字,手机扫描AP能够扫描到但是连接这个AP但是连接失败,这个问题我下一篇博客会告诉大家如何去调试。

STA启动用例

STA 的实操流程,建议按下面这个顺序走:先扫网,再连网,再看链路,最后看 IP。

请参考下面的步骤:

先创建一个~/wpa_supplicant.conf,内容如下:

$ cat wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant

update_config=1

在Ubuntu上启动wpa_supplicant程序

bash 复制代码
sudo wpa_supplicant -B -D nl80211 -i wlan0 -c ~/wpa_supplicant.conf

运行wpa_cli程序执行扫描、连接热点的流程

Selected interface 'wlan0'

Interactive mode

> scan

OK

> scan_result

add_network

> 0

set_network 0 ssid "你要连接热点名称"

> OK

> set_network 0 psk "该热点的密码"

OK

> enable_network 0 #使能网络俩基恩

OK

在wpa_state显示"COMPLETED"后,就可以开始分配IP了上网了。

sudo wpa_cli status | grep state

wpa_state=COMPLETED
$ sudo udhcpc -i wlan0

udhcpc: started, v1.30.1

udhcpc: sending discover

udhcpc: sending select for 192.168.0.105

udhcpc: lease of 192.168.0.105 obtained, lease time 7200

ip: RTNETLINK answers: File exists

$ ping -I wlan0 8.8.8.8

PING 8.8.8.8 (8.8.8.8) from 192.168.0.105 wlan0: 56(84) bytes of data.

From 192.168.0.105 icmp_seq=1 Destination Host Unreachable

ping: sendmsg: No route to host

From 192.168.0.105 icmp_seq=2 Destination Host Unreachable

From 192.168.0.105 icmp_seq=3 Destination Host Unreachable

^C

--- 8.8.8.8 ping statistics ---

9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 8171ms

pipe 3

$ ping -I wlan0 www.baidu.com

PING www.a.shifen.com (183.240.99.224) from 192.168.0.105 wlan0: 56(84) bytes of data.

From 192.168.0.105 (192.168.0.105) icmp_seq=1 Destination Host Unreachable

From 192.168.0.105 (192.168.0.105) icmp_seq=2 Destination Host Unreachable

From 192.168.0.105 (192.168.0.105) icmp_seq=3 Destination Host Unreachable

From 192.168.0.105 (192.168.0.105) icmp_seq=4 Destination Host Unreachable

ping: sendmsg: No route to host

log显示已经成功分配IP给wlan0,但是ping 百度和谷歌的网站都pin不通。但是没有关系,下一期我会带大家如何分析STA/AP的这一期博客提到的问题。

结语

STA 和 AP 本质上是两套角色,也意味着两套测试方法。STA 重点看能不能扫到、连上、拿到 IP、稳定保持;AP 重点看能不能广播、能不能接入、能不能把流量正确转出去。`iw` 是这套流程里非常好用的底层工具,但它不是唯一工具。真正把 WiFi 跑顺的人,往往不是命令记得最多,而是知道每一步该看什么、该测什么、该怎么把问题切层。

如果你把这篇里的命令和流程跑熟了,后面不管是调 STA、调 AP,还是做兼容性测试、稳定性测试,都会顺很多。

相关推荐
InHand云飞小白6 小时前
【企业网络实战】分支机构灾备联网方案设计与实践
网络·企业网络·5g路由器·5gcpe·网路运维·it网络·链路故障
段一凡-华北理工大学6 小时前
2026 高炉炼铁智能化技术全景与演进路径~系列文章04:云-边-端协同架构:高炉智能化底层支撑体系
数据库·人工智能·深度学习·神经网络·安全·架构·高炉炼铁智能化
xlq223227 小时前
59.HTTP
网络·网络协议·http
@encryption7 小时前
计算机网络 --- OSPF
网络·tcp/ip·计算机网络
广州灵眸科技有限公司7 小时前
瑞芯微(EASY EAI)RV1126B ubuntu系统SDK源码获取
linux·运维·ubuntu
Irissgwe7 小时前
二、Socket编程UDP
linux·网络·网络协议·udp·socket·socket编程
jiayong237 小时前
微服务无感迁移上云方案深度解析
微服务·云原生·架构
麦聪聊数据7 小时前
数据服务轻量化:基于API架构的企业数据统一交付与消费方案
数据库·架构
互联网推荐官7 小时前
上海物联网应用开发全解析:技术路径、架构选型与落地约束
物联网·架构·开发经验·上海