在使用 UU 加速器加速学术资源的时候,本以为只是添加了一个系统代理,遂运行 netsh winhttp show proxy
,得到
当前的 WinHTTP 代理服务器设置:
直接访问(没有代理服务器)。
一看网络适配器,竟然增加了一个名为 Netease UU TAP-Win32 Adapter V9.21
的 TAP 网卡(用来在数据链路层捕获所有数据包以进行后续处理的);route print
查看路由表(仅展示开关 UU 加速器前后的差异)
21,22c21
> 59.37.129.81 255.255.255.255 192.168.71.1 192.168.71.111 25
26d24
> 163.163.0.0 255.255.0.0 172.19.83.1 172.19.83.237 35
33,35d30
> 172.19.83.0 255.255.255.0 在链路上 172.19.83.237 291
> 172.19.83.237 255.255.255.255 在链路上 172.19.83.237 291
> 172.19.83.255 255.255.255.255 在链路上 172.19.83.237 291
47,48c42
> 199.59.149.204 255.255.255.255 192.168.71.1 192.168.71.111 25
此例中 192.168.71.1
为通向 Internet 的网关,172.19.83.1
为 TAP 设备的网关。
21 行,使 59.37.129.81
强制走 Internet 链路;可以查到,这个 IP 是深圳电信,可能是 UU 加速器的专线入口 IP;但这条似乎是不必要的,因为这个 IP 按默认路由就是走该链路。
26 行,添加了 163.163.0.0
通向 TAP 网关的路由,这大概是辅助 Fake-IP DNS 实现网页分流,经检验确实如此。
33-35 行,添加了三条 172.19.83.0/24
相关记录,指向 TAP 设备,普普通通。
47 行添加了一个 199.59.149.204
的路由,然而这个 IP 是属于 Twitter 的一个不工作的 IP。或许是作为黑洞路由?
至此我们大概可以知道 UU 加速器如何实现网页加速的了:首先劫持 DNS 使指定域名 IP 指向 TAP 设备内部,而后 UU 加速器转发给其服务器中转,完成代理。
然而还有一个谜团:UU 加速器如何实现 DNS 劫持的?Wireshark 抓包表明 TAP 设备没有任何 DNS 数据,而 Internet 设备上有原始 DNS ([2400:3200::1])返回的伪造 DNS 响应!或许是抓包、检测所有 DNS 包让然后伪造响应?(这一猜测基于如下现象:先开 UU 加速器再开 Wireshark 几乎看不到什么包,而先开 Wireshark 才能看到返回的伪造的 DNS 包)等待大神解答。