标签:优先 ecif inf 命令 disabled app its ref 系统
作者:gc(at)sysin.org,主页:www.sysin.org请访问原文链接:<https://sysin.org/article/use-5ghz-wifi/>,查看最新版。
在公共 Wi-Fi,SSID 单一(即一个网络名称),有多个 2.4 Ghz 和 5 Ghz 的 BSSID(某个接入点的 MAC 地址),如果 2.4Ghz 的信号较好,Mac 会主动连接到 2.4Ghz 网络上,网络异常卡顿,可能因为公共 Wi-Fi 有大量只能支持 2.4Ghz 频段的设备。
Apple 规则:macOS 将始终默认采用 5 GHz 频段而非 2.4 GHz 频段。前提条件是,5 GHz 网络的 RSSI 是 -68 dBm 或更好。
但是公共 Wi-Fi 信号可能无法达到要求,导致可能优先使用了信号略强的 2.4 Ghz 频段。
airport
工具airport 默认位于如下路径(当前 10.15 适用):
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
创建链接:
# sudo mkdir -p /usr/local/bin
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
备注:也可以使用 alias 并写入环境变量。
aiprot 命令参数
LEGACY COMMANDS:
Supported arguments:
-c[<arg>] --channel=[<arg>] Set arbitrary channel on the card
-z --disassociate Disassociate from any network
-I --getinfo Print current wireless status, e.g. signal info, BSSID, port type etc.
-s[<arg>] --scan=[<arg>] Perform a wireless broadcast scan.
Will perform a directed scan if the optional <arg> is provided
-x --xml Print info as XML
-P --psk Create PSK from specified pass phrase and SSID.
The following additional arguments must be specified with this command:
--password=<arg> Specify a WPA password
--ssid=<arg> Specify SSID when creating a PSK
-h --help Show this help
可以看到,这些命令已经被 Apple 标识为 LEGACY COMMANDS(旧版命令),在最新版的 macOS 中可以执行。
在 OS X 10.6 之前的版本可以直接使用 airport 命令连接指定的 BSSID:
airport --associate=XXX --bssid=YYY
这里 XXX 即 SSID(网络名称),YYY 即 BSSID(MAC 地址)
该参数在 OS X 10.6 即以上版本中已经废弃
1、扫描无线网络 scan
$ airport -s
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
aWiFi 80:f6:2e:b1:ca:85 -92 161,-1 Y CN NONE
ChinaNet 80:f6:2e:b1:ca:80 -92 161,-1 Y CN NONE
sysin.org a8:bd:27:75:b5:d0 -91 149 Y CN NONE
aWiFi 80:f6:2e:d7:3f:c5 -90 161,-1 Y CN NONE
sysin.org a8:bd:27:75:b7:50 -90 52 Y CN NONE
aWiFi 80:f6:2e:b1:d4:85 -89 161,-1 Y CN NONE
ChinaNet 80:f6:2e:b1:d4:80 -89 161,-1 Y CN NONE
ChinaNet 80:f6:2e:d7:3f:c0 -89 161,-1 Y CN NONE
TP5G b0:95:8e:af:d6:44 -88 149 Y CN WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
sysin.org a8:bd:27:75:ba:30 -87 52 Y CN NONE
sysin.org a8:bd:27:75:d9:50 -84 36 Y CN NONE
......
可以看到相同 SSID 的多个 BSSID 的 CHANNEL,数值大于等于 36 的为 5Ghz CHANNEL,记录一个 RSSI 最小的 5Ghz CHANNEL 数字。
可以使用 WiFi Explorer Pro 等软件更加直观的查看。
2、将 Wi-Fi 关闭
3、设置 CHANNEL
$ sudo airport --channel=36
# or
$ sudo airport -c=36
通过第三方工具可以查看频段带宽,数值通常为:20Mhz、40Mhz(Wi-Fi 4),80Mhz(Wi-Fi 5),160Mhz(Wi-Fi 6)
可以加上额外的频段带宽参数,例如频段为 44,频段带宽为 80Mhz,如下:
$ sudo airport --channel=44,80
# or
$ sudo airport -c=44,80
使用 Airtool 设置 Channel 和 Chanel Width 作用一样。
4、打开 Wi-Fi,重新连接 SSID
5、查看是否已经连接上了指定的 CHANNEL
按 Alt 键同时点击 Wi-Fi 图标或者执行命令:
$ airport -I
6、关闭漫游
Apple 规则:macOS 客户端将监控和保持当前 BSSID 的连接,直到 RSSI 越过 -75 dBm 的阈值。当 RSSI 越过该阈值后,macOS 会针对当前 ESSID 进行扫描,看是否存在候选的漫游 BSSID。
在 RSSI 超过 -75 dBm 的环境下,考虑关闭漫游在保持稳定的 Wi-Fi 连接。
$ sudo defaults write /Library/Preferences/com.apple.airport.opproam disabled -bool true
该 plist 文件在当前系统版本(10.15)任然存在,但比较遗憾,相关资料显示该 plist 仅仅被 10.10 或者 10.11 版本系统所调用。
所以问题出现了,如果当前 RSSI 越过 -75 dBm 的阈值,macOS 在扫描网络后,可能又重新连接到了 2.4G 频段,进入了网络不稳定的死循环,这是笔者的真实体验,所以才有这篇文章。
macOS 在 5 GHz 网络的 RSSI 是 -68 dBm 或更好时,默认始终优先连接 5 Ghz 频段,且 当前 BSSID RSSI 不越过 -75 dBm 的阈值,客户端将保持稳定连接,不会产生漫游。
如果上述条件都不符合,airport
工具也无法解决问题。
此时有两个可能的解决思路:一是禁用无线网卡的 2.4Ghz 频段(似乎暂无实现途径),二是在本机屏蔽 2.4Ghz 网络的 MAC 地址( Linux 中通过 iptables 可以实现,BSD 中的 pf 通过 Tagging Ethernet Frames 的方式实现,macOS 的 pf 无法直接套用,有待研究)。
SSID:Service Set Identifier 的缩写,服务集标识。SSID 技术可以将一个无线局域网分为几个需要不同身份验证的子网络,每一个子网络都需要独立的身份验证,只有通过身份验证的用户才可以进入相应的子网络,防止未被授权的用户进入本网络。我们在使用电脑和手机搜索可接入网络时,显示出的网络名称就是 SSID。
BSSID:基本服务集标识符(Basic Service Set Identifier),是指站点的 MAC 地址,BSSID 的默认是对应的网卡的 MAC 地址(基准 MAC 地址)。如果一个 AP 可以同时支持多个 SSID 的话,则 AP 会分配不同的 BSSID 来对应这些 SSID,此时 BSSID 是根据基准 MAC 地址生成。
RSSI:RSSI(Received Signal Strength Indicator)是接收信号的强度指示。最理想的情况是 RSSI 为 0 dBm(dBm:表示功率绝对值的值,以 1 mW 功率为基准的一个比值)。但是在实际情况下,RSSI 只要大于 -50 dBm,就是信号非常好了;RSSI 一旦小于 -75 dBm,就有可能引起传输不稳定。
标签:优先 ecif inf 命令 disabled app its ref 系统
原文地址:https://blog.51cto.com/250823/2539793