语境
操作系统(Windows、MacOS、Linux、iOS、Android)以及浏览器(Firefox、Brave、Edge 等)都有使用 DOH 的方法。
DNS-over-HTTPS 通过系统与“https://cloudflare-dns.com/dns-query”等端点对话来工作。
假设客户端所在的网络限制通过端口 53 udp 的 DNS 流量。此外,路由器不充当客户端的 DNS 解析器。(网络强制使用 DOH(或 DOT)。)
抓住第 22 条陷阱?
客户端如何解析第一个主机名“cloudflare-dns.com”以建立 DOH-DNS 查询连接?
看起来,开箱即用,DOH 通信始终需要通过 UDP 端口 53 进行至少一个 DNS 查询。如果您使用传统的基于主机名的端点的话。
或者这个说法是错误的,DOH 提供商端点 IP 是否已在 Windows 11 中预加载?我可以看到他们的主机名已预加载,但如果它在 DOH 之前无法查询此主机名本身,它是否真的知道要连接到哪里?
对于 Cloudflare,我可以记住它的基于 IP 的端点“https://1.1.1.1/dns-query”,对于 Quad9 也许也可以记住,但对于 NextDNS 和其他提供商,IP 并不总是那么容易记住,我需要互联网来查找他们的 IP 才能使这些提供商正常工作。
问题
问题 1: DNS-over-HTTPS(DOH) 是否依赖于通过 UDP 端口 53 的至少一个常规 DNS 查询来运行?能够解析 DOH 服务器的主机名本身并连接到它吗?
Q2:如果是,在没有端口 53 回退或其他本地 DNS 解析器的受限网络中,是否使用包含 IP 的 DOH 端点地址(如https://1.1.1.1/dns-query)是否始终需要连接才能始终正常工作以避免出现问题?(例如包含主机名的格式(https://cloudflare-dns.com/dns-query(?)
问题 3:HTTPS 依赖于 PKI 基础架构和具有通用名称(或 SAN)的证书,例如“cloudflare-dns.com”。我使用包含 IP 的端点而不是包含主机名的端点是否会破坏链中的验证步骤?
Q4:如果操作系统有不同的行为,该表可能是一个后续问题。
客户 | 对 DOH-Catch22 敏感 | 评论(为什么不呢?) |
---|---|---|
MacOS(cloudflared) | ? | |
Windows 本机 | ? | |
MacOS 上的 Firefox | ? | |
MacOS 上的 Edge | ? | |
Windows 上的 Firefox | ? | |
Windows 上的 Edge | ? | |
iOS 移动配置 | ? | |
Android 原生 | ? | |
通过 Cloudflared 基于 Linux | ? | |
通过 Stubby 基于 Linux | ? |
答案1
问题 1: DNS-over-HTTPS(DOH) 是否依赖于通过 UDP 端口 53 的至少一个常规 DNS 查询才能运行?
对于基于主机名的端点来说这是正确的,但在使用基于 IP 的端点(如 cloudflare 的 1.1.1.1(或像 hosts 文件这样的本地解析器))时则不然。
问题2: 在没有端口 53 回退或其他本地 DNS 解析器的受限网络中,是否始终需要使用包含 IP 的 DOH 端点地址进行连接?
是的,客户端需要以某种方式将端点名称解析one.one.one.one
为 IP。它可以缓存或硬编码在 DoH 客户端中,但并不常见。
问题3: 我是否会通过使用包含 IP 的端点而不是包含主机名的端点来破坏链中的验证步骤?
不一定。证书可以使用 IP 地址作为有效的 SAN - 请参阅 Cloudflare 证书https://1.1.1.1/例如。但是,如果 DoH 客户端也进行 CRL/OCSP 检查,那么该信息也应该分发到基于 IP 的主机(Cloudflare 不会)。如果不允许,这可能会导致僵局。
问题4:对于任何 DoH 服务来说,一般行为都是相同的。查看不同应用程序中的一些默认提供程序:https://en.wikipedia.org/wiki/DNS_over_HTTPS