# iwlist

用于对 /proc/net/wireless 文件进行分析,得出无线网卡相关信息

# iwlist wlan0 scanning 搜索当前无线网络
# iwlist wlan0 frequen  显示频道信息
# iwlist wlan0 rate  	显示连接速度
# iwlist wlan0 power  	显示电源模式
# iwlist wlan0 txpower 	显示功耗
# iwlist wlan0 retry  	显示重试连接次数(网络不稳定查看)
# iwlist wlan0 ap 		显示热点信息
# iwlist --help 		显示帮助信息
# iwlist --version 		显示版本信息

搜索到的某一信道实例

pi@raspberrypi:~ $ iwlist wlan0 scanning
wlan0     Scan completed :
          Cell 01 - Address: 30:4A:26:50:75:48
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=70/70  Signal level=-8 dBm  
                    Encryption key:on
                    ESSID:"lyndon_7549"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
                              18 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=0000000000000000
                    Extra: Last beacon: 70ms ago

                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
          …………

每一个 Cell 代表一个无线网络,下面是部分字段含义:

Address:MAC 地址
Channel:信道
Frequency:中心频点
Quality:信号质量
Signal level:原始信号强度
ESSID:可以认为是 SSID,Wi-Fi 网络名
Bit Rates:波特率
Mode:Master(接入点 AP)
IEEE 802.11i/WPA2 Version 1 加密方式

# iwconfig

系统配置无线网络设备或显示无线网络设备信息。iwconfig 命令类似于 ifconfig 命令,但是他配置对象是无线网卡,它对网络设备进行无线操作,如设置无线通信频段

auto 		自动模式
essid 		设置 ESSID
nwid 		设置网络 ID
freq 		设置无线网络通信频段
chanel 		设置无线网络通信频段
sens 		设置无线网络设备的感知阀值
mode 		设置无线网络设备的通信设备
ap 			强迫无线网卡向给定地址的接入点注册
nick < 名字 > 	为网卡设定别名
rate < 速率 > 	设定无线网卡的速率
rts < 阀值 >		在传输数据包之前增加一次握手,确信信道在正常的
power 		无线网卡的功率设置

设置网卡为 monitor 模式,以支持转 802.11 报文

sudo ifconfig wlan1 down
sudo iwconfig wlan1 mode monitor
sudo ifconfig wlan1 up
sudo wireshark

# iw

iw 是一种新的基于 nl80211 的用于无线设备的 CLI 配置实用程序。它支持最近已添加到内核所有新的驱动程序。采用无线扩展接口的旧工具 iwconfig 已被废弃,强烈建议切换到 iw 和 nl80211。 Linux 内核的其余部分,iw 仍处于开发阶段。功能被随时添加。 iw 的唯一文档就是此页和 iw help 的输出。 请帮助扩大这个页面。 有一个页面列出 iwconfig 和 iw 的用例:替换 iwconfig.

# iw help    # 帮助
# iw list    # 获得所有设备的功能,如带宽信息(2.4GHz,和 5GHz),和 802.11n 的信息
# iw dev wlan0 scan    # 扫描
# iw event    # 监听事件
# iw dev wlan0 link    # 获得链路状态
# iw wlan0 connect foo    # 连接到已禁用加密的 AP,这里它的 SSID 是 foo
# iw wlan0 connect foo 2432  # 假设你有两个 AP SSID 都是 foo ,你知道你要连接的是在 2432 频道
# iw wlan0 connect foo keys 0:abcde d:1:0011223344    # 连接到使用 WEP 的 AP
# iw dev wlan1 station dump    # 获取 station 的统计信息
# iw dev wlan1 station get     # 获得 station 对应的 peer 统计信息
# iw wlan0 set bitrates legacy-2.4 12 18 24    # 修改传输比特率
# iw dev wlan0 set bitrates mcs-5 4    # 修改 tx HT MCS 的比特率
# iw dev wlan0 set bitrates mcs-2.4 10
# iw dev wlan0 set bitrates mcs-5    # 清除所有 tx 比特率和设置的东西来恢复正常
# iw dev  set txpower  []   # 设置传输功率
# iw phy  set txpower  []   # 设置传输功率
# iw dev wlan0 set power_save on  # 设置省电模式
# iw dev wlan0 get power_save  # 查询当前的节电设定
# iw phy phy0 interface add moni0 type monitor  # 添加一个 monitor 接口

实例

pi@raspberrypi:~ $ sudo iw dev wlan0 scan
BSS 30:4a:26:50:75:48(on wlan0)
	TSF: 0 usec (0d, 00:00:00)
	freq: 2412
	beacon interval: 100 TUs
	capability: ESS Privacy ShortSlotTime (0x0411)
	signal: -15.00 dBm
	last seen: 0 ms ago
	SSID: lyndon_7549
	Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0 
	DS Parameter set: channel 1
	ERP: Use_Protection Barker_Preamble_Mode
	Extended supported rates: 6.0 12.0 24.0 48.0 
	HT capabilities:
		Capabilities: 0x2c
			HT20
			SM Power Save disabled
			RX HT20 SGI
			No RX STBC
			Max AMSDU length: 3839 bytes
			No DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 4 usec (0x05)
		HT RX MCS rate indexes supported: 0-7
		HT TX MCS rate indexes are undefined
	HT operation:
		 * primary channel: 1	// 当前主信道
		 * secondary channel offset: no secondary // 因为 802.11n 中 40MHz 是通过一个 20MHz 主信道向上或向下绑定一个不重叠辅助 20MHz 信道来实现的,所以这个字段可设置 AP 通过什么方式来实现 40MHz; 设置为 1 表示第二信道是向上偏置,设置为 3 表示第二信道向下偏置,设置为 0 表示当期没有第二信道。
		 * STA channel width: 20 MHz	// 定义可用于传输给 STA 的信道带宽为 20MHz
		 * RIFS: 0	// 减短帧间间隔,1:开启,0:禁用
		 * HT protection: no
		 * non-GF present: 0
		 * OBSS non-GF present: 0
		 * dual beacon: 0
		 * dual CTS protection: 0
		 * STBC beacon: 0
		 * L-SIG TXOP Prot: 0
		 * PCO active: 0
		 * PCO phase: 0
	RSN:	 * Version: 1
		 * Group cipher: TKIP
		 * Pairwise ciphers: TKIP CCMP
		 * Authentication suites: PSK
		 * Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
	Extended capabilities:
	WMM:	 * Parameter version 1
		 * BE: CW 15-1023, AIFSN 3
		 * BK: CW 15-1023, AIFSN 7
		 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
		 * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
	Country: US	Environment: Indoor/Outdoor
		Channels [1 - 11] @ 16 dBm

# iwpriv

显示

iwpriv ra0 show [parameters]
序号 parameters 说明
1 driverinfo 驱动版本信息
2 stat STA TX/RX等统计信息。
3 stainfo STA信息,MAC地址/RSSI/MCS/Rate等。
4 stacountinfo STA TX/RX个数信息。
5 stasecinfo STA认证加密信息。
6 bainfo BlockAck信息。
7 connStatus AP-Clinet连接状态。
8 reptinfo MAC Repeater信息。
9 wdsinfo WDS连接列表。
10 igmpinfo IGMP Snooping列表。
11 mbss MBSS PHY 模式信息。
12 blockch DFS blocked 信道列表。
13 devinfo AP Mode, 信道, 带宽。
14 sysinfo WDEV信息。
15 trinfo TX/RX Ring配置信息
16 pwrinfo 功率内部信息
17 txqinfo TxQ信息
18 sta_tr AP BSSID/wcid等。
19 stat_reset 统计清零

设置

iwpriv ra0 set [parameters]=[Value]
iwpriv ra0 set Debug=3				// 设置 WLAN 驱动打印级别
iwpriv ra0 set CountryRegion=5		// 设置 2.4G 国家区域
iwpriv ra0 set CountryRegionABand=7	// 设置 5G 国家区域
iwpriv ra0 set SSID=11n-AP			// 设置 AP SSID
iwpriv ra0 set Channel=6			// 设置 WiFi 信道
iwpriv ra0 set BeaconPeriod=100		// 设置 Beacon 周期
iwpriv ra0 set TxPower=100			// 设置发射功率百分比
iwpriv ra0 set HideSSID=1			// 设置启用或禁用 SSID 隐藏
iwpriv ra0 set DisConnectSta=00:11:22:33:44:55	// 设置手动断开指定连接的 STA
iwpriv ra0 set DisConnectAllSta=1	// 设置手动断开所有连接的 STA
iwpriv ra0 set MaxStaNum=0			// 设置限制每个 BSS 关联客户端的最大数量
iwpriv ra0 set HwAntDiv=0			// 设置启动或禁用硬件天线分集
iwpriv ra0 set HtBw=1				// 设置 HT WLAN 带宽
iwpriv ra0 set VhtBw=1				// 设置启用或禁用 11AC 80MHz 带宽支持
iwpriv ra0 set HtAmsdu=0			// 设置启用或禁用 AMSDU
iwpriv ra0 set HtTxBASize=64		// 设置一个传输 burst 的 AMSDU 聚合大小的数量
iwpriv ra0 set SiteSurvey=			// 进行邻区扫描
iwpriv ra0 get_site_survey			// 显示邻区扫描结果
iwpriv ra0 get_mac_table			// 显示与 AP 关联的 STA 的 MAC 地址

# wpa_supplicant

wpa_supplicant 工具包含 wpa_supplicant 和 wpa_cli 这 2 个程序,其中 wpa_supplicant 程序作为服务端在后台运行,服务 wpa_cli 客户端的请求,从而实现 WiFi 的配置连接。wpa_supplicant 工具支持 wep、wpa、wpa2 等加密认证方式。 运行 wpa_supplicant,wpa_supplicant 程序作为 wpa_cli 的服务端,必须先启动后,才能给 wpa_cli 访问使用。

配置文件位置:/etc/wpa_supplicant/wpa_supplicant.conf

一般系统会自启 wpa_supplicant,如下:

wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211,wext

# wpa_cli

help [command]		// 显示使用帮助
interface 			// 显示接口
interface [ifname] 	// 选择接口
disconnect 			// 断开当期连接
list_networks		// 列出已配置的网络,信息包括:network id / ssid / bssid / flags
get_network <network id>  <ssid/psk/key_mgmt>	// 获取网络变量
signal_poll			// 获取信号参数

add_network			// 增加网络
list_networks		// 列出网络
set_network <network id> ssid "lyndon_7549"	// 设置指定网络的 ssid
set_network <network id> psk "zaqwsxcde"	// 设置指定网络的 psk
enable_network <network id>					// 使能指定网络

disable_network <network id>				// 禁用指定网络

status				// 查看当前状态
save_config			// 保存当前连接设置到 /etc/wpa_supplicant/wpa_supplicant.conf 文件

# rfkill

打开、关闭无线设备

rfkill [list]			// 列出无线设备
rfkill block bluetooth	// 按照设备类型禁用设备(例如 bluetooth wlan 或者 all)
rfkill unblock wlan		// 按照设备类型启用设备(例如 bluetooth wlan 或者 all)

# nmcli

  1. 安装
sudo apt install network-manager
  1. 创建 wifi 连接(SSID:myRouter,密码:12345678,默认使用设备 wlan0)的示例:
sudo nmcli device wifi connect myRouter password 12345678	

每次命令执行后,会在 /etc/NetworkManager/system-connections/ 目录下创建一个新文件来保存配置,重复执行则创建多个这样的文件。

给特定网络接口连接 wifi

sudo nmcli device wifi connect myRouter_5G password zaqwsxcde ifname wlan2
  1. 查看连接信息
ubuntu@ubuntu:~$ nmcli connection show
NAME         UUID                                  TYPE  DEVICE
MyHostspot   c05dd00e-c4da-4991-b4ad-3f5a6015500c  wifi  wlan1
myRouter     42991d1e-be17-46e7-9276-8b0ec4c445a9  wifi  wlan0
myRouter_5G  3e7eac4a-f79b-46c2-9edc-ac83a5a8d2e3  wifi  wlan2

查看某个连接的详细信息

nmcli connection show myRouter
  1. 删除 wifi 连接的示例:
sudo nmcli connection delete myRouter

在 /etc/NetworkManager/system-connections/ 目录下的 Samsung-printer 文件将被删除。

  1. 启动连接
sudo nmcli device connect wlan0
或
sudo nmcli connection up myRouter
  1. 关闭连接
sudo nmcli device disconnect wlan0
或
sudo nmcli connection down myRouter
  1. 创建热点
sudo nmcli device wifi hotspot ifname wlan1 con-name MyHostspot ssid hhtest password 12345678
  1. 设置某个连接为自动连接
$ sudo nmcli connection modify MyHostspot connection.autoconnect yes

设置后可用下面指令查看

nmcli connection show myRouter
  1. 扫描 wifi
nmcli device wifi list

# hostapd

hostapd 是用户态的守护进程。能够使得无线网卡切换为 master 模式,模拟 AP 功能,也就是我们所说的软 AP(Soft AP)。其功能就是作为 AP 的认证服务器,负责控制管理 stations 的接入和认证。

sudo hostapd /tmp/create_ap.wlan0.conf.PZlVR1FL/hostapd.conf

# hostapd_cli

hostapd_cli 是用于访问 hostapd 并且获取当前 ap 信息和对 ap 进行操作的客户端程序。

sudo hostapd_cli -p /tmp/create_ap.wlan0.conf.PZlVR1FL/hostapd_ctrl

参考:

iwlist/iwconfig/iw 命令
Wireless network configuration ( 简体中文 )
wpa_supplicant 常用操作 wpa_supplicant、wpa_cli 的使用 无屏幕和键盘配置树莓派 WiFi 和 SSH
树莓派(Raspberry Pi 3)开启和连接蓝牙
wpa_supplicant 配置与应用
软 AP 的实现 ——hostapd 的编译运行
树莓派 . 设置无线网卡为 AP 工作模式 (pi2 和 pi3)
NetworkManager —— nmcli 命令连接 WIFI 和创建热点
nmcli 命令使用
Linux 下软 AP 功能之 Hostapd 介绍
开发调试指令大全–(MTK开发调试命令)