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

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

问题排查

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

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

检查网络连通性 (初步判断):
Ping IP 地址: 尝试 ping 8.8.8.8 (Google 公共 DNS)。 如果 ping 成功,说明虚拟机到互联网的网络路由是通的,问题不在于基本的网络连接,而很可能在 DNS 解析层面。 如果 ping 失败,则需要检查虚拟机的网络配置(如桥接模式是否正确配置,宿主机网络是否正常)。

Ping 域名: 尝试 ping baidu.com。 由于最初的报错就是域名解析失败,这一步自然也失败了。

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

得到的输出如下:

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

确认 Tailscale 运行状态:

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

解决方案

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

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

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

备份/etc/resolv.conf:

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

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

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

验证 DNS 解析是否生效:

成功 ping 通。

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

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

方案二:在 Tailscale 管理界面配置公共 DNS 服务器 (永久解决方案)
这是更推荐的长期解决方案,允许你在 Tailscale 启用时也能解析公共域名。

登录 Tailscale 管理界面: 访问 Tailscale 并使用您的 Tailscale 账号登录。

配置 DNS 服务器:

1.在 “DNS Servers” (DNS 服务器) 部分,点击 “Add nameserver” (添加 DNS 服务器)。

2.输入公共 DNS 服务器地址,例如 8.8.8.8 或 114.114.114.114。

3.重要: 确保勾选了 “Override local DNS” (覆盖本地 DNS) 选项(或者 “Use Tailscale DNS settings exclusively” 等类似选项,具体措辞可能随版本变化)。这将告诉 Tailscale 将所有 DNS 查询都通过其服务进行处理,包括转发公共域名。

4.保存更改。

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

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

验证 DNS 解析:

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

理解 Tailscale MagicDNS 的工作原理。

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

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注