解决 CentOS中因 Tailscale 引起的 DNS 解析问题

解决 CentOS中因 Tailscale 引起的 DNS 解析问题

摘要

最近在 CentOS 7 虚拟机上进行大数据环境搭建时,遇到了一个棘手的网络问题:无法解析公共域名(例如 github.combaidu.com),导致 curl 等工具无法下载外部资源。通过排查,最终发现问题源于 Tailscale 对系统 DNS 配置的接管。本文将详细分析该问题,并提供多种解决方法,包括临时绕过和永久配置方案。

问题现象

在 CentOS 7 虚拟机上,当尝试执行 curl 命令下载外部文件,或 ping 公共域名时,收到类似以下错误:

[root@localhost ~]# ping baidu.com ping: baidu.com: 未知的名称或服务 [root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:19 --:--:-- 0curl: (6) Could not resolve host: github.com; 未知的错误

问题排查

检查 Docker 服务状态 (非直接原因,但为了后续安装 Docker Compose 而检查):

sudo systemctl status docker

输出显示 Docker 引擎正常运行。这排除了 Docker 本身的问题。

检查网络连通性 (初步判断):

  • Ping IP 地址: 尝试 ping 8.8.8.8 (Google 公共 DNS)。 如果 ping 成功,说明虚拟机到互联网的网络路由是通的,问题不在于基本的网络连接,而很可能在 DNS 解析层面。 如果 ping 失败,则需要检查虚拟机的网络配置(如桥接模式是否正确配置,宿主机网络是否正常)。
  • Ping 域名: 尝试 ping baidu.com。 由于最初的报错就是域名解析失败,这一步自然也失败了。

检查 /etc/resolv.conf 文件内容 (关键线索):

cat /etc/resolv.conf

得到的输出如下:

# resolv.conf(5) file generated by tailscale # For more info, see https://tailscale.com/s/resolvconf-overwrite # DO NOT EDIT THIS FILE BY HAND -- CHANGES WILL BE OVERWRITTEN nameserver 100.100.100.100 search taild4789b.ts.net

这揭示了问题的核心:resolv.conf 文件被 tailscale 接管,并且 DNS 服务器被设置为 100.100.100.100

确认 Tailscale 运行状态:

sudo systemctl status tailscaled sudo tailscale status

结论:

        虚拟机本身的网络连接(桥接模式)是正常的。问题在于 Tailscale 的 MagicDNS 接管了系统的 DNS 解析。100.100.100.100 是 Tailscale 内部的 DNS 服务器地址,它默认只解析 Tailscale 网络内部的设备名称。如果没有在 Tailscale 管理界面中明确配置,它不会将公共互联网域名的解析请求转发到外部公共 DNS 服务器,因此导致 baidu.comgithub.com 等公共域名无法解析。

解决方案

方案一:临时绕过 Tailscale DNS (推荐用于快速下载)

这种方法无需修改 Tailscale 的全局配置,适用于临时解决 DNS 问题以完成特定任务(如下载)。

停止 Tailscale 服务: 这是最关键的一步,因为 Tailscale 运行时会不断覆盖 /etc/resolv.conf

sudo systemctl stop tailscaled

备份 /etc/resolv.conf

sudo cp /etc/resolv.conf /etc/resolv.conf.bak

编辑 /etc/resolv.conf,手动配置公共 DNS 服务器: 使用 vim 或其他编辑器打开文件:

sudo vim /etc/resolv.conf

按下键盘上的“i”键,进入insert模式,清空原有内容(或注释掉),然后添加以下公共 DNS 服务器:

nameserver 8.8.8.8 # Google Public DNS nameserver 8.8.4.4 # Google Public DNS # 或者国内常用DNS: # nameserver 114.114.114.114 # nameserver 223.5.5.5

按下键盘上的ESC键后,依次输入:wq,最后按下回车键(保存并退出)。

验证 DNS 解析是否生效:

ping baidu.com

成功 ping 通。

执行需要网络的操作(例如下载 Docker Compose):

sudo curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose version

(可选)恢复 Tailscale 服务: 完成下载后,如果您需要继续使用 Tailscale,可以重新启动它。注意,重新启动后 /etc/resolv.conf 可能会被 Tailscale 再次覆盖。

sudo systemctl start tailscaled

方案二:在 Tailscale 管理界面配置公共 DNS 服务器 (永久解决方案)

这是更推荐的长期解决方案,允许你在 Tailscale 启用时也能解析公共域名。

  1. 登录 Tailscale 管理界面: 访问 Tailscale 并使用您的 Tailscale 账号登录。
  2. 配置 DNS 服务器:
    • 输入公共 DNS 服务器地址,例如 8.8.8.8114.114.114.114
    • 重要: 确保勾选了 "Override local DNS" (覆盖本地 DNS) 选项(或者 "Use Tailscale DNS settings exclusively" 等类似选项,具体措辞可能随版本变化)。这将告诉 Tailscale 将所有 DNS 查询都通过其服务进行处理,包括转发公共域名。
    • 保存更改。

验证 DNS 解析:

ping baidu.com 

此时,即使 tailscaled 正在运行且 /etc/resolv.conf 仍指向 100.100.100.100,公共域名也应该能够正常解析了。

在虚拟机上同步配置: 回到 CentOS 虚拟机,运行以下命令强制同步 Tailscale 配置:

sudo tailscale up 

或者等待一段时间,Tailscale 会自动同步新配置。

在 "DNS Servers" (DNS 服务器) 部分,点击 "Add nameserver" (添加 DNS 服务器)。

总结

当你在安装了 Tailscale 的虚拟机上遇到公共域名解析失败的问题时,请首先检查 /etc/resolv.conf 文件,确认其是否已被 Tailscale 接管。解决此类问题的核心在于:

  • 理解 Tailscale MagicDNS 的工作原理。
  • 根据需求选择解决方案: 临时下载可以暂停 Tailscale 并手动修改 DNS;长期使用则应在 Tailscale 管理界面中配置公共 DNS 服务器。

Read more

【Java 开发日记】我们来说一下 MySQL 的慢查询日志

【Java 开发日记】我们来说一下 MySQL 的慢查询日志

目录 一、什么是慢查询日志 二、核心作用 三、配置参数详解 四、开启和配置 1. 临时开启(重启失效) 2. 永久开启(修改配置文件) 五、慢查询日志格式分析 典型日志条目: 关键字段解释: 六、慢查询分析工具 1. mysqldumpslow(MySQL 自带) 2. pt-query-digest(Percona Toolkit) 3. mysqlslow(第三方工具) 七、慢查询日志表模式 启用表模式存储: 表结构: 八、最佳实践和优化建议 1. 阈值设置建议 2. 日志轮转配置 3. 定期分析计划 九、性能监控和告警 1. 监控慢查询数量 2. 慢查询告警脚本

By Ne0inhk
Java 大视界 -- Java 大数据在智能医疗远程康复数据管理与康复方案个性化定制实战(430)

Java 大视界 -- Java 大数据在智能医疗远程康复数据管理与康复方案个性化定制实战(430)

Java 大视界 -- Java 大数据在智能医疗远程康复数据管理与康复方案个性化定制实战(430) * 引言: * 正文: * 一、行业痛点与 Java 大数据的核心价值 * 1.1 远程康复行业核心痛点(数据来源:《中国远程康复医疗发展白皮书 2024》) * 1.2 Java 大数据的适配性与核心价值 * 二、智能远程康复系统架构设计实战 * 2.1 整体架构设计 * 2.2 核心技术栈选型(生产压测验证版) * 2.3 数据流转核心流程(带业务场景说明) * 三、远程康复数据全生命周期管理实战 * 3.1 多源数据采集实战(Flink 完整代码,含 Sink 实现) * 3.2 时序数据存储优化(HBase+InfluxDB

By Ne0inhk
从OpenClaw看AI智能体:IRSkills/MCP/RAG/Memory的协同实践

从OpenClaw看AI智能体:IRSkills/MCP/RAG/Memory的协同实践

一、开篇:OpenClaw 爆火背后的 AI Agent 技术本质 2026 年初,一款名为 OpenClaw(前身为 Clawdbot、Moltbot)的开源工具横空出世 —— 一个月内 GitHub 星标破 10 万,支持用户通过聊天窗口指挥它整理文件、发送邮件、部署代码,甚至远程控制服务器。它并非单纯的对话机器人,而是 AI Agent 技术落地的典型范本:以 “本地优先 + 自主执行” 为核心,将 IRSkills(技能库)、MCP(通信协议)、RAG(检索增强)、Memory(记忆系统)四大技术融为一体,完美诠释了 AI 智能体从 “能说” 到 “会做” 的进化路径。

By Ne0inhk
字节跳动AI IDE:Trae 完全上手指南——从零安装到熟练使用,开启AI驱动开发新范式

字节跳动AI IDE:Trae 完全上手指南——从零安装到熟练使用,开启AI驱动开发新范式

目录 * 前言:当IDE进化为智能体 * 1.初识Trae * 1.1 Trae是什么? * 1.2 Trae的核心优势 * 1.3 谁适合使用Trae? * 2.安装与初始配置 * 2.1 支持的操作系统 * 2.2 下载与安装步骤 * 2.3 验证安装成功 * 3.界面导航(五分钟熟悉布局) * 3.1 核心区域功能说明 * 3.2 常用快捷键速查 * 4.核心AI功能详解 * 4.1 Chat模式:随时提问的编程助手 * 4.2 Builder模式:自然语言生成完整项目 * 4.2.1 实战案例:做一个待办事项应用 * 4.

By Ne0inhk