Linux下的wlan0控制

WIFI常用的两种模式:STA / AP

1. STA模式:客户端

嵌入式的系统下常常要手动配置wifi,和IP地址才能开始上网,关于STA模式下,常用的wifi配置工具有wpa_supplicant和轻量级的udhcpc客户端。

1.1wpa_supplicant 最小配置

wpa_supplicant是一个开源的Wi-Fi客户端软件,用于在Linux系统上实现WPA(Wi-Fi Protected Access)和WPA2协议的认证和加密功能。它允许用户连接到受保护的无线网络,并提供了与各种认证和加密方法的兼容性。现在大部分无线网络使用 WPA/WPA2 加密,最少需要配置 wpa_supplicant 才能连接网络。另外,wpa_supplicant 目前只能连接到已经配置好 ESSID 的无线网络。
其实 wpa_supplicant 还有一个前端工具 wpa_cli👉:::wpa_supplicant 和 wpa_cli 的关系就像服务和客户端的关系,后台运行 wpa_supplicant,使用 wpa_cli 来搜索、设置、和连接网络。不过 wpa_cli 并不是必须的软件。直接使用wpa_supplicant 就可以完成 wifi 配置 *

wpa_supplicant 的运行常常需要借助一个配置文件,配置文件的最小内容写法↓ (priority越大,优先级越高)

bash 复制代码
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
        ssid="YSSS"
        psk="12345687"
        key_mgmt=WPA-PSK
        priority=3
}
network={
        ssid="H3C"
        psk="12345687"
        key_mgmt=WPA-PSK
        priority=2
}

配置文件写完后即可尝试连接👇

bash 复制代码
wpa_supplicant -B -D nl80211 -i wlan0 -c wpa_supplicant.conf 
参数 作用
-B 守护进程模式(后台)
-D 驱动类型,一般没什么变化
-i 指定网卡
-c 指定配置文件

1.2 udhcpc 获得IP

udhcpc是一个用于在Linux系统上获取和管理动态主机配置协议(DHCP)客户端的小型工具。它用于从DHCP服务器自动获取IP地址、子网掩码、默认网关和DNS服务器等网络配置信息,以便将Linux设备连接到网络并使其能够进行通信。
wpa_supplicant 建立连接后需要手动配置IP👇

bash 复制代码
udhcpc -b -i wlan0 -t 1 -T 1 -A 1 -R -H lyn_111
bash 复制代码
-b: 在后台运行udhcpc,以守护进程的方式工作。
-i wlan0: 指定接口为wlan0,即无线网络接口。
-t 1: 设置超时时间为1秒。如果在指定时间内无法获取IP地址,则停止尝试。
-T 1: 设置重试间隔为1秒。在每次尝试之间等待指定的时间。
-A 1: 启用ARP检查。在获取IP地址之前,先通过发送ARP请求来检查该地址是否已被使用。
-R: 使用服务器提供的IP地址。通常情况下,udhcpc会根据DHCP服务器提供的IP地址进行配置,而不是使用静态IP地址。
-H lyn_111: 设置主机名为"lyn_111"。主机名是在网络中用于标识设备的名称。
综上所述,该命令将以守护进程方式在后台运行udhcpc,并使用wlan0接口进行网络配置。它将在1秒内尝试获取IP地址,每次尝试之间等待1秒。在获取IP地址之前会进行ARP检查,并使用DHCP服务器提供的IP地址进行配置。此外,还设置了主机名为"lyn_111"。

下面是一个用 WPA supplicant 和 DHCP 连接无线网络的完整示例

bash 复制代码
[Linux]$ ip link set dev wlan0 up
[Linux]$ wpa_supplicant -B -i wlp6s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
[Linux]$ dhcpcd -i wlan0 

要使用静态 IP,请将 dhcpcd 命令替换为:
[Linux]$ ip addr add 192.168.0.10/24 broadcast 192.168.0.255 dev wlan0 
[Linux]$ ip route add default via 192.168.0.1

1.3 wpa_cli 小工具

wpa_supplicant 是一个客户端程序,用于管理和处理无线网络连接。它负责与无线硬件驱动程序(如 iwlwifi)交互,进行无线网络扫描、选择和连接,并处理 WPA、WPA2、WEP 等加密协议。
wpa_cli 是一个命令行客户端,用于与 wpa_supplicant 进行交互。它通过控制接口与wpa_supplicant 通信,可以查询状态、修改设置、触发连接等操作。wpa_cli 提供了一个交互式控制台,允许用户在命令行下查看、管理和诊断 Wi-Fi 连接。
在实际使用中,wpa_supplicant 通常在后台运行,负责自动处理无线连接,而 wpa_cli 用于手动调试、查看状态或进行控制。

bash 复制代码
#扫面附近wifi
wpa_cli -i wlan0 scan
#查看扫描结果
wpa_cli scan_results
#查看连接状态
wpa_cli status
#查看wpa_supplicant 中配置wifi信息
wpa_cli  list_network
#切换wifi
wpa_cli select_network <network_id>

wpa_cli也可直接进入命令交互状态

bash 复制代码
[root@luckfox data]# wpa_cli
Selected interface 'wlan0'
Interactive mode
> scan
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
scan_result
> bssid / frequency / signal level / flags / ssid
dc:65:55:58:5e:32       2437    -19     [WPA2-PSK-CCMP][ESS]    H3C_YS
98:97:cc:79:e5:8b       2437    -37     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_YS
a2:97:cc:79:e5:8b       2437    -38     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_YS_LOT
a0:10:77:22:cc:60       2412    -33     [WPA2-PSK-CCMP][ESS]    YS
f4:84:8d:86:23:87       2412    -47     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_YS_M_2.4G

> add_network
4
> set_network 4 ssid "TP-LINK_YS_M_2.4G"
OK
> set_network 4 psk "ys12345687"
OK
> enable_network 4
OK
> list_network
network id / ssid / bssid / flags
0       4G UFI-0E30     any     [DISABLED]
1       YS      any     [DISABLED]
2       H3C_YS  any     [CURRENT]
3       yesen   any     [DISABLED]
4       TP-LINK_YS_M_2.4G       any
> quit

2. AP : 接入点模式

2.1 hostapd 配置

hostapd是一个用于创建和管理无线局域网(WLAN)的软件。可以将普通的无线网卡转变为一个无线热点,从而允许其他设备连接。

配置 hostapd 需要创建一个配置文件,通常存放在 /etc/hostapd/hostapd.conf 或其他自定义路径。以下是一个基本的配置示例👇

bash 复制代码
interface=wlan0        # 无线网卡的接口名称
driver=nl80211         # 使用 nl80211 驱动(现代的驱动接口,适用于大多数 Wi-Fi 网卡)
ssid=MyAccessPoint     # 无线网络名称(SSID)
hw_mode=g              # 设置 2.4 GHz 频段 (a 代表 5 GHz,g 代表 2.4 GHz)
channel=6              # 无线信道,选择 1-11 (2.4 GHz)
auth_algs=1            # 允许 WPA 身份验证(1 代表 WPA)
wpa=2                  # 启用 WPA2 加密(2 代表 WPA2)
wpa_passphrase=yourpassword  # Wi-Fi 密码
wpa_key_mgmt=WPA-PSK   # 使用 PSK(预共享密钥)进行身份验证
rsn_pairwise=CCMP      # 使用 CCMP 加密(WPA2 的标准加密方法)

使用方式和wpa类似,如果网卡不支持sta和ap共存的话 ,要关闭 sta 模式

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

2.2 配置 udhcpd

hostapd 用于管理无线网络接口,使其充当接入点(AP),而 udhcpd 用于为连接到网络的客户端分配 IP 地址。将它们配合使用,可以在 Linux 系统上实现无线热点功能,并为接入的设备提供 DHCP 服务。

编辑/etc/udhcpd.conf配置文件

bash 复制代码
start 192.168.10.20  # DHCP 分配 IP 地址的起始地址
end 192.168.10.50    # DHCP 分配 IP 地址的结束地址
interface wlan0      # 监听的接口
opt dns 8.8.8.8      # DNS 服务器
opt router 192.168.10.1 # 默认网关
lease 864000         # 租约时间,单位为秒(这里是 10 天)

启动服务👇
udhcpd -f udhcpd.conf

AP模式的完整启动流程:

bash 复制代码
ifconfig wlan0 down

hostapd -B hostapd.conf

udhcpd -f udhcpd.conf

ifconfig wlan0 192.168.10.1

ifconfig wlan0 up
相关推荐
茫忙然11 分钟前
U 盘搭建免驱 Linux 便携系统教程
linux·服务器
一起逃去看海吧1 小时前
dify-03
java·linux·开发语言
fengyehongWorld1 小时前
Linux 根据端口进行的相关查询
linux
lihao lihao1 小时前
linux匿名管道
linux·运维·服务器
うちは止水1 小时前
weston出图调试
linux·wayland·weston
STDD2 小时前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格2 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801683 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng3 小时前
Linux LCD驱动
linux·运维·服务器