WiFi开发相关的基础工具:iwconfig、iwlist、wpa_supplicant、hostapd(详解)
它可以用于配置无线网络接口的参数,例如网络名称、密码、加密方式等。iwlist是一个用于列出无线设备信息的命令行工具,它可以获取无线接口的详细信息,包括可用频率、速率、加密密钥、电源管理属性等各种参数。此外,hostapd还支持各种不同的无线信道和频段,例如2.4GHz、5GHz等,可以根据需要进行配置。iwconfig是Linux下的一个命令,它用于配置无线网络接口,可以显示和更改无线网卡的大部
1. iwconfig
1.1 iwconfig语法
iwconfig是Linux下的一个命令,它用于配置无线网络接口,可以显示和更改无线网卡的大部分参数。使用iwconfig的一般语法如下:
iwconfig [interface] [essid {NN|on|off}]
[nwid {NN|on|off}]
[mode {managed|ad-hoc|...}
[freq N.NNNN[k|M|G]]
[channel N]
[ap {N|off|auto}]
[sens N]
[nick N]
[rate {N|auto|fixed}]
[rts {N|auto|fixed|off}]
[frag {N|auto|fixed|off}]
[enc {NNNN-NNNN|off}]
[power {period N|timeout N}]
[retry {limit N|lifetime N}]
[txpower N {mW|dBm}]
[commit]
- 其中,
[interface]
是要配置的网络接口名称,例如wlan0; [essid {NN|on|off}]
是设置无线网卡的ESSID(扩展服务集标识);[nwid {NN|on|off}]
是设置无线网卡的工作模式;[mode {managed|ad-hoc|...}
是设置无线网卡的工作模式,包括managed(管理模式)和ad-hoc(对等模式);[freq N.NNNN[k|M|G]]
是设置无线网卡的频率;[channel N]
是设置无线网卡的信道;[ap {N|off|auto}]
是设置无线网卡是否连接到Access Point(接入点);[sens N]
是设置无线网卡的灵敏度;[nick N]
是设置无线网卡的别名;[rate {N|auto|fixed}]
是设置无线网卡的数据传输速率;[rts {N|auto|fixed|off}]
是设置无线网卡的RTS阈值;[frag {N|auto|fixed|off}]
是设置无线网卡的分片阈值;[enc {NNNN-NNNN|off}]
是设置无线网卡的加密类型;[power {period N|timeout N}]
是设置无线网卡的电源管理参数;[retry {limit N|lifetime N}]
是设置无线网卡的重试次数;[txpower N {mW|dBm}]
是设置无线网卡的发射功率;[commit]
是提交配置更改。
1.2 实际测试
显示无线网卡配置信息:
iwconfig wlan0
设置无线网卡ESSID(域ID):
iwconfig wlan0 essid "MyNetwork"
设置无线网卡工作模式为Managed(管理模式):
iwconfig wlan0 mode managed
设置无线网卡频率为2.412GHz:
iwconfig wlan0 freq 2.412GHz
设置无线网卡信道为1:
iwconfig wlan0 channel 1
连接到名为"MyNetwork"的接入点:
iwconfig wlan0 ap MyNetwork
设置无线网卡接收灵敏度为-80dBm:
iwconfig wlan0 sens -80
设置无线网卡传输速率为11Mbit/s:
iwconfig wlan0 rate 11M
设置无线网卡RTS阈值为2304bytes:
iwconfig wlan0 rts 2304
设置无线网卡分片阈值为2346bytes:
iwconfig wlan0 frag 2346
设置无线网卡加密类型为WPA2-PSK:
iwconfig wlan0 enc WPA2-PSK
启用无线网卡电源管理功能:
iwconfig wlan0 power on
设置无线网卡重传次数限制为3次:
iwconfig wlan0 retry 3
设置无线网卡发射功率级别为15dBm:
iwconfig wlan0 txpower 15dBm
设置无线网卡的工作模式为Ad-hoc模式:
iwconfig wlan0 mode ad-hoc
设置无线网卡的传输功率为最大值:
iwconfig wlan0 txpower 30(有些无线网卡可能不支持这个参数)
显示无线网卡的帮助信息,包括可用参数和用法:
iwconfig --help
提交配置更改并退出iwconfig:
iwconfig wlan0 commit(有些无线网卡可能不支持这个参数)
2. iwlist
2.1 iwlist
iwlist是一个用于列出无线设备信息的命令行工具,它可以获取无线接口的详细信息,包括可用频率、速率、加密密钥、电源管理属性等各种参数。以下是iwlist的基本语法和参数用法:
iwlist [interface] [scan | frequency | rate | keys | power
| txpower | retry | event | auth
|wpa | genie | modulation]
参数说明:
interface
:要查询信息的无线接口名称,例如wlan0。scan
:列出范围内的访问点和Ad-Hoc单元的列表,以及可选的一大堆关于它们的信息(ESSID、质量、频率、模式等)。frequency
:列出设备中可用频率的列表和已定义频道的数量。rate
:列出设备支持的速率。keys
:列出支持的加密密钥大小,并列出设备中设置的所有加密密钥。power
:列出设备的各种电源管理属性和模式。txpower
:列出设备上可用的各种传输功率。retry
:列出设备上的传输重试限制和重试生存期。event
:列出设备支持的无线事件。auth
:列出最近设置的WPA身份验证参数。wpa
:列出设备中设置的所有WPA加密密钥。genie
:列出设备中设置的通用信息元素(用于WPA支持)。modulation
:列出设备支持的调制和当前启用的调制。
2.2 实际测试
列出wlan0接口的可用频率和已定义频道的数量:
iwlist wlan0 frequency
列出wlan0接口支持的所有速率:
iwlist wlan0 rate
列出wlan0接口设置的所有加密密钥:
iwlist wlan0 keys
列出wlan0接口的电源管理属性和模式:
iwlist wlan0 power
列出wlan0接口可用的各种传输功率:
iwlist wlan0 txpower
列出wlan0接口上的传输重试限制和重试生存期:
iwlist wlan0 retry
列出wlan0接口支持的无线事件:
iwlist wlan0 event
列出wlan0接口最近设置的WPA身份验证参数:
iwlist wlan0 auth
列出wlan0接口中设置的所有WPA加密密钥:
iwlist wlan0 wpa
列出wlan0接口设置的通用信息元素(用于WPA支持):
iwlist wlan0 genie
列出wlan0接口支持的调制和当前启用的调制:
iwlist wlan0 modulation
3. wpa_supplicant
3.1 wpa_supplicant
wpa_supplicant是一个无线网络加密认证的工具,支持WPA、WPA2等加密方式。它可以用于配置无线网络接口的参数,例如网络名称、密码、加密方式等。以下是wpa_supplicant的基本语法和参数用法:
wpa_supplicant [options] <command> [parameters]
参数说明:
options
:可选的启动选项,例如-B
用于后台运行,-d
用于调试输出,-p
用于指定密码等。<command>
:可用的命令包括add
(添加网络),remove
(删除网络),reconfigure
(重新配置网络),enable
(启用网络),disable
(禁用网络)等。parameters
:根据命令的不同而有所不同,例如添加网络时需要指定网络名称、密码等。
3.2 实际测试
添加一个新的网络并设置密码:
wpa_supplicant -B -i<interface> -c<config_file> -D<driver> -p<driver_param> -b<br_ifname> add <network_name> <password>
删除一个已有的网络:
wpa_supplicant -B -i<interface> -c<config_file> -D<driver> -p<driver_param> -b<br_ifname> remove <network_name>
重新配置已有的网络:
wpa_supplicant -B -i<interface> -c<config_file> -D<driver> -p<driver_param> -b<br_ifname> reconfigure <network_name>
启用一个已有的网络:
wpa_supplicant -B -i<interface> -c<config_file> -D<driver> -p<driver_param> -b<br_ifname> enable <network_name>
禁用一个已有的网络:
wpa_supplicant -B -i<interface> -c<config_file> -D<driver> -p<driver_param> -b<br_ifname> disable <network_name>
除了上述提到的命令和参数,wpa_supplicant还有一些其他的常用参数和用法,例如:
-c
:指定配置文件,用于存储网络配置信息。-i
:指定无线接口名称,例如wlan0。-D
:指定无线驱动名称,例如nl80211。-p
:指定无线驱动参数。-b
:指定Bridge接口名称(可选)。-B
:后台运行wpa_supplicant。-d
:调试输出。
另外,wpa_supplicant还有一些选项可以用来配置网络认证方式和加密方式等,例如:
-O
:设置Open认证模式。-W
:设置WPA认证模式。-E
:设置加密方式,例如WEP、WPA等。-s
:设置是否自动选择认证方式和加密方式。
4. hostapd
4.1 hostapd
hostapd是一个用于控制无线接入点的开源软件,它提供了各种参数来配置无线网络的属性和功能。以下是hostapd的基本语法和参数用法:
hostapd [options] <configuration_file>
参数说明:
options
:可选的启动选项,例如-B
用于后台运行,-d
用于调试输出等。<configuration_file>
:指定hostapd的配置文件,其中包含了各种无线网络的参数和设置。
在配置文件中,hostapd的参数可以分为不同的类别,例如通用参数、无线接口参数、无线安全参数等。以下是一些常用的参数和用法示例:
通用参数:
interface
: 指定无线网卡的名称,例如wlan0。driver
: 指定无线网卡驱动的名称。logger_syslog_level
: 设置日志记录的级别。logger_stdout_level
: 设置标准输出的日志级别。
无线接口参数:
ssid
: 设置无线接入点的名称。channel
: 指定无线信道。hw_mode
: 指定无线标准,例如802.11a、802.11b、802.11g或802.11n。bssid
: 设置BSSID(无线基站的地址)。ssid_broadcast
: 设置是否广播SSID。
无线安全参数:
auth_algs
: 指定认证算法,例如Open、WEP、WPA等。wpa
: 设置是否启用WPA加密。wpa_passphrase
: 设置WPA2-PSK的密码。wpa_key_mgmt
: 指定WPA密钥管理协议,例如WPA-PSK、WPA2-PSK等。rsn_pairwise
: 指定RSN(无线安全网络)对等加密算法,例如CCMP、TKIP等。
hostapd还有其他一些常用的参数和用法,例如:
max_num_sta
: 设置最大连接客户端数量。ssid_hidden
: 设置是否隐藏SSID。bridge
: 设置无线桥接模式。ieee802_1x
: 设置是否启用IEEE 802.1X认证。eap
: 设置EAP认证方式,例如PEAP、TLS等。ca_cert
: 设置CA证书路径。client_cert
: 设置客户端证书路径。private_key
: 设置私钥路径。
另外,hostapd还提供了各种选项来配置不同的功能,例如:
ieee80211n
: 设置是否启用802.11n功能。ht_capab
: 设置HT(High Throughput)能力集。vht_capab
: 设置VHT(Very High Throughput)能力集。wpa_gtk_rekey
: 设置WPA GTK重加密时间间隔(以秒为单位)。wpa_group_rekey
: 设置WPA组重加密时间间隔(以秒为单位)。wpa_ptk_rekey
: 设置WPA PTK重加密时间间隔(以秒为单位)。
此外、hostapd还有其他一些高级选项和用法,例如:
controller
: 设置无线控制器模式。mac_addr
: 设置无线网卡的MAC地址。use_old_auth_algorithms
: 设置是否使用旧的认证算法。ieee80211w
: 设置是否启用802.11w功能(无线管理帧保护)。ds_params
: 设置直接序列扩频(DSSS)参数。leap
: 设置是否启用LEAP认证。radius_server_clients
: 设置RADIUS服务器客户端列表。radius_server_auth_port
: 设置RADIUS服务器认证端口。
同时,hostapd还提供了各种无线信号处理和调试相关的参数,例如:
rts_threshold
: 设置RTS(请求发送信号)阈值。fragm_threshold
: 设置分片阈值。mac_debug
: 设置是否启用MAC调试输出。phy_debug
: 设置是否启用物理层调试输出。
除了上述提到的参数和选项,hostapd还有其他一些高级选项和用法,例如:
dynamic_vlan
: 设置是否启用动态VLAN功能。multi_bss
: 设置是否允许多个BSS(基本服务集)存在于相同的无线电频率中。wpa_strict_ciphers
: 设置是否强制使用指定的WPA加密算法。ieee80211d
: 设置是否启用802.11d功能(无线管理设备标识)。ieee80211h
: 设置是否启用802.11h功能(动态频率选择)。
同时,hostapd还提供了各种无线信号处理和调试相关的参数,例如:
beacon_int
: 设置信标间隔时间。dtim_period
: 设置DTIM(Delivery TIMing)周期。beacon_elem
: 设置信标元素。proberesp_elem
: 设置探测响应元素。assocresp_elem
: 设置关联响应元素。
hostapd还有其他一些高级选项和用法,例如:
* `wmm_enabled`: 设置是否启用WMM(无线多媒体扩展)功能。
* `wps_pushbutton`: 设置是否启用WPS(Wi-Fi保护设置)推按钮功能。
* `wps_config`: 设置WPS配置方法。
* `wps_pin`: 设置WPS个人识别码(PIN)。
同时,hostapd还提供了各种无线信号处理和调试相关的参数,例如:
* `rts_threshold_lo`: 设置RTS(请求发送信号)阈值(低)。
* `rts_threshold_hi`: 设置RTS阈值(高)。
* `fragmentation_threshold`: 设置分片阈值。
* `mac_preamble`: 设置MAC前导码类型。
* `long_frame_max_tx_count`: 设置长数据帧的最大传输次数。
* `short_frame_max_tx_count`: 设置短数据帧的最大传输次数。
此外,hostapd还支持各种不同的无线信道和频段,例如2.4GHz、5GHz等,可以根据需要进行配置。同时,还可以配置各种无线安全参数,例如WPA3、WPA3-Enterprise等。
4.2 实际测试
以下是一些hostapd参数的用法示例:
interface=wlan0
:指定无线网卡的名称为wlan0。ssid=test
:设置无线接入点的名称为test。hw_mode=g
:指定802.11协议为IEEE 802.11g。channel=6
:设置无线信道为6。driver=nl80211
:指定无线网卡驱动为nl80211。logger_syslog=-1
:关闭日志记录。logger_stdout=-1
:关闭标准输出日志记录。ieee80211n=1
:启用802.11n协议。wmm_enabled=1
:启用WMM功能。wps_pushbutton=1
:启用WPS推按钮功能。wps_config=2
:指定WPS配置方法为2(从无线设备配置)。wps_pin=12345670
:设置WPS个人识别码(PIN)为12345670。auth_algs=1
:启用Open认证算法。wpa=3
:启用WPA3加密。wpa_passphrase=password
:设置WPA3密码为password。wpa_key_mgmt=WPA-PSK
:指定WPA密钥管理协议为WPA-PSK。rsn_pairwise=CCMP
:指定RSN对等加密算法为CCMP。macaddr_acl=0
:除非在禁止列表否则允许MAC地址。accept_mac_file=/etc/hostapd.accept
:指定允许MAC列表文件所在路径为/etc/hostapd.accept。deny_mac_file=/etc/hostapd.deny
:指定禁止MAC列表文件所在路径为/etc/hostapd.deny。max_num_sta=10
:设置最大连接客户端数量为10。ssid_hidden=1
:隐藏SSID,使其不会在无线扫描时显示。bridge=br0
:设置无线桥接模式,将无线网卡和有线网络通过网桥连接起来。leap=1
:启用LEAP认证。radius_server_clients=server1,server2
:设置RADIUS服务器客户端列表,包括多个服务器地址。radius_server_auth_port=1812
:设置RADIUS服务器认证端口为1812。dynamic_vlan=1
:启用动态VLAN功能,可以根据客户端的请求动态分配VLAN。multi_bss=1
:允许多个BSS(基本服务集)存在于相同的无线电频率中。wpa_strict_ciphers=1
:强制使用指定的WPA加密算法。ieee80211d=1
:启用802.11d功能(无线管理设备标识)。ieee80211h=1
:启用802.11h功能(动态频率选择)。beacon_int=100
:设置信标间隔时间为100毫秒。dtim_period=2
:设置DTIM(Delivery TIMing)周期为2。beacon_elem=01005e00010b0f00060400020000000000576469737475616c496e74332e3001
:设置信标元素,用于传递各种信息给客户端。proberesp_elem=05042a0480337b6b548c365896953796d4540e94e6b97b89a6bc7c9d2d1df2cd69
:设置探测响应元素,用于回应客户端的探测请求。assocresp_elem=05042a0480337b6b548c365896953796d4540e94e6b97b89a6bc7c9d2d1df2cd69
:设置关联响应元素,用于回应客户端的关联请求。
除了上述提到的参数,hostapd还有其他一些高级选项和用法,例如:
control_interface=/var/run/hostapd
:设置控制接口的路径。logger_stdout=3
:将标准输出日志记录级别设置为3。logger_syslog=2
:将系统日志记录级别设置为2。driver=wlp3s0
:指定无线网卡驱动为wlp3s0。interface=wlan0:1
:指定无线网卡的名称为wlan0:1。ssid=test1
:设置无线接入点的名称为test1。hw_mode=g
:指定802.11协议为IEEE 802.11g。channel=7
:设置无线信道为7。macaddr_acl=2
:只允许在允许列表中的MAC地址连接。auth_algs=3
:启用Open认证算法和共享密钥认证算法。wpa=2
:启用WPA2加密。wpa_passphrase=password2
:设置WPA2密码为password2。wpa_key_mgmt=WPA-EAP
:指定WPA密钥管理协议为WPA-EAP。rsn_pairwise=CCMP
:指定RSN对等加密算法为CCMP。ieee80211w=2
:启用802.11w功能(管理帧保护)。
大家在使用时需要仔细阅读官方文档或相关资料,并根据具体的使用场景进行配置。希望可帮助到大家。
更多推荐
所有评论(0)