在 Mac 上搭建 DNS 服务器
本文详细介绍了在Mac上使用dnsmasq搭建轻量级DNS服务器的完整流程。主要内容包括:1)通过Homebrew安装dnsmasq;2)配置主文件设置本地解析(含通配符支持)和上游DNS;3)创建日志文件并设置权限;4)启动服务与防火墙配置;5)提供测试方法和管理脚本;6)给出安全增强建议。该方案特别适合内网开发环境,能有效管理自定义域名解析,同时支持DHCP服务扩展和DNS缓存优化,最后还列出
·
我们将在Mac上使用dnsmasq搭建轻量级DNS服务器,实现内网域名解析。
步骤概览:
- 安装dnsmasq
- 配置dnsmasq
- 启动dnsmasq服务
- 设置Mac为本机DNS服务器(可选,用于测试)
- 配置其他设备使用此DNS服务器
详细步骤:
在 Mac 上搭建 DNS 服务器的完整指南
选择 DNS 服务器软件
在 macOS 上推荐使用 dnsmasq,它轻量且配置简单:
# 安装 dnsmasq
brew install dnsmasq
完整配置流程
1. 创建配置文件
# 创建主配置文件
sudo nano /usr/local/etc/dnsmasq.conf
添加以下内容:
# 基本配置
port=53
listen-address=127.0.0.1,192.168.1.100 # 添加你的Mac局域网IP
bind-interfaces
no-hosts # 不使用系统hosts文件
domain-needed
bogus-priv
# 自定义域名解析
address=/test.abchina.com.cn/10.100.81.111
address=/umapmgs.test.abchina.com.cn/10.100.81.111
# 上游DNS
server=8.8.8.8
server=1.1.1.1
# 日志记录
log-queries
log-facility=/var/log/dnsmasq.log
2. 创建日志文件并设置权限
sudo touch /var/log/dnsmasq.log
sudo chown $(whoami) /var/log/dnsmasq.log
3. 启动 DNS 服务
# 启动服务并设置开机自启
sudo brew services start dnsmasq
# 检查服务状态
brew services list | grep dnsmasq
4. 配置 macOS 防火墙
# 允许 DNS 流量
sudo /usr/libexec/ApplicationFirewall/socketfilterfw \
--add /usr/local/sbin/dnsmasq \
--unblockapp /usr/local/sbin/dnsmasq
5. 测试 DNS 服务器
# 使用 dig 测试
dig umapmgs.test.abchina.com.cn @127.0.0.1
# 使用 nslookup 测试
nslookup umapmgs.test.abchina.com.cn 127.0.0.1
到第五步就已经可以了,代表搭建成功
6. 配置其他设备使用此 DNS
- Mac 本机:
networksetup -setdnsservers Wi-Fi 127.0.0.1
- iPhone:
- 进入 Wi-Fi 设置
- 点击当前网络旁的 ⓘ 图标
- 配置 DNS → 手动
- 添加你的 Mac 局域网 IP (如 192.168.1.100)
- 路由器(推荐):
- 登录路由器管理界面
- 找到 DHCP/DNS 设置
- 设置首选 DNS 为你的 Mac IP
高级配置选项
添加通配符域名解析
在配置文件中添加:
# 所有 *.dev 子域名都指向 192.168.1.100
address=/dev/192.168.1.100
设置 DNS 缓存大小
# 设置缓存大小(默认150条)
cache-size=1000
配置 DHCP 服务(可选)
# 启用 DHCP
dhcp-range=192.168.1.50,192.168.1.150,12h
dhcp-option=option:router,192.168.1.1
管理命令
# 重启服务
sudo brew services restart dnsmasq
# 停止服务
sudo brew services stop dnsmasq
# 查看日志
tail -f /var/log/dnsmasq.log
# 测试配置文件
dnsmasq --test
常见问题解决
|
问题 |
解决方案 |
|
端口 53 被占用 |
sudo lsof -i :53 查找占用进程并停止 |
|
无法解析外部域名 |
检查上游 DNS 配置,确保能访问 8.8.8.8 |
|
客户端无法连接 |
检查防火墙设置和 listen-address 配置 |
|
解析延迟高 |
增加 cache-size 或更换上游 DNS |
|
服务无法启动 |
运行 dnsmasq --test 检查配置错误 |
创建自动化管理脚本
#!/bin/bash
# dnsmasq-manager.sh
case $1 in
start)
sudo brew services start dnsmasq
;;
stop)
sudo brew services stop dnsmasq
;;
restart)
sudo brew services restart dnsmasq
;;
status)
brew services list | grep dnsmasq
;;
log)
sudo tail -f /var/log/dnsmasq.log
;;
add)
echo "address=/$2/$3" | sudo tee -a /usr/local/etc/dnsmasq.conf
sudo brew services restart dnsmasq
;;
*)
echo "Usage: $0 {start|stop|restart|status|log|add domain ip}"
exit 1
esac
使用示例:
# 添加新域名解析
./dnsmasq-manager.sh add test.example.com 192.168.1.200
# 查看日志
./dnsmasq-manager.sh log
安全增强建议
- 限制访问范围:
# 只允许本地和局域网访问
listen-address=127.0.0.1,192.168.1.0/24
- 启用 DNSSEC:
dnssec
dnssec-check-unsigned
- 防止 DNS 劫持:
# 过滤广告域名
address=/adserver.example/0.0.0.0
- 定期更新:
brew update && brew upgrade dnsmasq
通过此配置,你已成功在 Mac 上搭建了功能完整的 DNS 服务器,可以为局域网提供域名解析服务,特别是内部开发域名的解析。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)