事情是这样的,我在国内目前使用的是CMLink UK的手机卡,在境内漫游时使用的流量都会发到英国EE运营商那进行转发,也就是相当于就在英国本地使用。

在这之前我已经使用了将近两个月,都可以在外正常使用。但是在昨天晚上,我突然发现谷歌打不开了(其它网站都正常)。使用手机上的iSH虚拟终端进行nslookup后得到以下结果:

可以看到虽然DNS服务器(109.249.185.129)是正确的,隶属于EE UK,但是得到的结果39.107.222.204确是来自杭州阿里巴巴的IP。这下找到原因了,是被DNS污染了(不愧是移动_中_)

解决方案

那么解决方案也非常简单,就是使用加密DNS,理论上找个国内可以解析的DoH(DNS over HTTPS)或是DoT(DNS over TLS)都可以解决。

安卓/PC等的DoH/DoT设置都很方便快捷,这里给出iOS的设置方法:

iOS的移动数据如果想用DoH或是DoT,需要使用描述文件进行设置。这里感谢paulmillr/encrypted-dns项目提供加密DNS列表与单个描述文件的写法

我根据模板整合了一部分常用的DNS,制作成了一个描述文件,分享给大家!效果如下:

描述文件地址:直链 备用链接(网盘)

安装完描述文件后,重新进入设置-通用-描述文件管理 你会发现多出来一个DNS选项,进去就能像上图一样选择你想要用的DNS啦~

TIPS: 因iOS系统限制,在使用VPN时,DoH不生效(不过这种情况下本来也不需要吧…);DNS选项最上方的“自动”就是不使用DoH