记录一次被DNS劫持及解决方案(非改hosts方式)

文章目录
  1. 1. 0x00 现象
  2. 2. 0x01 解决方案
  3. 3. 0x02 参考文章

0x00 现象

现象是访问Github Pages服务浏览器打不开,域名都是*.github.io类似的,即使走代理也不行,Chrome报错NET::ERR_CERT_AUTHORITY_INVALID,查看https证书居然是Vmware的



猜测是不是电脑系统出现问题了,但是手机连接上电脑宽带的wifi也连接不上,但是用4G网络可以,问题应该与系统无关,是运营商宽带的问题了。但是还是不知道具体那个环节出问题了,搜到一篇blog现象基本相同 记录一个奇怪的问题 访问网页,证书错误是VMware,但是文章中没有提解决方案,不过通过文章描述的现象及本地Wireshark抓包分析,是遇到dns劫持了,劫持方式是直接修改dns返回包。
只要是github.io下的域名全部被解析到了127.0.0.1,导致访问本地网络,同时正好装了Vmware的虚拟机,Vmware在本地会监听443端口,这样访问github.io相关域名会访问到本地Vmware开的端口上,并且Vmware的证书没有经过CA认证,Chrome会首先报证书错误,同时Vmware在443端口可能也没有提供http服务,即使忽略证书错误,网页也打不开。
尝试换DNS服务器,能正常几秒钟马上又被解析到127.0.0.1了,太丧心病狂了。






0x01 解决方案

在文章Windows客户端如何透明使用DNS-over-HTTPS中提到过通过HTTPS协议查询DNS的方式,正好可以解决这个问题,步骤如下:

另外如果cloudflare的doh服务器地址(1.1.1.1)被ban也可以使用SimpleDnsCrypt原理相同。当然也可以使用带有DOH功能得浏览器,如firefox,不过仅对浏览器本身有效,非全局,其他程序还是存在被DNS劫持风险。
希望对遇到这个问题的人有用。

0x02 参考文章