最近在本地开发时经常遇到DNS解析慢、被污染的问题,尝试了各种方案后发现 Acrylic DNS Proxy 这个轻量级工具,用下来效果不错。分享下从安装到调优的全过程,给同样被DNS问题困扰的小伙伴参考。

为什么需要本地DNS代理?

开发时经常需要测试域名映射(比如把 test.com 指向本地 127.0.0.1),或者访问某些被污染的域名。直接改系统Hosts文件虽然简单,但缺乏缓存和灵活性。Acrylic 作为本地DNS代理提供了:

  • 高性能缓存:减少重复查询耗时
  • 灵活规则:支持Hosts文件+自定义规则
  • 隐私保护:可配置DoH/DoT加密DNS
  • 轻量无依赖:仅一个exe+配置文件

DNS代理工作原理

安装与基础配置(Windows)

  1. 下载安装: 从官网下载最新版,解压到 C:\Acrylic 这类无空格路径

  2. 注册系统服务(管理员权限运行CMD):

    acrylic-windows-service.exe /install
    acrylic-windows-service.exe /start
  3. 修改系统DNS: 进入「网络适配器设置」→「IPv4属性」→ 将DNS服务器改为 127.0.0.1

核心功能实战

1. 配置上游DNS服务器

编辑 acrylic.ini,推荐使用Cloudflare的DoH(DNS-over-HTTPS):

[Global]
; 主DNS服务器(DoH加密)
PrimaryServer = https://1.1.1.1/dns-query
; 备用DNS服务器
SecondaryServer = 8.8.8.8
TertiaryServer = 114.114.114.114

2. 自定义Hosts规则

在配置文件末尾添加(支持通配符):

[Hosts]
127.0.0.1    dev.test.com
192.168.1.100  *.internal

3. 缓存优化关键参数

[Cache]
; 缓存存活时间(秒)
MaxCacheTTL=3600
; 主动刷新临近过期的记录
ttl-refresh=300
; 最大缓存条目数
MaxCacheEntries=5000

完整配置示例

[Global]
; 主DNS:Cloudflare DoH
PrimaryServer = https://1.1.1.1/dns-query
; 备用DNS:Google DNS
SecondaryServer = 8.8.8.8
; 第三备用:国内DNS
TertiaryServer = 114.114.114.114

[Cache]
MaxCacheTTL=3600
ttl-refresh=300
MaxCacheEntries=5000

[Hosts]
; 开发环境域名映射
127.0.0.1    local.api
192.168.1.10  mysql.internal

避坑指南

53端口冲突

如果提示端口被占用,通常是其他DNS服务(如DNSmasq)冲突: 1. 用命令排查占用进程:

netstat -ano | findstr :53
2. 结束冲突进程或修改Acrylic监听端口(需同步改防火墙规则)

系统代理设置

  • 关闭浏览器「使用系统代理」选项
  • 确保VPN软件没有强制修改DNS

内存溢出防范

  • 定期重启服务(可设计划任务)
  • 监控缓存大小:
    acrylic-control.exe /statistics

进阶建议

  • 结合 Pi-hole 实现广告过滤
  • dig 命令测试响应速度:
    dig @127.0.0.1 example.com
  • 启用DNSSEC验证(需上游DNS支持)

性能测试对比

实际使用下来,原本需要200ms的DNS查询现在平均20ms内完成,本地开发效率提升明显。遇到问题可以查看 acrylic-console.exe 的输出日志,大部分错误都有明确提示。

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐