作者:Sophon
来自:洛谷日报
链接:DNS-over-HTTPS(DoH)简析与配置 - 未归之人 - 洛谷博客
本文同步发布于 Heliumの博客,到我的博客阅读体验更佳QwQ
DNS是什么
DNS(Domain Name System)是一项网路服务,用途是对全球各个网站的域名进行解析。如果听不懂上面这句话也没关系,接下来会讲解。如果你是网路方面的大牛可以直接跳过或关闭此网页。
简明易懂的DNS
举个例子,从前有个叫小明的人(目测此人已累死),开了一家商店。一开始顾客要去购物时,就直接去商店里买。
但由于网路环境的复杂性,让顾客直接记住地址是不太可能的。(你试试看?)于是就有人动了脑筋,推出了一样类似DNS的服务:你只需要说出地点(小明杂货店),服务商就会开车送你去目的地。
很多大公司实际上都推出了这份服务,例如阿里,百度,谷歌,Cloudflare等。
实际网路中的DNS,则是向伺服器询问域名,而伺服器返回IP地址。
顺便推荐几个质量好的良心DNS如下:
Cloudflare DNS:
1.1.1.1, 1.0.0.1
Google Public DNS:
8.8.8.8, 8.8.4.4
OpenDNS
208.67.222.222, 208.67.220.220
DNS查询
看到这里你可能有疑惑了,难道每一台DNS伺服器都储存了很多IP地址和域名的对应吗?不是。一这很浪费空间,二这样很难更新。
以我的博客地址keepthethink.github.io
为例,当你输入地址后:
1.你的电脑首先会去询问DNS伺服器;
这个「DNS伺服器」可能在任何地方,可能就在你家的路由器上,也有可能在万里之遥的灯塔国QwQ(如果你是非酋
当然,一般来讲你的路由器上不会真的有一个DNS服务端,如果你在本地登录912.168.0.1或192.168.1.1,你就会看到在「DNS」设置那一栏会有你的ISP的DNS地址(当然,如果你想把它换成公共DNS也可以,但要为你自己的网速负责。)
2.DNS伺服器询问所谓「根伺服器」;
根伺服器询问.io域名的权威伺服器;
.io域名的权威伺服器询问.http://github.io域名的权威伺服器;
.http://github.io域名的权威伺服器将IP告知你的电脑;
OK
(这套措施实在是找不到合适的比喻,看不懂就跳过吧。)
注意事项
如果你访问的是一些比较国际化的网站,而且还使用了国外的DNS伺服器,有可能会会给你分配个国外的IP地址。
举个最基础的例子:Hexo博客在注册网址时,进行的国内外分流。这是不排除某些睿智国外DNS不管三七二十一给你个国外地址的情形。
DNS缓存
这么干,空间的确节省了很多,但效率显然就更慢了。所以,DNS伺服器中一般有个「缓存」,当你重复询问同一个网址时,直接找出缓存记录并答复。当然,每个一定的时间会更新缓存。
既然这套措施已经很完美了,那DoH是干嘛的?别急,马上就讲。
DNS劫持与HTTP劫持
DNS劫持:当DNS不那么老实
打个比方:
从前有个叫小刚的,他也开了家杂货店;
小刚发现小明的杂货店有很多客户,分外眼红,便拿钱贿赂了DNS服务商,于是,当顾客要求DNS服务商将其带到「小明杂货店」是,DNS会不管三七二十一将其带到「小刚杂货店」。在网路中,则是DNS伺服器故意给出错误的IP地址。
这显然是无计可施的,一般来说,遇到这种人品烂的掉渣的服务商,最好的办法就是换一家,好在这年头网路条件不错,大多数DNS都不搞这种事。
但是,对于DNS劫持,刚才讲的一种情况并非最常见的,最常见的事下面这种:
假设只有服务商A收了贿赂,而服务商B没有。当你向DNS服务商B打电话时,你的电话服务商将其转接到服务商A,那你就前功尽弃了。唯一的方法是使用DNS-over-HTTPS,后面会讲解。
HTTP劫持:当ISP不那么老实
假设你向DNS伺服器打了个电话,「我要去小明杂货店。」结果你的电话服务商窃听了这句话,得知了你的行程;甚至将其修改为「我要去小刚杂货店。」,然后你就不明不白的被带到了另一个地方。
在这种情况下,你的DNS服务商是老实可靠的,但你的ISP(网路服务提供商)则不那么可靠。当然,一般的ISP并没有那么猖狂,他们最多不过是往你身上塞几张奇♂怪♂的广♂告♂(想必大家都有这样的经历。)你有时候会不会发现你看到的广告就是最近曾经关注过的事物?
你也许会说,可以修改DNS来解决这个问题,但如果你的ISP让 Google Public DNS 跳转到 ... 之类与其同流合污的DNS地址怎没办?图样图森破。
注意
有哪些进行HTTP劫持的ISP?基本上都有:移动,联通,电信,天下乌鸦一般黑,呵呵。 一个极其明显的例子如下: