惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Schneier on Security
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
H
Hacker News: Front Page
C
Check Point Blog
P
Privacy International News Feed
IT之家
IT之家
爱范儿
爱范儿
AWS News Blog
AWS News Blog
The Hacker News
The Hacker News
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
Microsoft Azure Blog
Microsoft Azure Blog
量子位
The Cloudflare Blog
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
Martin Fowler
Martin Fowler
Scott Helme
Scott Helme
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
T
Threat Research - Cisco Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
B
Blog
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
J
Java Code Geeks
K
Kaspersky official blog
Webroot Blog
Webroot Blog
C
CERT Recently Published Vulnerability Notes
H
Heimdal Security Blog
G
Google Developers Blog
T
Tor Project blog
W
WeLiveSecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Blog — PlanetScale
Blog — PlanetScale
小众软件
小众软件
有赞技术团队
有赞技术团队

博客园 - 悠哉大斌

AI Agent 安全沙箱技术对比:E2B、Cube Sandbox 与 Docker Sandboxes linux 升级 claude code的坑 debian(WSL) apt 代理配置 linux内核之Namespaces、Cgroups、Capabilities、Seccomp和Landlock 大语言模型推理中的隐藏瓶颈及其解决方法 Docker Sandboxes 技术是什么,和docker容器有什么区别 什么是 Docker Agent以及一个Docker Agent示例 windows wsl 安装 Temurin® JDK claude Code 和 codex 作为编程代理,前者使用typescript开发,后者使用rust,他们的决策依据是什么 Java 并发编程发展史与 java.util.concurrent 全景解析 LLM 真的改变了编码风格吗? 如果人工智能会犯错且不精确,为什么它正在改变世界? Python 的协程模型和 JavaScript 的 async/await python闭包和function.__closure__特殊属性 python 的 dunder name和 sunder name 基于nodejs设计REST API的知名开源框架 windows上使用node-oracledb Thick 模式连接 Oracle 11g Claude Code CLI连接 DeepSeek V4模型后调用报400错误 python里对象(object)到底是什么 Python 泛型演变史 Python 类型别名的演变 Python 类型提示的演变史 PEP 593 新增的Annotated 类型 Alibaba AgentScope 和 microsoft agent framework 详细对比分析 spring AI Alibaba Agent Framework 和 agentscope有什么区别和联系 AI Agent协作模式以及主流开源框架对协作模式的支持 Agent = Model + Harness 使用rust编写typescript编译器的难点在什么地方,哪些数据结构是rust不擅长的? TypeScript/JavaScript 中的异步迭代语句 js中的生成器函数 Tailscale Serve and Funnel openclaw gateway的网络绑定模式 websocket协议和http协议有何依赖关系? MCP通信的双方是谁? claude code MCP 安装范围 如何在wsl2环境下给claude code cli 配置 playwright-mcp wsl的网络模式有哪几种,有哪些区别? AI Agent memory是什么? ai agent skills是什么? Go测试生态系统工具与最佳实践深度调研(聚焦认证授权系统) 线性代数中常见矩阵类型的概念关系思维导图 三种主流授权策略
Tailscale 是如何接管 DNS 的?
悠哉大斌 · 2026-04-03 · via 博客园 - 悠哉大斌

💡 Tailscale 是如何接管 DNS 的?

Tailscale 通过一个叫做 MagicDNS 的核心功能来管理 DNS,默认情况下处于启用状态。当满足以下条件时,Tailscale 就会接管:

  1. Tailnet(你的私有网络)中启用了 MagicDNS:这通常在 Tailscale 管理后台配置,是全局性的。
  2. 本机接受了 Tailscale 的 DNS 设置:通过 --accept-dns 参数控制,默认值为 true,即接受 Tailscale 下发的 DNS。
  3. 系统没有其他活跃的 DNS 管理程序:比如 systemd-resolvedNetworkManager。Tailscale 会检查这些程序,如果都没有,它就会直接接管 /etc/resolv.conf

🛡️ 如何防止 Tailscale 接管 DNS?

如果你想继续使用手动指定的 DNS,可以按以下优先级选择方法:

方案一:配置 systemd-resolved(⭐ 强烈推荐)

这是 Tailscale 官方建议的方案,也是现代 Linux 发行版的默认 DNS 管理方式。它能实现最佳兼容性,让 Tailscale 和你的本地 DNS 设置和谐共存。

  1. 确保 systemd-resolved 正在运行
    sudo systemctl enable --now systemd-resolved
    sudo systemctl restart systemd-resolved
    
  2. 调整 systemd-resolved 配置
    sudo nano /etc/systemd/resolved.conf
    
    取消注释并填写你希望系统使用的 DNS 服务器,例如:
    [Resolve]
    DNS=8.8.8.8 223.5.5.5
    
  3. 创建正确的符号链接:这是关键步骤,确保 /etc/resolv.conf 指向 systemd-resolved 管理的存根文件。
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    
  4. 重启相关服务
    sudo systemctl restart systemd-resolved
    sudo systemctl restart tailscaled
    

配置完成后,你可以通过 resolvectl status 命令来查看 DNS 设置是否生效。

方案二:禁用 Tailscale 的 DNS 管理(✅ 直接有效)

如果你不希望依赖 systemd-resolved,可以直接在本机禁用 Tailscale 对 DNS 的修改。

  1. 执行以下命令(重启失效):

    sudo tailscale set --accept-dns=false
    

    这条命令会立即生效,Tailscale 将停止接管你的 DNS 设置,/etc/resolv.conf 也会恢复为你之前手动指定的值。

    或者永久生效(写入配置)

    sudo tailscale set --accept-dns=false
    sudo systemctl restart tailscaled
    
  2. 配置结果说明

    • 执行命令后,Tailscale 不会再覆盖你的 /etc/resolv.conf 文件。
    • Tailscale 的 MagicDNS 服务器 (100.100.100.100) 仍然会在后台运行。
    • 如果仍需解析 Tailscale 网络内的主机名,可以手动添加一条静态 DNS 记录,将 *.ts.net 域名指向 100.100.100.100

查看是否成功:tailscale dns status
运行后输出信息非常明确:

  • Tailscale DNS: enabled: 说明--accept-dns已启用,Tailscale 正在接管 DNS。
  • Tailscale DNS: disabled: 说明--accept-dns未启用,设备使用本地 DNS。

方案三:锁定 /etc/resolv.conf 文件(⚠️ 不推荐)

这是一种粗暴的方式,通过给文件添加“不可修改”的属性来阻止任何程序写入。这可能会在未来导致难以排查的问题,仅作为最后的备选方案

# 1. 先完成你的手动配置
sudo nano /etc/resolv.conf
# 2. 锁定文件,阻止写入
sudo chattr +i /etc/resolv.conf
# 3. 如果需要修改,必须先解除锁定
sudo chattr -i /etc/resolv.conf

⚠️ 重要警告:Tailscale 官方不推荐这种做法,它可能会在检测到无法写入配置文件时,触发“Linux DNS configuration issue”之类的警告信息,并且可能导致你难以享受到 Tailscale 的高级 DNS 功能。

💎 总结

综合来看,方案一(使用 systemd-resolved 是最符合 Linux 生态惯例、也最受 Tailscale 官方支持的做法,能确保系统长期稳定。方案二(--accept-dns=false)同样有效,但会牺牲 MagicDNS 的便利性。方案三则风险较高,通常不建议使用。