MagicDNS 机制

MagicDNS 是 Tailscale 的核心 DNS 功能,默认启用,自动为 tailnet 中的设备生成 DNS 名称。每个设备使用其 machine name 结合 tailnet DNS 名称(格式:<machine-name>.<tailnet-name>.ts.net)形成完全限定域名(FQDN)。

  • 解析流程:设备通过本地 Quad100 DNS 解析器(IPv4: 100.100.100.100:53,IPv6: fd7a:115c:a1e0::53)处理 MagicDNS 查询。该解析器是 stub resolver,本地处理 tailnet 主机名,无需外部 DNS 服务器(Tailscale v1.20+)。
  • mDNS over Tailscale:MagicDNS 非标准 mDNS,而是 Tailscale 控制平面注册设备名称,本地 stub resolver 缓存并解析。避免外部 DNS 查询,绕过 DNS rebinding 防护。
  • 限制:不支持任意记录添加(见 GitHub issue #1543)。

禁用:admin console DNS 页切换,或客户端拒绝 Tailscale DNS(Linux: tailscale set --accept-dns=false)。

Nameservers 覆盖与自定义

Tailnet DNS 设置位于 admin console DNS 页,分为全局(global)和受限(restricted)nameservers。

  • 全局 Nameservers:处理所有域查询。公共提供商(如 Cloudflare 1.1.1.1、Google 8.8.8.8、Quad9 9.9.9.9)自动升级 DoH。
  • Override DNS Servers:强制客户端忽略本地 DNS,使用 tailnet 设置。
  • 自定义 Nameservers:私有服务器需子网路由(subnet router)暴露。NextDNS/Control D 等个性化服务器支持 DoH。
  • Exit Node 集成:默认 exit node 接管所有 DNS,可 per-nameserver 启用 “Use with exit node” 以保留 tailnet nameservers。

Split DNS 配置(Restricted Nameservers)

Split DNS(受限 nameservers)为特定搜索域指定 nameserver,实现本地 DNS + Tailscale 分离。

  • 配置:DNS 页添加 nameserver + 域(如 example.com → 1.1.1.1),仅 *.example.com 查询路由至该服务器。
  • 用例:绕过 DNS rebinding(内部服务私有 IP 如 10.0.0.1)。公共 DNS 返回私有 IP 被阻挡时,使用 split DNS 指向内部服务器。
  • 优先级:OS 级优化(并行查询、地理排序),非严格顺序。MagicDNS 优先本地解析。

DNS-over-HTTPS (DoH) 集成

Quad100 透明升级公共 nameservers 到 DoH(DNS over HTTPS,TCP/QUIC 443 端口):

  • 机制:客户端查询 Quad100,MagicDNS 转发并加密(e.g., Cloudflare/Google)。
  • 优势:端到端加密,防嗅探/篡改。传统 UDP/53 明文易受中间人攻击。
  • Quad100 角色:本地代理,实现 override/split DNS,支持 Android split tunnel。

ACL 中的 dnsNames

Tailscale ACL(访问控制列表)为网络层控制,dnsNames 通过 grants(新一代语法)或 policy hosts 管理,依赖 tailnet policy file 声明式 huJSON,默认 deny-all。

调试与 tailscale dns status

  • 命令tailscale dns 查看/配置 nameservers/search domains。tailscale status --dns 显示 DNS 配置。
  • 测试:避免 nslookup/host(绕过系统 DNS)。macOS 用 dscacheutil;通用 dig @100.100.100.100 <name>
  • 常见问题:MagicDNS 443 流量(DoH);rebinding(split DNS 修复)。

边缘案例

  • IPv6:支持 IPv6 nameservers(e.g., Google 2001:4860:4860::8888)。Quad100 双栈(fd7a:115c:a1e0::53)。
  • Search Domains(v1.34+):自动追加后缀(MagicDNS 首位)。
  • Rebinding:私有 IP/Tailscale IP (RFC6598) 被阻;split DNS 或禁用防护。
  • Beta 迁移.beta.tailscale.net 已弃用(2024-09-13),移至 .ts.net 并删除旧记录。

参考:DNS in TailscaleMagicDNSQuad100