Linux下的wlan0控制

news2024/12/26 20:42:22

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 的运行常常需要借助一个配置文件wpa_supplicant.conf,配置文件的最小内容写法↓ (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>


#常用command如下👇
wpa_cli [-p<path to ctrl sockets>] [-i<ifname>] [-hvB] [-a<action file>] \
[-P<pid file>] [-g<global ctrl>] [-G<ping interval>]  [command..]
  -h = help (show this usage text)
  -v = shown version information
  -a = run in daemon mode executing the action file based on events from
   wpa_supplicant
  -B = run a daemon in the background
  default path: /var/run/wpa_supplicant
  default interface: first interface found in socket path
commands:
  scan = request new BSS scan
  scan_results = get latest scan results
  add_network = add a network
  select_network <network id> = select a network (disable others)
  enable_network <network id> = enable a network
  disable_network <network id> = disable a network
  remove_network <network id> = remove a network
  
  set_network <network id> <variable> <value> = set network variables (shows
list of variables when run without arguments)

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.coloradmin.cn/o/2252686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保护数据,构建信任:联邦学习与差分隐私在AI训练中的实践

文章目录 摘要引言什么是联邦学习&#xff1f;AI模型训练中的数据隐私挑战数据隐私面临的主要问题 联邦学习与差分隐私技术联邦学习的关键流程代码示例差分隐私技术联邦学习与差分隐私结合案例 QA环节总结参考资料 摘要 在人工智能快速发展的背景下&#xff0c;模型训练对数据…

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

ThingsBoard规则链节点:Kafka 节点详解

引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能&#xff0c;允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中&#xff0c;Kafka 节点用于将消息发送到 Apache Kafka …

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

阿里云 Elastic Enterprise 正式上线!

在数据驱动的商业环境中&#xff0c;企业面临着日益复杂的数据管理与分析挑战。阿里云Elasticsearch服务不仅免费提供了 Elastic 原厂的 Enterprise 版本功能&#xff0c;更凭借其增强的数据管理能力、智能AI分析、先进的搜索技术以及全面的安全特性&#xff0c;致力于为企业提…

1201作业

思维导图 作业 头函数 #include <myhead.h> #include"linklist.h" int main(int argc, const char *argv[]) {//调用创建链表函数node_ptr L list_create();if(NULL L){return -1;}//调用头插函数list_insert_head(L,Q);list_insert_head(L,W);list_insert…

【Code First】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

大语言模型微调与 XTuner 微调实战

1 大语言模型微调 1.1 什么是微调 大语言模型微调&#xff08;Fine-tuning of Large Language Models&#xff09;是指在预训练的大型语言模型基础上&#xff0c;使用特定任务的数据进一步训练模型&#xff0c;以使其更好地适应和执行特定任务的过程&#xff0c;用于使LLM&am…

Vulnhub靶场 Matrix-Breakout: 2 Morpheus 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 文件上传2. 提权 0x04 总结 0x00 准备 下载连接&#xff1a;https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 介绍&#xff1a; This is the second in the Matrix-Br…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理&#xff0c;也算是我对于暑假的一个交代 &#xff01;&#xff01;&#xff01;注意&#xff1a;下面的操作是基于你已经安装了node.js和git的前提下进行的&#xff0c;并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

24.12.02 Element

import { createApp } from vue // 引入elementPlus js库 css库 import ElementPlus from element-plus import element-plus/dist/index.css //中文语言包 import zhCn from element-plus/es/locale/lang/zh-cn //图标库 import * as ElementPlusIconsVue from element-plus/i…

vxe-table 设置树表格斑马线条纹样式

vxe-table 设置斑马线条纹样式&#xff0c;通过设置 stripe 参数 官网&#xff1a;https://vxetable.cn 表格 斑马线条纹&#xff0c;通过设置 stripe 参数 <template><div><vxe-grid v-bind"gridOptions"></vxe-grid></div> </…

力扣3366.最小数组和

力扣3366.最小数组和 题目 题目解析及思路 题目要求对于数组进行两种操作&#xff0c;使最终数组和最小 注意&#xff1a;每个元素可以同时执行两种操作 考虑动归&#xff0c;暴力的遍历每种情况 代码 记忆化搜索 class Solution { public:// minArraySum 函数用于计算在…

缓存穿透,缓存雪崩,缓存击穿

缓存穿透&#xff1a; 客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样的缓存永远不会生效&#xff0c;这些请求会直接打到数据库中&#xff0c;造成数据库压力过大 解决方法&#xff1a;1.缓存空对象 //TODO 此方法中解决了缓存穿透问题&#xff08;使用了缓存…

【C++boost::asio网络编程】有关异步读写api的笔记

异步读写api 异步写操作async_write_someasync_send 异步读操作async_read_someasync_receive 定义一个Session类&#xff0c;主要是为了服务端专门为客户端服务创建的管理类 class Session { public:Session(std::shared_ptr<asio::ip::tcp::socket> socket);void Conn…

atcoder abc 382 lazy_tag线段树

A Daily Cookie 代码&#xff1a; #include <bits/stdc.h> using namespace std;typedef long long ll;int main() {int n, d;cin >> n >> d;string s;cin >> s;int cnt d;for(auto t: s) if(t .) cnt ;cout << min(n, cnt); } B Daily Co…

【NLP 8、normalization、sigmoid,softmax归一化函数】

"燃尽最后的本能&#xff0c;意志力会带你杀出重围" —— 24.12.2 1. Normalization&#xff08;归一化&#xff09; 归一化是将数据转换为具有统一尺度的形式&#xff0c;通常用于数据预处理阶段。常见的归一化方法包括 Min-Max归一化、Z-Score 归一化和 L…

深入学习指针(5)!!!!!!!!!!!!!!!

文章目录 1.回调函数是什么&#xff1f;2.qsort使用举例2.1使用qsort函数排序整形数据2.2使用sqort排序结构数据 3.qsort函数的模拟实现 1.回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递…

Matlab Simulink 电力电子仿真-单相电压型半桥逆变电路分析

目录 一、单相电压型半桥逆变电路仿真模型 1.电路模型 2.电路模型参数 二、仿真分析 三、总结 1.优缺点 2.应用场景 一、单相电压型半桥逆变电路仿真模型 1.电路模型 单相电压型半桥逆变电路是一种常见的逆变电路&#xff0c;主要用于将直流电源转换为交流电源。 &…

《Vue零基础入门教程》第十五课:样式绑定

往期内容 《Vue零基础入门教程》第六课&#xff1a;基本选项 《Vue零基础入门教程》第八课&#xff1a;模板语法 《Vue零基础入门教程》第九课&#xff1a;插值语法细节 《Vue零基础入门教程》第十课&#xff1a;属性绑定指令 《Vue零基础入门教程》第十一课&#xff1a;事…