当前位置: 首页 > article >正文

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越大,优先级越高)

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
}

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

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👇

udhcpc -b -i wlan0 -t 1 -T 1 -A 1 -R -H lyn_111
-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 连接无线网络的完整示例

[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 用于手动调试、查看状态或进行控制。

#扫面附近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也可直接进入命令交互状态

[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 或其他自定义路径。以下是一个基本的配置示例👇

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 模式

hostapd -B /etc/hostapd/hostapd.conf

2.2 配置 udhcpd

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

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模式的完整启动流程:

ifconfig wlan0 down

hostapd -B hostapd.conf

udhcpd -f udhcpd.conf

ifconfig wlan0 192.168.10.1

ifconfig wlan0 up

http://www.kler.cn/a/415937.html

相关文章:

  • Day31 贪心算法 part05
  • redis机制详解
  • LangChain——HTML文本分割 多种文本分割
  • windows C#-语句
  • SQL进阶技巧:非等值连接--单向近距离匹配
  • LeetCode—15. 三数之和(中等)
  • 将服务器上的服务映射到本地使用
  • MarkDown-插入图片-图片url地址的生成获取方法
  • 分布式协同 - 分布式锁一二事儿
  • 【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
  • 从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用
  • 【分布式】分布式事务
  • 浅谈telnet和ping
  • ChatGPT 网络安全秘籍(三)
  • python pycharm与cmd中制表符不一样
  • 时间相关转换
  • 低空经济“蓄势腾飞”,数字样机保驾护航
  • 我们来学mysql -- 事务之概念(原理篇)
  • 深入浅出 Python 网络爬虫:从零开始构建你的数据采集工具
  • Qt知识之 1. Q_DECLARE_METATYPE和qRegisterMetaType
  • 基于Python制作一个简易UI界面
  • React Native学习笔记(一)
  • linuxmysqliptablesfirewalldtcpdump备份恢复常用命令
  • 【机器学习】多层神经网络中的误差反向传播算法与过拟合抑制技术的比较与优化
  • AI开发:支持向量机(SVM)入门教程- Python 机器学习
  • 23.100ASK_T113-PRO 移植opencv