Google TV 升级 Android 12 后的 Surge 网关模式不兼容的问题
Google TV Chromecast Android 12似乎修改了DNS逻辑,我之前是使用Surge的网关模式对Google TV的网络进行接管,将Google TV的DNS设置成了198.18.0.2,今天更新Android 12后发现Google系的服务全都无法正常使用,但其他的流媒体(如Netflix)是正常的。
因为在之前的Google TV上,系统服务会无视DNS设置,强行使用8.8.8.8/8.8.4.4进行解析,所以之前的做法一般是在Surge对这两个DNS进行劫持,这部分被劫持的DNS请求则是直接被转发到代理服务器了,而新Google TV系统则可能修改了这个策略,并不会无视系统DNS设置进行请求,而是老老实实的走系统指定的DNS,但依然是本机直接解析。
我截了两张图,可以清楚的看到Google服务和Netflix请求的差别,Google服务的URL根本不会到网关上来,而是本机解析得到IP,再发往网关,Netflix则是让URL走向网关,让网关决定如何处置。所以Google TV访问Google服务的时候,Surge网关接收到请求的指向的是Google TV自行解析域名得到的IP,也就无法match配置的规则进行DNS解析转发了。
而因为新版Google TV的Google服务会使用系统设置的DNS进行解析(看起来是默认DNS-over-TLS),所以如果还是设置为198.18.0.2就无法正常解析,也就无法使用了。
解决办法就是,如果之前使用了198.18.0.2作为Google TV的DNS配置,则需要将Google TV的DNS修改为正常的8.8.8.8/8.8.4.4/1.1.1.1,并且在代理服务上将这几个IP纳入代理规则的范围,使用软路由的也需要注意将“仅代理常用端口”给关掉,这样才能让Google TV的DNS-over-TLS进行正常的DNS解析。