WiFi开发相关的基础工具:iwconfig、iwlist、wpa_supplicant、hostapd(详解)

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功能(管理帧保护)。

        大家在使用时需要仔细阅读官方文档或相关资料,并根据具体的使用场景进行配置。希望可帮助到大家。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值