MacOS Unbound DNS 完整安装与配置指南
- 5
- 0
- 0
背景:
在企业办公网络或复杂的家庭网络中,通常存在“内网”和“外网”两套域名解析体系。例如,公司内部系统使用
lan.xxxxxx.cn这样的私有域名,而日常上网则依赖公共域名。一般企业可能会使用tailscale这类组网。如果将 macOS 的 DNS 直接指向公司内网 DNS(如
100.100.100.100),虽然能解析内网服务,但内网 DNS 往往不具备强大的外网解析能力,导致上网变慢甚至断网;反之,如果指向公共 DNS(如114.114.114.114),则无法访问公司内部系统。Split DNS(分离解析) 正是为了解决这一痛点而生的架构。本方案通过在本地部署 Unbound 作为“智能 DNS 网关”,完美实现了流量的分流:
内网请求:Unbound 识别到
lan.xxxxxx.cn后缀时,精准转发给公司内网 DNS。外网请求:Unbound 自动通过递归解析或转发给公共 DNS,保障高速上网。
隐私与安全:所有解析请求均由本机接管,避免了向第三方泄露浏览记录的风险。
一、核心路径差异说明(重要)
由于芯片架构不同,Homebrew的安装路径存在差异,请在操作时严格区分:
提示:如果不确定自己的Mac芯片类型,可以在终端执行uname -m。输出arm64为Apple Silicon,输出x86_64为Intel。
二、安装Unbound
1. 确保已安装Homebrew
代码
# 检查Homebrew是否已安装
brew --version2. 安装Unbound
代码
brew install unbound三、创建专属系统用户(解决macOS权限问题)
macOS默认没有unbound用户,且出于安全降权运行的需要,必须手动创建。
1. 清理可能存在的残留记录(若提示找不到可忽略)
代码
sudo dscl . -delete /Users/unbound2. 创建系统服务账号(系统会自动分配安全的UID)
代码
sudo sysadminctl \
-addUser unbound \
-password "UnboundFakePass123!@#" \
-admin NO \
-home /var/empty \
-shell /usr/bin/false \
-fullName "Unbound DNS User"3. 立即销毁密码(安全锁死)
代码
sudo dscl . -passwd /Users/unbound ""四、基础配置
1. 编辑Unbound的主配置文件
代码
# Apple Silicon Mac
sudo nano /opt/homebrew/etc/unbound/unbound.conf
# Intel Mac
sudo nano /usr/local/etc/unbound/unbound.conf2. 写入基础配置
代码
server:
# 监听本地回环地址和53端口
interface: 127.0.0.1
port: 53
# 允许本机查询
access-control: 127.0.0.1 allow
# 隐藏版本信息
hide-version: yes
# 启用DNSSEC验证
do-dnssec: yes
logfile: /usr/local/etc/unbound/log/unbound.log
# 内网域名转发规则(按需修改)
forward-zone:
name: "lan.xxxxxx.cn."
forward-addr: 100.100.100.100五、启动服务与验证
1. 检查配置语法
代码
# 初始化日志目录
sudo mkdir -p /usr/local/etc/unbound/log
sudo chown -R unbound /usr/local/etc/unbound/log
# Apple Silicon Mac
sudo unbound-checkconf /opt/homebrew/etc/unbound/unbound.conf
# Intel Mac
sudo unbound-checkconf /usr/local/etc/unbound/unbound.conf2. 启动服务
代码
# 手动启动验证
sudo unbound -d -v -c /usr/local/etc/unbound/unbound.conf
# 服务方式后台运行
sudo brew services start unbound3. 验证端口
代码
nc -zv 127.0.0.1 53六、切换系统DNS
1. 打开网络设置
●
系统设置 -> 网络 -> 当前连接(如Wi-Fi) -> 详细信息 -> DNS
2. 修改DNS设置
●
清空原有DNS列表
●
点击"+"添加127.0.0.1
●
点击"好"并"应用"
七、最终测试
1. 测试内网域名转发
代码
dig infra.argocd.lan.xxxxxx.cn2. 测试外网域名解析
代码
dig google.com3. 验证结果
●
返回NOERROR状态
●
带有正确的ANSWER SECTION
●
查询时间正常
八、常用维护命令
1. 服务管理
代码
# 启动服务
sudo brew services start unbound
# 停止服务
sudo brew services stop unbound
# 重启服务
sudo brew services restart unbound2. 查看日志
代码
# Apple Silicon Mac
sudo tail -f /opt/homebrew/var/log/unbound.log
# Intel Mac
sudo tail -f /usr/local/etc/unbound/log/unbound.log3. 检查服务状态
代码
brew services list | grep unbound九、故障排查
1. SERVFAIL错误
●
检查网络连通性:ping 100.100.100.100
●
确认VPN是否已连接
●
检查防火墙设置
2. 权限问题
●
确认unbound用户已正确创建
●
检查配置文件权限
●
查看系统日志
3. 端口冲突
●
检查53端口占用:lsof -i :53
●
关闭冲突服务
十、安全注意事项
1.
不要手动指定UID:避免与系统服务冲突
2.
禁用交互登录:确保/usr/bin/false shell设置
3.
定期更新:保持Unbound版本最新
4.
监控日志:定期检查运行日志
完成以上步骤后,您的Split DNS架构就已成功部署!
如有其他问题,欢迎随时咨询。