Acrylic DNS Proxy, 其官网为 https://mayakron.altervista.org/support/acrylic/Home.htm ,是适用于 Windows 的本地 DNS 代理服务器,它通过缓存来自 DNS 服务器的响应来提高计算机的性能,并可通过自定义 HOSTS 文件抵御不需要的广告,该文件经过优化,可处理数十万个域名,并支持通配符和正则表达式。支持 UDP,TCP,SOCKS5,DOH (DNS-over-HTTPS) 等多种DNS协议。
安装使用
推荐下载便捷版(Portable for Windows),解压缩到合适的目录里(比如 D:\\tools\AcrylicDNSProxy-Portable ),运行其中AcrylicUI.exe,在主窗口菜单 – Actions 里面有安装服务、运行停止服务等操作,安装后即可在Windows的服务管理中管理,设置成自动或手动。
安装目录里还有如下两个文件:主配置文件(AcrylicConfiguration.ini),HOSTS文件(AcrylicHosts.txt),可按需要做相应编辑。也可以通过 主窗口菜单 – File 做编辑,不过使用您习惯的编辑器会更顺手。
主配置文件(AcrylicConfiguration.ini)
该文件是 int 格式,看起来很长,但多半都是配置参数的说明,非常详细,推荐通读一遍。下面是可能有必要修改的几处。
主服务器地址
PrimaryServerAddress=8.8.8.8 PrimaryServerPort=53 PrimaryServerProtocol=UDP PrimaryServerDoHProtocolPath= PrimaryServerDoHProtocolHost=
主服务器地址,或者说上级DNS服务器地址。严格来说我们在本地运行的只是一个代理,它要从真正的DNS服务器请求解析、然后缓存起来。默认配置里使用的是 Google的公共DNS、走UDP协议;在75行起还有几套别的服务,注释起来的。
160行起,还有很多套备选DNS服务器(Secondary, Tertiary, Quaternary, Quinary, Senary, Septenary, Octonary, Nonary, Denary),没错,这一堆单词就是第二到第十,除了第二套 Secondary 之外,都是空配置。
这些上级服务器,我们可以使用运营商通过DHCP下发的DNS服务,默认都是走UDP 53端口。鉴于DNS协议太古老了,而且容易被劫持或干扰,像Android,Windows 11, Firefox、Chrome 浏览器等新设备都开始支持走SSL/TSL的新协议,如DoH,出于安全起见,我们可以使用后面建议改成本地
公共dns服务器,可以参考 https://dns.icoa.cn/ 找合适的服务器,(只看DoH服务 https://dns.icoa.cn/dot-doh/ )
本地服务的监听地址与端口
LocalIPv4BindingAddress=0.0.0.0 LocalIPv4BindingPort=53 LocalIPv6BindingAddress=0:0:0:0:0:0:0:0 LocalIPv6BindingPort=53
本地监听地址,默认监听所有IP地址的53端口,这里应该没有DoH等的支持,毕竟Acrylic只是服务于本地网络的代理,这属于对可信区域内部的加速。
不过,即使这里监听了0.0.0.0,事实上它仍然只接受 127.0.0.1 上的请求。
提供服务的本地IP范围
Acrylic默认只接受 127.0.0.1 上的请求,要允许其他机器的的请求,就要通过 [AllowedAddressesSection] 指定,比如
[AllowedAddressesSection] IP1=192.168.1.*
或者干脆 IP1=*
解析命中日志 Hit Log
如果有需要,可以启用,记录下由Acrylic承载的解析日志
HitLogFileName=HitLog.%DATE%.txt
直接写到安装目录下,或者操作系统的临时目录中, 548行有示例。
另外还有个Debug日志, AcrylicDebug.txt ,要在主窗口 – 菜单 – Action – Active Acrylic Debug Log 开启/关闭(Deacive…)
配置HOSTS文件
Acryilc 本身还有一套Hosts文件 AcrylicHosts.txt,支持正则表达式,可以屏蔽掉一些不受欢迎的域名 。不过,一般情况,使用Adblock之类的浏览器扩展更实用。
简单评论一下
主观的评价一下,结合使用经验。
安装使用Acrylic是因为:本地网络环境屏蔽了对外的53端口,只能使用默认的DNS服务,所以考虑通过 DoH服务绕开这个限制。结果是,网络环境还有进一步的屏蔽,一些受限网站的tcp连接会直接被阻断掉,于是,拿到了有效的解析仍然是没用的(没错,就像十几年前的gxx升级,让HOSTS修改大法失效)。
走SSL/TLS协议的DNS请求,确实可以防止DNS污染、投毒;然而,这方面的受益其实也非常之小了。当前HTTPS已经广泛应用,污染投毒已经基本没了市场;而且一般来说,电信运营商下发的DNS一般情况下还算是可靠的,可以基本信任。
不过,Hit Log 还是有意义的,记录了一下本机对哪些域名发起了请求,有点参考意义。