dns over https

DoH互联网上能够查到的就是2017年 https://www.theregister.com/2017/12/14/protecting_dns_privacy/

然后到了2018年就出来rfc了,这个效率还是非常不错的。

https://datatracker.ietf.org/doc/html/rfc8484

那DoH是为了解决什么问题呢,就是因为dns协议是udp的,很容易被抓取。所以大家就想用https来作为dns查询的隧道,这样就可以有效避免被人恶意截取流量了。当然DoH的前提也是dns解析支持了subnet才可以的。

但是不是所有服务都是支持DoH的,所以最好还是自己本地起一个服务来运行这个。本地监听127.0.0.1:53端口,让本地所有服务都请求本地的dns服务,这个以前污染没有那么严重的情况下,我自己本地会起一个unbound,然后来做各种代理,不过现在污染太严重了,这种方式又各种问题了。

现在主要的方案就如下这3种:

  1. https://github.com/DNSCrypt/dnscrypt-proxy

  2. https://github.com/cloudflare/cloudflared

  3. https://github.com/AdguardTeam/AdGuardHome

第一个我在mac上没有跑起来.

第二个cloudflared第一次跑起来,用dig测试了下都没问题,可自己后面修改配置,又卸载了一次后,发现各种证书的问题。这两个有点八字不合,那就用AdGuardHome

1
2
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
sudo /Applications/AdGuardHome/AdGuardHome -s start

一条命令就可以了,安装完成直接启动就行。

后面就是使用本地浏览器访问 http://127.0.0.1:3000 就可以开始设置了。

adguardhome

主要要修改的地方就是设置项里的”dns设置“,为什么这里是添加这些呢,其实阿里云也提供DoH的地址,主要原因是阿里云的DoH地址居然还劫持google,v2ex这些网站,但是这里也留了一个腾讯的,防止万一出问题。

另外一个是上面这5个是支持subnet的,也就是访问国内的网站也正常给你解析到国内的,而quad9是直接跑海外去了。感谢opendns

doh

看看国内现在的互联网真是,连阿里云这种第三方的也开始搞污染。

最后设置完了,大家自己用dig测试一下就可以了。

1
2
dig @223.6.6.6 www.google.com
dig @127.0.0.1 www.google.com

看看结果就知道了。

但是奇怪的是阿里云dns就在DoH这边污染了,直接53端口的却没有污染,这个不知道为什么要这样搞。不过不光阿里云是这样,腾讯云的也一样。而且污染的逻辑都一样,也就自己知道就行了。也许这些厂商也不得已而为之呢。

不光DoH有污染,直接53端口也是有污染的。这个污染应该是local运营商这里做的,毕竟dns的udp协议要篡改是太容易了。

因为我有时候换个网络直接请求53端口返回是对的,有时候是错误的,但是DoH这个返回肯定是错误的。

alidns