完美 DNS 要实现 2 点,
1.无污染
2.CDN 正常
实现方式是通过 DNS OVER HTTPS
https://dns.google.com/参考
https://medium.com/@rampage_router/%E5%9F%BA%E4%BA%8E-google-%E7%9A%84-dns-over-https-%E5%8A%A0%E5%AF%86%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E6%9C%8D%E5%8A%A1%E5%99%A8-3e20c7b9f5f6#.ep9552795开源项目
https://github.com/aarond10/https_dns_proxy特色功能:
自从 Google 发布 DNS-Over-HTTPS 服务以来,其实有很多基于此服务写的程序,但是目前看起来这个项目实现的比较好:
C++ 实现,执行文件很小 (❤0kiB ,静态编译的版本约为 900k),比大多数用 Go 写的小得多
基于 Curl HTTP/2 API , 解析延迟极小
单线程无阻塞式查询,适用于嵌入式系统如路由器等
最好作为 DNSMASQ 这样带缓存的 DNS 服务器上游.
由于 Google 这个服务支持 EDNS SUBNET 的查询,所以理论上通过这个服务器查询的结果不会有 CDN 的问题
重点来了,以上都是转载,下面是小伙伴帮编译的运行在 ubuntu server 上的程序,运行前要装几个
apt-get install libev4
apt-get install libcurl3
apt-get install libc-ares-dev
下载
https://1drv.ms/u/s!Ak7H5gfecOPChFhstdNKTraNWwxZ这个略修改了一下,通过
./https_dns_proxy_e_clientip -a 服务器 IP -p 5321 运行后 默认使用用户 IP 为 EDNS SUBNET 所以没有污染,CDN 也正常
可以用如下命令尝试,只支持 UDP,不要通过代理使用 dig 命令
dig
www.youtube.com @
198.71.92.134 -p 5321
dig
qzone.qq.com @
198.71.92.134 -p 5321
上面 IP 用的 VPS 过几天就到期了,目前只支持 UDP
小伙伴们始终没有搞定这货怎么运行在路由器上,尤其是基于 openwrt 的 7620 的路由上,静态编译后的运行没有返回结果,或者内存不断升高,不知道有高人帮编译一个静态版
搞了这么麻烦到底优势在哪呢? 除了无污染和 CDN 正常之外,这货运行在路由上,通过-e 参数指定本地公网 IP 之后,不管通过什么通道向
https://dns.google.com 发起请求,返回结果都是只跟-e 参数相关
假如在天朝内通过这种方式开一个-p 53 端口的 DNS,再通过任意科学方式转发请求到
https://dns.google.com,那不管从哪发起请求,返回的 DNS 结果都是无污染和 CDN 正常的,就跟直接请求 8.8.8.8 且无污染,是一毛一样的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/335164
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.