在linux开发中wifi是很常见的一个工作,wifi有STA模式和AP模式,今天分享下如何使用工具在Linux中控制wifi。
作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
今天介绍的是AP和STA的wifi模式控制,AP热点模式使用到了hostapd和轻量级的udhcpd服务端,STA客户端模式用到了wpa_supplicant和轻量级的udhcpd客户端。
hostapd是一个用于创建和管理无线局域网(WLAN)的软件。它允许将计算机或设备转换为独立的无线接入点,使用户可以连接到该接入点并与局域网中的其他设备进行通信。
hostapd的主要功能包括:
1.网络身份验证:hostapd支持各种网络身份验证方法,如预共享密钥(PSK)、扩展认证协议(EAP)等。这些方法可用于验证连接到无线接入点的客户端设备,并确保只有经过身份验证的设备可以访问网络。
2.加密和安全性:hostapd提供了多种加密选项,例如WPA(Wi-Fi Protected Access)和WPA2,用于保护无线网络通信的安全性。它还支持RADIUS服务器进行身份验证和账户管理,增强了网络的安全性。
3.频道选择和管理:hostapd允许管理员选择无线频道以避免干扰,并允许配置其他无线参数,如传输速率、功率控制等。这些功能有助于优化无线网络的性能和稳定性。
4.MAC地址过滤:hostapd支持MAC地址过滤,管理员可以设置允许或禁止特定设备连接到无线网络。这有助于增加网络的安全性,并允许管理员限制网络访问。
5.日志和监控:hostapd可以生成详细的日志记录,以便管理员可以监视无线网络的活动。这些日志可用于故障排除、性能优化和安全审计等目的。
总体而言,hostapd是一个功能强大的软件,适用于构建和管理各种类型的无线网络,包括家庭网络、企业网络和公共场所的无线热点。它提供了广泛的配置选项和安全功能,使管理员能够定制和保护他们的无线网络。
udhcpd(Micro Dynamic Host Configuration Protocol daemon)是一个轻量级的DHCP服务器软件,用于在Linux系统上提供动态主机配置协议(DHCP)服务。它允许管理员将Linux设备配置为DHCP服务器,为连接到网络的客户端分配IP地址和其他网络配置信息。
udhcpd的主要功能包括:
1.IP地址分配:udhcpd负责从预定义的IP地址池中分配可用的IP地址给客户端设备。它可以根据配置的子网掩码和租约时间等参数生成并管理IP地址。
2.DHCP选项:udhcpd支持在DHCP响应中提供各种可选的DHCP选项,包括子网掩码、默认网关、DNS服务器、NTP服务器和其他自定义选项。这些选项可以通过udhcpd的配置文件进行设置。
3.租约管理:udhcpd跟踪每个分配给客户端的IP地址租约,并处理租约的续约、释放和过期。它确保客户端在租约到期之前更新租约或释放IP地址。
4.简单配置:udhcpd具有简单的配置,以便快速设置基本的DHCP服务器功能。配置文件包含了一些必要的参数,如IP地址池范围、子网掩码、租约时间等。
5.日志记录:udhcpd可以生成日志,记录与DHCP分配相关的事件和错误信息。这些日志对于故障排除和监视DHCP服务器的操作非常有用。
要使用udhcpd,你需要在Linux系统上安装包含udhcpd二进制文件的软件包(通常称为"busybox")。然后,可以通过编辑udhcpd的配置文件(通常是/etc/udhcpd.conf)来进行必要的设置,例如定义IP地址池、子网掩码、默认网关和DNS服务器等。
这里做一个简单示例验证 hostapd.conf配置文件
interface=wlan0其中hw_mode是wifi制式,a代表是5g,g代表2.4g,如下2.4G我可以这么写:
hw_mode=g详细配置细节可以看这里:
hostapd使用配置文件启一个热点:
hostapd -B hostapd.conf执行情况如下:
root@root:~# hostapd -B hostapd.conf这时候我们就可以用手机或者频谱仪看到对应频段有名称为test_lyn的wifi出现,不过我们还需要dhcp工具进行分配IP,不然wifi能看到但是无法分配IP,需要一个dhcp服务端配合使用。
udhcpd.conf配置文件
start 192.168.1.20详细配置细节可以看这里:https://codeantenna.com/a/vquDiKMjJM
udhcpd使用配置文件启动:udhcpd -f udhcpd.conf或者使用log输出启动udhcpd -fS udhcpd.conf
完整的启动流程:
ifconfig wlan0 down
hostapd -B hostapd.conf
udhcpd -f udhcpd.conf
ifconfig wlan0 192.168.1.1
ifconfig wlan0 up
对应的客户端连接该wifi之后:
wpa_supplicant是一个开源的Wi-Fi客户端软件,用于在Linux系统上实现WPA(Wi-Fi Protected Access)和WPA2协议的认证和加密功能。它允许用户连接到受保护的无线网络,并提供了与各种认证和加密方法的兼容性。
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。这样,它可以与这些工具共享网络配置信息,并通过这些工具提供的界面进行无线网络连接管理。
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客户端并获取网络配置信息。
wpa_supplicant.conf配置文件
network={详细配置细节可以看这里:https://blog.csdn.net/qq_22716879/article/details/51416322
wpa_supplicant进行连接wifi:
wpa_supplicant -B -D nl80211 -i wlan0 -c wpa_supplicant.conf 执行
$ wpa_supplicant -B -D nl80211 -i wlan0 -c wpa_supplicant.confudhcpc -b -i wlan0 -t 1 -T 1 -A 1 -R -H lyn_111该命令是针对嵌入式Linux系统中的网络配置工具udhcpc的使用。下面是各个选项的解释:
-b: 在后台运行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可能更适合。
iw是一个Linux上的强大工具,用于配置和监视无线设备及其连接。它提供了广泛的功能,包括:
使用iw时,你需要指定要操作的无线接口名称(例如wlan0)。然后,可以通过执行各种子命令和选项来完成特定的任务。例如,以下是一些常用的iw命令示例:
iw dev wlan0 scan: 扫描无线网络并列出可用的网络信息。查看频点 iw list
扫描wifi iw dev wlan0 scan | grep SSID:
查看国家码 iw reg get
设置国家码 iw reg set JM
查看连接状态iw dev wlan0 link
iwinfo是一个用于获取无线网络接口信息的工具,它提供了与硬件驱动程序交互的接口。与iw相比,iwinfo的功能较为有限,但它对于快速查看和监视无线接口状态非常有用。
使用iwinfo时,你需要指定要查询的无线接口名称(例如wlan0)。以下是一些常见的iwinfo命令示例:
iwinfo wlan0 info: 显示无线接口的基本信息,如SSID、频道、信号强度等。我iwinfo工具命令
root@root:~# iwinfo wlan0查看连接 iwinfo wlan0 assoclist
查看设置的频点 iwinfo wlan0 freq
查看功率 iwinfo wlan0 txpowerlist
查看扫描到的wifi iwinfo wlan0 scan | grep ESSID
此外还有些查看设备连接的一些命令arp -a或者cat /proc/net/arp
这就是我自己在linux wifi操作的分享。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
欢迎光临 谷动谷力 (http://bbs.sunsili.com/) | Powered by Discuz! X3.2 |