如果设置的是 DoH 服务器地址,那么客户端第一次查询是如何得知这个服务器的 IP 呢?
采用常规 DNS 查询吗?如果是这样岂不是依然存在被污染的可能性(导致某些 DoH 服务器不可用)?
看了一下 RFC 文档似乎也没有提到这个描述的样子。 谢谢各位大佬。
1
Archeb 2021-01-31 23:17:01 +08:00
看 adguardhome 的话,就是用常规 dns 服务器来 bootstrap
导致不可用的话我觉得可能性很少,是说在完全屏蔽普通 DNS 的状态下么 那这样的话就手动 hosts 吧 |
2
jinliming2 2021-01-31 23:27:16 +08:00 2
第一,DoH 服务地址可以是域名,也可以是 IP ( IP 也可以颁发 TLS 证书,实现 https 的,比如 https://1.1.1.1 )
第二,如果 DoH 没有提供 IP 访问的途径,必须解析域名地址的话,那么就走传统 DNS 解析这个 DoH 的地址,然后再走 DoH 解析其他所有域名。 第三,如果 DoH 的域名受到污染,那么就让 DoH 走代理远程解析,或者配置本地 Hosts,一般 DoH 的服务和传统 DNS 服务使用同一个 IP,只不过端口不一样。 要知道 DoH/DoT 解决的问题是隐私问题,而不是污染问题。是为了防止你的解析记录明文被第三方窃取。 污染那属于“破坏计算机通信系统”了,不属于 DoH/DoT 解决问题的范畴。 这里如果存在污染,也仅仅只是污染 DoH,只会造成 DoH 无法访问,解析失败,进而让你停止解析其他域名,防止解析记录隐私泄露。 |
3
systemcall 2021-02-01 00:16:55 +08:00
可以走常规 DNS 查询,也可以写死,一般情况下是用域名
被污染了的话,除非是有设备信任的证书来进行 mitm,不然的话 SSL 握手会失败。这个过程一般是可信的 不可用在一些地区是很正常的。真要弄的话,SNI 嗅探一样能拿到主机名,之后就可以重置连接或者丢包,不管你的 DNS 解析是怎么做的。如果是 IP 的话就更好办了 |
4
lrice OP |
5
lengrongec 2021-02-03 11:15:42 +08:00
@jinliming2 理解点评很到位,确实就是这么干的
|