默认情况下,用户设备上的所有 DNS 请求都由 Cloudflare 的公共 DNS 解析器解析,但用于本地解析的常用顶级域(例如 localhost)除外。您可以将内部 DNS 解析器连接到 Cloudflare,并使用它来解析非公开路由的域。
要解析私有 DNS 查询:
-
使用 Cloudflare Tunnel 连接您的私有网络。
-
在Networks(网络) > **Routes(路由)**下,验证您的内部 DNS 解析器的 IP 地址是否已包含在隧道中。
Go to Routes ↗ -
使用以下选项之一将特定的 DNS 查询路由到您的内部 DNS 解析器:
- 创建本地域回退(Local Domain Fallback)条目,该条目指向内部 DNS 解析器。例如,您可以指示 Cloudflare One 客户端通过
10.0.0.25的内部解析器解析myorg.privatecorp的所有请求,而不是尝试进行公开解析。 - 或者,创建解析器策略以指向内部 DNS 解析器。
解析器策略提供与本地域回退(Local Domain Fallback)类似的功能,但发生在 Cloudflare Gateway 中,而不是在本地设备上。如果您想要对私有 DNS 解析进行更精细的控制,建议使用此选项。例如,您可以确保特定地理区域的所有用户都使用离他们最近的私有 DNS 服务器,确保在解析私有 DNS 流量之前满足特定条件,并将 Gateway DNS 策略应用于私有 DNS 流量。
- 创建本地域回退(Local Domain Fallback)条目,该条目指向内部 DNS 解析器。例如,您可以指示 Cloudflare One 客户端通过
-
最后,确保您的隧道使用 QUIC 作为默认的传输协议。这将使
cloudflared能够代理基于 UDP 的流量,这在大多数情况下是解析 DNS 查询所必需的。
Cloudflare One 客户端现在会将 DNS 查询发送到您的内部 DNS 解析器进行解析。若要了解更多信息,请参阅 Cloudflare One 客户端如何处理 DNS 请求。
要进行测试,请针对内部 DNS 服务运行 dig 命令:
dig AAAA www.myorg.privatecorp该 dig 命令将起作用,因为 myorg.privatecorp 在上文中被配置为了回退域。如果您跳过了该步骤,您仍可以强制 dig 使用您的私有 DNS 解析器:
dig @10.0.0.25 AAAA www.myorg.privatecorp如果终端用户的设备上禁用了 Cloudflare One 客户端,两个 dig 命令都将失败。
如果您在通过 Cloudflare Tunnel 配置私有 DNS 时遇到问题,请使用以下故障排除策略。
-
在 Cloudflare 仪表板中访问 Networks(网络) > Tunnels(隧道),确保
cloudflared已连接到 Cloudflare。 -
确保
cloudflared正在使用quic协议运行(在其日志中搜索Initial protocol quic)。 -
确保允许运行
cloudflared的机器通过 UDP 出站到端口 7844 以与 Cloudflare 通信。 -
访问 https://help.teams.cloudflare.com ↗ 确保终端用户设备已注册到 Cloudflare One 客户端。
-
仔细检查您的 Gateway 网络策略的优先顺序。确保更全局的 Block(阻止)或 Allow(允许)策略不会取代特定于应用程序的策略。
-
检查您的 Gateway 网络日志以查看您的 UDP DNS 解析是被允许还是被阻止。
-
确保您的内部 DNS 解析器在可路由的私有 IP 地址上可用。您可以通过在运行
cloudflared的机器上尝试dig命令来进行检查。 -
通过使用
dig ... +tcp强制 DNS 解析使用 TCP 而不是 UDP,以此检查您的设置。