用途:诊断并修复 Docker 容器内 Tailscale 的连接与 DNS 问题,按顺序执行六项检查,从容器运行模式一路排查到 MagicDNS 解析。
主要能力:检测容器运行在 kernel 还是 userspace 模式;确认 TUN 接口存在并带有 Tailscale IP;检查 DNS 解析链是否被错误转发;确认 100.100.100.100 经由容器内 Tailscale 路由;检测宿主机与容器之间的多 tailnet 冲突;通过名称解析测试端到端验证 MagicDNS。
使用方式:按步骤依次执行,遇到第一个失败即停止并修复后再继续。步骤 1 用 docker logs <container> 2>&1 | grep -iE "tun|userspace|netstack" 判断模式;步骤 2 用 docker exec <container> ip addr show tailscale0 验证接口;步骤 3 用 docker exec <container> cat /etc/resolv.conf 检查解析链;步骤 4 用 docker exec <container> ip route get 100.100.100.100 与 ss -ulnp | grep 100.100 验证路由;步骤 5 用 tailscale status 与 resolv.conf 的 search 域比对 tailnet;步骤 6 用 tailscale dns status 验证 MagicDNS,最后用 nslookup 与 ping 做最终验证。
常见修复:设置 TS_USERSPACE=false、TS_ACCEPT_DNS=true;在 compose 中用 devices: 而非 volumes: 挂载 /dev/net/tun;添加 cap_add: [NET_ADMIN, SYS_MODULE];为各服务添加 dns: [100.100.100.100] 与 dns_search。
适用场景:容器内 DNS 不工作、宿主机与容器处于不同 tailnet、compose 已配置 NET_ADMIN 与 /dev/net/tun 但仍运行在 userspace、从 docker run 迁移到 docker compose 后 TUN 失效。
限制:不得静默跳过失败检查;修复需重启容器时应重建并从头重跑。日志中 getting OS base config is not supported 为非致命信息,DNS 需通过 compose 文件修复。具体配置细节见技能内 references 文档。