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并删除旧记录。