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
相关推荐
iamBailey3 分钟前
无核显主机U盘安装Ubuntu和N卡驱动和cuda-toolkit踩坑记录
linux·运维·ubuntu
坐井观老天10 分钟前
在 Ubuntu 20.04 上安装和使用GCC/G++
linux·ubuntu
sup爱豆的笑容12 分钟前
Hackathon靶机系列Hackathon2
linux·网络·安全·web安全
努力努力不秃头!25 分钟前
【Linux相关】服务器无网情况配置conda
linux·服务器·python·ubuntu·http·ssh·conda
哲学之窗41 分钟前
matlab 中的 bug
linux·前端·bug
LateBloomer7771 小时前
Linux进程操作(上)
linux·笔记·学习·ubuntu·操作系统
皓月盈江2 小时前
wordpress网站首页底部栏显示网站备案信息
linux·服务器·wordpress·网站备案·footer.php·主题编辑器·网站底部添加备案信息
洪大宇2 小时前
开发一套ERP 第八弹 RUst 插入数据
linux
LeonNo113 小时前
Linux:systemd进程管理【1】
linux·运维·服务器