STA WIFI 配置工具 --- wpa_supplicant、udhcpc

AP模式使用到了hostapd和轻量级的udhcpd服务端,STA模式用到了wpa_supplicant和轻量级的udhcpd客户端。

hostapd 和 wpa_supplicant 使用 libnl 实现 netlink 通信,因为和 nl80211 通信需要使用 netlink 方式,即 hostapd 和 wpa_supplicant 和 内核的 nl80211 模块通信实现无线网络控制。

STA模式控制 - wpa_supplicant

wpa_supplicant

wpa_supplicant 允许用户连接到受保护的无线网络,并提供了与各种认证和加密方法的兼容性。它主要包含wpa_supplicant与wpa_cli两个程序。wpa_supplicant是服务端,wap_cli是客户端,一般情况下通过 wpa_cli 操作WiFi。如果有特殊的需要,可以编写应用程序直接调用wpa_supplicant的接口直接开发。

wpa_supplicant的主要功能包括:

  • 1.Wi-Fi认证:wpa_supplicant支持多种Wi-Fi认证方法,如WPA-PSK(预共享密钥)、WPA-EAP(扩展认证协议)和IEEE 802.1X。这些认证方法允许用户通过密码、证书或其他身份验证凭据连接到受保护的Wi-Fi网络。
  • 2.加密:wpa_supplicant提供了对WPA和WPA2加密协议的支持,包括TKIP(Temporal Key Integrity Protocol)和CCMP(Counter Mode with Cipher Block Chaining Message Authentication Code Protocol)。这些协议用于确保无线数据传输的安全性和机密性。
  • 3.配置文件管理:wpa_supplicant使用配置文件来定义要连接的无线网络以及相关的认证和加密设置。配置文件包含网络名称(SSID)、密码、安全协议和其他网络参数。管理员可以编辑配置文件以配置所需的无线网络连接。
  • 4.动态网络选择:wpa_supplicant支持动态选择可用的无线网络。它可以扫描周围的Wi-Fi网络,并根据事先定义的优先级列表选择一个可用的网络进行连接。
  • 5.与其他网络管理工具集成:wpa_supplicant可以与Linux系统中的其他网络管理工具集成,如NetworkManager或systemd-networkd。这样,它可以与这些工具共享网络配置信息,并通过这些工具提供的界面进行无线网络连接管理。

wpa_supplicant框架如下:

 

相关使用指令:

打开 wifi

ifconfig wlan0 up

wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_config.conf && udhcpc -i wlan0

关闭 wifi

ifconfig wlan0 down

killall wpa_supplicant

配置文件

复制代码
复制代码
/data/cfg/wpa_supplicant.conf


ctrl_interface=/var/run/wpa_supplicant
ap_scan=1 #这个配置使wpa_cli命令配置的热点保存到conf文件里面(wpa_clisave_config)
network={
    ssid="D-Link_DIR-823G"
    psk="12345678"    # 即使没有密码也要填写 8~63 个字符,否则启动 reconfigure FAIL
    key_mgmt=NONE  # 无密码填 NONE, 有则扫描获取加密方式,如WPA-PSK
}
复制代码
复制代码

ctrl_interface指向的是一个目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0,这是local socket address,这是 wpa_cli 程序和后台程序wpa_supplicant进行通信的桥梁

重新读取配置文件并重连:

wpa_cli -i wlan0 -p /var/run/wpa_supplicant reconfigure

wpa_cli -i wlan0 -p /var/run/wpa_supplicant reconnect

扫描周边 AP:

wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan

wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan_results

查看连接情况:

wpa_cli -i wlan0 -p /var/run/wpa_supplicant status   

连接路由器方法

1、直接修改配置文件

2、通过脚本修改配置文件,比如

复制代码
#!/bin/sh
SSID=$1
PASSWORD=$2
CONF=/tmp/wpa_supplicant.conf

cp /etc/wpa_supplicant.conf $CONF
echo "connect to WiFi ssid: $SSID, Passwd: $PASSWORD"
sed -i "s/SSID/$SSID/g" $CONF
sed -i "s/PASSWORD/$PASSWORD/g" $CONF
killall wpa_supplicant
sleep 1
wpa_supplicant -B -i wlan0 -c $CONF
复制代码

 

复制代码
/etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1

network={
        ssid="SSID"
        psk="PASSWORD"
        key_mgmt=WPA-PSK
}
复制代码

 

3、通过 wpa_cli 配置

复制代码
#加密:
wpa_cli -i wlan0 -p /var/run/wpa_supplicant remove_network 0
wpa_cli -i wlan0 -p /var/run/wpa_supplicant ap_scan 1
wpa_cli -i wlan0 -p /var/run/wpa_supplicant add_network
wpa_cli -i wlan0 -p /var/run/wpa_supplicant set_network 0 ssid "dlink"
wpa_cli -i wlan0 -p /var/run/wpa_supplicant set_network 0 key_mgmt WPA-PSK
wpa_cli -i wlan0 -p /var/run/wpa_supplicant set_network 0 psk '"12345678"'
wpa_cli -i wlan0 -p /var/run/wpa_supplicant select_network 0
wpa_cli -i wlan0 -p /var/run/wpa_supplicant save_config # 保存上述配置到conf文件


#不加密:
wpa_cli -i wlan0 -p /var/run/wpa_supplicant remove_network 0
wpa_cli -i wlan0 -p /var/run/wpa_supplicant ap_scan 1
wpa_cli -i wlan0 -p /var/run/wpa_supplicant add_network
wpa_cli -i wlan0 -p /var/run/wpa_supplicant set_network 0 ssid "dlink"
wpa_cli -i wlan0 -p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
wpa_cli -i wlan0 -p /var/run/wpa_supplicant select_network 0
wpa_cli -i wlan0 -p /var/run/wpa_supplicant save_config
复制代码

 

udhcpc

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

udhcpc的主要功能包括:

  • 1.DHCP客户端:udhcpc作为一个轻量级的DHCP客户端,可以与DHCP服务器进行通信,并请求分配给它的网络配置信息。
  • 2.IP地址和配置管理:udhcpc负责接收从DHCP服务器分配的IP地址、子网掩码、默认网关和DNS服务器等网络设置,并将这些配置应用于Linux设备的网络接口。
  • 3.租约管理:udhcpc可以处理租约的续订和释放。租约是DHCP服务器提供的一段时间内的IP地址使用权限,udhcpc负责确保在租约到期之前更新租约或释放IP地址。
  • 4.脚本支持:udhcpc具有与外部脚本交互的功能,允许管理员编写自定义脚本来处理接收到的网络配置信息。这些脚本可以根据需要执行各种操作,如配置其他网络参数、启动服务等。
  • 5.日志记录:udhcpc可以生成日志,记录与DHCP过程相关的事件和错误信息。这对于故障排除和监视DHCP客户端的操作非常有用。

要使用udhcpc,你需要在Linux系统上安装包含udhcpc二进制文件的软件包(通常称为"busybox")。然后,可以使用命令行界面执行udhcpc来启动DHCP客户端并获取网络配置信息。

 

dhcpd 、dhcpc 和 udhcpd 、udhcpc对比介绍

udhcpd和dhcpd是两种不同的DHCP服务器软件,udhcpc和dhcpc是两种不同的DHCP客户端软件。

  • udhcpd、udhcpc:udhcpd是一个轻量级的DHCP服务器,udhcpc是一个轻量级的DHCP客户端,通常与udhcpd服务器一起使用。它通常在嵌入式系统和小型网络中使用。它由BusyBox项目提供,并且具有简单的配置和较少的功能。它适用于资源受限的设备或需要简单DHCP服务的环境。 udhcpc适用于嵌入式系统和小型网络环境,可以请求并获取IP地址、子网掩码、默认网关和其他相关的DHCP选项。
  • dhcpd、dhcpc:dhcpd(ISC DHCP)是Internet Systems Consortium开发和维护的标准DHCP服务器软件,dhcpc是一种更通用的DHCP客户端,也称为ISC DHCP客户端,也称为ISC DHCP客户端。它是一个功能强大且广泛使用的DHCP服务器,支持复杂的网络环境和功能。它可以在大型企业网络、ISP和其他需要全面DHCP支持的场景中使用。

它支持从DHCP服务器获取IP地址、配置DNS服务器、设置主机名等。

如果你只需要一个基本的DHCP服务器和客户端,并且希望保持系统资源的最小利用,那么udhcpd和udhcpc可能是一个不错的选择。但如果需要更高级的功能、灵活性和可扩展性,那么dhcpd和dhcpc可能更适合。

 

 

 

posted @   流水灯  阅读(491)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-06-17 objcopy 格式转换
2021-06-17 链接操作
2021-06-17 C 库函数 --- fflush() 强制清空缓冲区
点击右上角即可分享
微信分享提示