要在 macOS 上实时监控 DNS 解析,需配置 dnsmasq 作为本地 DNS 代理并启用查询日志,再通过 tail -f 实时查看日志;具体包括安装 dnsmasq、编辑配置开启 log-queries 和指定日志路径、创建日志目录并赋权、将系统 DNS 设置为 127.0.0.1、刷新缓存、启动服务,最后用 tail -f /usr/local/var/log/dnsmasq.log 实时观察解析过程。

要在 macOS 上实时看到每次域名解析发生了什么,核心不是“查一次结果”,而是让系统把每条 DNS 请求都记下来,并即时显示出来。这需要两件事配合:一个能记录请求的本地 DNS 代理(比如 dnsmasq),和一个能持续读取日志的命令。
启用 dnsmasq 并打开查询日志
dnsmasq 是最轻量、最可控的本地 DNS 代理,它能把所有经手的查询原样记进日志:
- 用
brew install dnsmasq安装(没装 Homebrew 先装) - 编辑配置文件:
sudo nano /usr/local/etc/dnsmasq.conf - 确保包含这两行:
log-queries=extralog-facility=/usr/local/var/log/dnsmasq.log - 创建日志目录并赋权:
sudo mkdir -p /usr/local/var/log && sudo chown $(whoami):admin /usr/local/var/log
把系统 DNS 指向本地代理
否则请求根本不会经过 dnsmasq:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 在“系统设置 → 网络 → 当前连接 → 详细信息 → DNS”里,把
127.0.0.1加到顶部 - 保存后刷新缓存:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 启动服务:
sudo brew services start dnsmasq
用 tail -f 实时看日志
日志写入是追加式的,tail -f 就是为此设计的:
- 运行:
tail -f /usr/local/var/log/dnsmasq.log - 新开一个终端窗口,执行
dig example.com或打开浏览器访问网页 - 你会立刻看到类似这样的行:
Jun 25 14:22:03 dnsmasq[823]: query[A] example.com from 127.0.0.1Jun 25 14:22:03 dnsmasq[823]: reply example.com is 93.184.216.34
补充:想确认是否真在走本地代理?
光看日志还不够,可交叉验证:
- 查当前生效 DNS:
scutil --dns | grep nameserver,应含127.0.0.1 - 抓本地 53 端口流量:
sudo tcpdump -i lo0 port 53 -A,能看到原始 UDP 查询报文 - 测试直连是否通:
dig @127.0.0.1 google.com +short,有返回说明代理工作正常

















