fil*_*nic 5 wireless-networking 802.11 wifi-configuration windows-10
我希望 Windows Wi-Fi 客户端将无线连接检测为按流量计费的连接。\n我发现 802.11 协议支持供应商特定的信息元素 (IE)。这些 IE 被注入到信标和探测响应无线帧中。
\n我发现 Microsoft 定义了自己的特定于供应商的 IE,以通知客户端有关通过 Wi-Fi 计量的连接(网络成本元素),并且我的接入点的hostapd支持特定于供应商的功能。
\n根据(Network Cost Element)的文档,我将供应商特定字段添加到hostapd
)的文档,我在我的 OpenWRT 路由器上
0xDD (Vendor-specific record)\n0x08 (Record length : 8 bytes)\n0x00 0x50 0xF2 (Vendor: Microsoft)\n0x11 (OUI Type: Network Cost)\n0x00 0x00 0x00 0x02 (Portable Hotspot Default: Metered network; limit unknown or not yet reached; matches Windows default for mobile broadband connections.)\n
Run Code Online (Sandbox Code Playgroud)\nhostapd 关于 openwrt 命令:
\nubus call hostapd.wlan24 set_vendor_elements \'{"vendor_elements": "dd080050f21100000002"}\'\nubus call hostapd.wlan24 update_beacon \n
Run Code Online (Sandbox Code Playgroud)\n使用CommView捕获无线流量,并在探测响应和信标帧中看到我向 hostapd 提供的数据(最后 10 个字节)。
\n0x0000 80 00 00 00 FF FF FF FF-FF FF XX XX XX XX XX XX \xe2\x82\xac...\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbfXXXXXX\n0x0010 EC 41 18 50 A7 35 00 8E-99 81 50 23 98 00 00 00 \xc3\xacA.P\xc2\xa75.\xc5\xbd\xe2\x84\xa2.P#\xcb\x9c...\n0x0020 64 00 31 04 00 1B YY YY-YY YY YY YY YY YY YY YY d.1...YYYYYYYYYY\n0x0030 YY YY YY YY YY YY YY YY-YY YY YY YY YY YY YY YY YYYYYYYYYYYYYYYY\n0x0040 XX 01 08 82 84 8B 96 0C-12 18 24 03 01 0B 05 04 Y..\xe2\x80\x9a\xe2\x80\x9e\xe2\x80\xb9\xe2\x80\x93...$.....\n0x0050 00 02 00 00 2A 01 00 32-04 30 48 60 6C 30 14 01 ....*..2.0H`l0..\n0x0060 00 00 0F AC 04 01 00 00-0F AC 04 01 00 00 0F AC ...\xc2\xac.....\xc2\xac.....\xc2\xac\n0x0070 02 0C 00 0B 05 04 00 08-00 00 3B 02 51 00 2D 1A ..........;.Q.-.\n0x0080 EC 01 17 FF FF 00 00 00-00 00 00 00 00 00 00 01 \xc3\xac..\xc3\xbf\xc3\xbf...........\n0x0090 00 00 00 00 00 00 00 00-00 00 3D 16 0B 00 04 00 ..........=.....\n0x00A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................\n0x00B0 00 00 7F 08 04 00 00 00-00 00 01 40 DD 18 00 50 ...........@\xc3\x9d..P\n0x00C0 F2 02 01 01 01 00 03 A4-00 00 27 A4 00 00 42 43 \xc3\xb2......\xc2\xa4..\'\xc2\xa4..BC\n0x00D0 5E 00 62 32 2F 00 DD 08-00 50 F2 11 00 00 00 02 ^.b2/.\xc3\x9d..P\xc3\xb2.....\n
Run Code Online (Sandbox Code Playgroud)\n我连接到此 AP,并检查在 Windows PC 上使用 MS Powershell 是否对连接进行计量:
\n[void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]\n[Windows.Networking.Connectivity.NetworkInformation]::GetInternetConnectionProfile().GetConnectionCost()\n
Run Code Online (Sandbox Code Playgroud)\n并得到回应
\nApproachingDataLimit : False\nNetworkCostType : Unrestricted\nOverDataLimit : False\nRoaming : False\nBackgroundDataUsageRestricted : False\n
Run Code Online (Sandbox Code Playgroud)\n哪里NetworkCostType
是Unrestricted
orUnknown
而不是预期的Fixed
。
当我在 Windows PC 上手动设置此连接按计量时,powershell 说NetworkCostType : Fixed
一段时间后,我发现另一个 AP(不是我的,隐藏的)正在广播信标。\n在这些信标中,我发现相同的供应商特定扩展的长度0x11
为Microsoft
16 字节,并且是
DD 10 00 50 F2 11 | 01 10 02 28 2C 30 00 00 00 01 00 00\nor\nDD 10 00 50 F2 11 | 01 10 02 28 2C 30 00 00 00 00 00 00 (deffers 3rd byte from the end)\n\n0x0000 80 00 00 00 FF FF FF FF-FF FF 62 45 BD 07 36 9A \xe2\x82\xac...\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbfbE\xc2\xbd.6\xc5\xa1\n0x0010 62 45 BD 07 36 9A 80 71-87 80 70 00 00 00 00 00 bE\xc2\xbd.6\xc5\xa1\xe2\x82\xacq\xe2\x80\xa1\xe2\x82\xacp.....\n0x0020 64 00 31 C6 00 00 DD 10-00 50 F2 11 01 10 02 28 d.1\xc3\x86..\xc3\x9d..P\xc3\xb2....(\n0x0030 2C 30 00 00 00 01 00 00- ,0......\n---\n0x0000 80 00 00 00 FF FF FF FF-FF FF 62 45 BD 07 36 9A \xe2\x82\xac...\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbf\xc3\xbfbE\xc2\xbd.6\xc5\xa1\n0x0010 62 45 BD 07 36 9A D0 B4-16 FE 38 03 00 00 00 00 bE\xc2\xbd.6\xc5\xa1\xc3\x90\xc2\xb4.\xc3\xbe8.....\n0x0020 64 00 31 C6 00 00 DD 10-00 50 F2 11 01 10 02 28 d.1\xc3\x86..\xc3\x9d..P\xc3\xb2....(\n0x0030 2C 30 00 00 00 00 00 00- ,0......\n
Run Code Online (Sandbox Code Playgroud)\n我发现OUI 0x11
和Vendor 0x00 0x50 0xF2
是相同的 - 也许 MS Docs 是错误的?\n我在我的接入点上尝试了相同的操作,结果相同 - 数据位于无线帧中,但 Windows 10 不会将连接设置为按流量计费。
有帮助吗?\n也许我在某个地方犯了错误?\n也许它依赖于无线驱动程序?\n也许微软有文档,但没有在桌面系统中实现它?
\n手动设置Metered connection
不是我想要解决这个问题的方式。
成本水平:
00 Unknown
- 连接成本未知。01 Unrestricted
- 连接不受限制,并且具有不受限制的使用限制。02 Fixed
- 使用量计入用户已付费(或同意付费)的固定数据分配。04 Variable
- 连接成本以每个字节为基础。成本标志:
00 Unknown
- 用途未知或不受限制。01 Over Data Limit
- 使用量超出了计费网络的数据限制;可能适用不同的网络成本或条件。02 Congested
- 网络运营商正在经历或预期出现重负载。04 Roaming
- 共享连接在提供商的本地网络或附属网络之外漫游。08 Approaching Data Limit
- 使用量接近计量网络的数据限制;一旦达到限制,可能会应用不同的网络成本或条件。Metered connection
,Windows 会忽略 802.11 IE,直到您忘记网络(或者可能没有)。对于 OpenWRT 接入点,我的史诗问题导致了 4 个命令
uci add_list wireless.radio0.hostapd_options='vendor_elements=DD080050F21102000200'
uci add_list wireless.radio1.hostapd_options='vendor_elements=DD080050F21102000200'
uci commit
reboot
Run Code Online (Sandbox Code Playgroud)
我添加了Fixed
带有标志的成本级别Congested
。不知道拥堵有没有影响。
hostapd_options
是 /etc/config/wireless (或 )中未记录的参数uci radio?.hostapd_options
,但自 2017 年以来就存在
归档时间: |
|
查看次数: |
1054 次 |
最近记录: |