Acrylic DNS Proxy搭建DNS缓存服务器

在Ubuntu上折腾了一阵DNSMASQ实在是不习惯,感觉Linux真是反人类,于是又回到了我大微软的的怀抱。
Acrylic DNS Proxy简单的讲就是一个DNS缓存服务器,一次查询后,以后直接从本地取ip,理论上讲访问网站速度更快了~更强大的功能在于他可以通配符配置hosts!

1.下载安装 Acrylic DNS Proxy

可直接去Acrylic官网下载,最新版本0.9.35去年11月更新的,不到600K的安装包,下载安装完成。

2.设置本地连接的DNS为127.0.0.1

在CMD里用nslookup命令看看是否工作在正常,如果出现请求超时,说明Acrylic的DNS有问题,这时需要修改配置文件。
nslookup

3.配置文件修改AcrylicConfiguration.ini

软件默认用的google的四个8为dns,有问题是很正常的~修改安装目录下名为AcrylicConfiguration.ini的文件。
PrimaryServerAddress为dns地址,比如PrimaryServerAddress=114.114.114.114,修改有效DNS后保存,重新启动。
软件还可设置SecondaryServerAddress等最多10个DNS服务器,很总要的一点,这里的查询方式是同时向所有的DNS服务器查询,取最快返回的那个结果。

[AllowedAddressesSection]节点下可设置允许局域网内的IP把本机作为DNS服务器,例如IP1=192.168.0.*,同样支持通配符。

配置文件还有很多选项,例如缓存白名单、指定特定域名通过特定DNS服务器解析等等,配置文件都是英文看着比较费力,可在Github查看AcrylicConfiguration中文对照

4.Acrylic缓存机制

查找顺序:AcrylicHosts.txt->AcrylicCache.dat
两个文件被分别看做静态缓存和动态缓存。顾名思义,静态缓存软件不会干预更新,动态缓存则会定期更新。
动态缓存里保存的记录有三个时间节点,存活时间(AddressCacheNegativeTime,AddressCacheScavengingTime)和静默更新时间(AddressCacheSilentUpdateTime)

AddressCacheNegativeTime=10//不友好的结果存活时间,不友好指超时或查询不存在
AddressCacheScavengingTime=57600//友好的结果存活时间
AddressCacheSilentUpdateTime=1440//结果静默更新时间

例如访问google.com,假如AcrylicHosts.txt没有记录的话,采用以上配置,会出现这几种情况:
1.查询结果无具体ip,比如“请求超时”,这个结果也会被缓存下来,10分钟内再次访问google.com仍然会返回“请求超时”这个结果;
2.第一次查询或者间隔查询时间大于57600分钟,马上通过DNS服务器查询,返回结果,然后缓存结果;
3.动态缓存有结果,再次访问间隔时间小于1440分钟,直接返回缓存结果,DNS服务器不查询;
4.动态缓存无结果,再次访问间隔时间大于1440分钟且小于57600分钟,直接返回缓存结果,DNS服务器仍然查询并更新缓存。