DNS Heaven icon

DNS Heaven

开源 免费

DNS Heaven 是一款用于解决 macOS 系统 DNS 污染和劫持的开源工具,通过 DoH 等加密方式保护网络隐私,同时提升网络稳定性与安全性,适用于需代理连接的特殊网络环境。

以下是 DNS Heaven 的详细介绍。


DNS Heaven

DNS Heaven 是一款专为 macOS 设计的小巧而强大的 DNS 工具,主要目的是修复 macOS DNS 栈的一个常见问题,使得依赖传统 /etc/resolv.conf 文件的命令行工具(如 dignslookup 以及基于 Go 语言编译的程序)能够正常使用 macOS 原生的高级 DNS 功能。

核心功能与优势

一、 解决 macOS DNS 栈的“分裂”问题

macOS 拥有一个功能强大的原生 DNS 解析系统(通过 scutil 管理),它支持许多高级特性。然而,许多传统的 Unix 工具和编程语言库(特别是 Go 语言)并不直接使用这个现代栈,而是去读取标准的 /etc/resolv.conf 文件。macOS 为了兼容性,只会在这个文件中写入一个简化的 DNS 配置(通常只有主 DNS 服务器和搜索域),这导致:

  • 问题: 高级 DNS 功能在这些工具中失效。例如,当你使用企业 VPN 并配置了“Split DNS”(根据域名分流解析)、或在不同网络接口(如 Wi-Fi 和以太网)设置了不同的 DNS 服务器时,dignslookup 等工具可能无法正确解析,因为它们无法感知这些复杂规则。
  • DNS Heaven 的解决方案: 它作为一个后台守护进程运行,持续监控 macOS 系统级的 DNS 配置,并将这些复杂规则代理、转换,最终让所有通过 /etc/resolv.conf 查询的工具都能获得与原生栈一致的解析结果。

二、 自动且透明的 DNS 代理

  1. 动态配置抓取: DNS Heaven 会定期执行 scutil --dns 命令,实时读取 macOS 当前的完整 DNS 设置,包括每个接口的 DNS、每个域的特定规则、搜索域列表等。
  2. 本地代理服务: 它在本地(127.0.0.1:53)启动一个轻量级 DNS 代理服务器。
  3. 劫持 resolv.conf 它将系统的 /etc/resolv.conf 文件内容固定指向 127.0.0.1(本地回环地址)。尽管 macOS 系统或网络变更会试图重写这个文件,但 DNS Heaven 会确保它始终指向自己。
  4. 智能转发: 当收到来自命令行工具的 DNS 查询请求时,DNS Heaven 会根据从系统读取的最新、最完整的规则,智能地将请求转发到正确的上游 DNS 服务器(例如,根据域名判断是走公司内网 DNS 还是公共 DNS),最后将结果返回给请求工具。

三、 简单便捷的安装与管理

  • 一键安装: 项目提供了极简的安装脚本。只需在终端中执行以下命令即可完成下载、安装和后台服务配置:
    curl -L https://git.io/fix-my-dns-plz | sudo bash
    
  • 自动运行: 安装脚本会自动配置一个 LaunchAgent,确保 DNS Heaven 在系统启动后始终在后台运行,无需用户手动干预。
  • 手动安装选项: 高级用户也可以从其 GitHub Releases 页面下载预编译的二进制文件,或自行从源码编译。

四、 相较于其他解决方案的优势(如 dnsmasq)

DNS Heaven 的设计哲学是 “零配置”“完全遵循系统设置”,这与 dnsmasq 等强大但需要手动配置的工具形成了鲜明对比:

特性 DNS Heaven dnsmasq (传统用法)
配置复杂度 零配置,自动同步系统所有 DNS 设置。 手动配置上游转发器、规则等,较为复杂。
上游服务器 自动使用当前网络(如 DHCP 下发的)或系统手动设置的 DNS 服务器,动态适应环境变化 通常需静态指定(如 8.8.8.8),在切换网络(如从公司到家庭)时可能不适用。
Split DNS 支持 完美支持,因为它直接继承了 macOS 原生栈的全部规则。 支持,但需要针对每个域名手动编写配置规则,无法自动同步系统在 VPN 等场景下的复杂设置。
核心目标 修复兼容性问题,让所有工具都看到一致的、正确的 DNS 视图。 提供高度可定制的 DNS/DHCP 服务,功能更强大但用起来更“重”。

总结:DNS Heaven 能为你带来什么?

  • 无缝体验: 安装后,你无需改变任何使用习惯。无论是原生 macOS 应用、通过 VPN 工作的开发者工具,还是古老的 Unix 命令行工具,它们的 DNS 解析行为都将保持一致和正确。
  • 系统友好: 它不替代 macOS 的原生网络栈,而是作为一个智能的“翻译官”或“适配器”,弥合了现代系统功能与传统工具之间的鸿沟。
  • 轻量可靠: 作为一个用 Go 语言编写的小型单一守护进程,它资源占用极低,且稳定性高。

适用人群: 经常需要在 macOS 上使用命令行网络工具、使用 VPN(尤其是企业 VPN 带有 Split DNS)、或在复杂网络环境下工作的开发者、系统管理员和高级用户。

许可证: MIT 开源协议。

获取与支持:

  • 通过 GitHub Issues 提交问题或反馈。

本站所有软件全部同步自 Awesome mac项目;内容全部由 Awesome mac项目整理获得,应用版权归原作者所有。

相关推荐