手动架设DNS缓存服务-Acrylic DNS Proxy

//火狐教程:、,,,,本文;国内关于ADP 这个工具的使用方法恐怕第一个就是我了,在我还没开始研究Firefox 的时候就已经将该扩展的配置方法翻译过来了●安装一个dns 缓存服务软件:;;任务栏托

//火狐教程:、,,,,本文;

国内关于ADP 这个工具的使用方法恐怕第一个就是我了,在我还没开始研究Firefox 的时候就已经将该扩展的配置方法翻译过来了

●安装一个dns 缓存服务软件:;;任务栏托盘监控器;●在开始菜单中找到该程序,打开配置文件,修改

,以;开始的行都是注释,可以删除,只留下关键设置处:

[GlobalSection]; Affinity Mask参数表示DNS 服务器关联域名类,比如PrimaryServerAffinityMask=*.com;*.org表示使用Google 的DNS 服务器8.8.8.8来专门解析为com 和org 的请求;; 注意,各个参数值用分号; 隔开;如果要表示出了com 和org 之外的所有DNS 请求,用^*.com;^*.org;*来表示,最后的*号不能忘记; 这个新增的参数比较人性化,可以将不同的域名与DNS 服务器关联,从而既能用国外的流行的DNS 服务器解析到比较罕见的域名,又可用国内DNS 服务器解析到国内的域名*.cn;; PrimaryServerAffinityMask=*.aero;*.arpa;*.asia;*.biz;*.cat;*.coop;*.edu;*.gov;*.int;*.info;*.jobs;*.mil;*.mobi;*.museum;*.name;*.org;*.pro;*.tel;*.travel;*.xxxPrimaryServerAddress=8.8.8.8PrimaryServerPort=53IgnoreNegativeResponsesFromPrimaryServer=Yes;

SecondaryServerAffinityMask=^*.aero;^*.arpa;^*.asia;^*.biz;^*.cat;^*.coop;^*.edu;^*.gov;^*.int;^*.info;^*.jobs;^*.mil;^*.mobi;^*.museum;^*.name;^*.org;^*.pro;^*.tel;^*.travel;^*.xxx;*SecondaryServerAddress=202.99.160.68SecondaryServerPort=53IgnoreNegativeResponsesFromSecondaryServer=Yes; TertiaryServerAffinityMask=^*.aero;^*.arpa;^*.asia;^*.biz;^*.cat;^*.coop;^*.edu;^*.gov;^*.int;^*.info;^*.jobs;^*.mil;^*.mobi;^*.museum;^*.name;^*.org;^*.pro;^*.tel;^*.travel;^*.xxx;*TertiaryServerAddress=202.99.160.4TertiaryServerPort=53IgnoreNegativeResponsesFromTertiaryServer=Yes; ; ADP的显示,从2013.08.25日,ADP 服务支持10个预设的DNS 服务器;下面是第4~10个DNS 服务器设置参数;; 如果这10个参数均置空,表示使用ADP 缓存的静态DNS 表,不会进行任何联网DNS 解析请求;

QuaternaryServerAffinityMask=QuaternaryServerAddress=QuaternaryServerPort=53; IgnoreNegativeResponsesFromQuaternaryServer=Yes; QuinaryServerAffinityMask=QuinaryServerAddress=QuinaryServerPort=53; IgnoreNegativeResponsesFromQuinaryServer=Yes

SenaryServerAffinityMask=SenaryServerAddress=SenaryServerPort=53; IgnoreNegativeResponsesFromSenaryServer=Yes; SeptenaryServerAffinityMask=SeptenaryServerAddress=SeptenaryServerPort=53; IgnoreNegativeResponsesFromSeptenaryServer=Yes; OctonaryServerAffinityMask=OctonaryServerAddress=OctonaryServerPort=53; IgnoreNegativeResponsesFromOctonaryServer=Yes; NonaryServerAffinityMask=NonaryServerAddress=NonaryServerPort=53; IgnoreNegativeResponsesFromNonaryServer=Yes; DenaryServerAffinityMask=DenaryServerAddress=DenaryServerPort=53; IgnoreNegativeResponsesFromDenaryServer=Yes; ; 以上为3个最快的DNS 服务器,自己用测一下,找ping 值最低;; 但是你也可以使用自定义的dns 服务器,如或者googleDNS ;缺省为;

;

;-----------------------------------------------------------------------------------------; ADP缓存匹配方法:; 当Acrylic 收到DNS 请求时,首先查找AcrylicHosts.txt 文件中的静态缓存表,若没找到则继续查找AcrylicCache.dat 中的动态缓存表,此时又3种情况:

,

; Case 1:ADP 收到其他客户端(浏览器等)的DNS 请求的相应结果的不在缓存池中,或者在缓存中,但该答复结果比AddressCacheScavengingTime 规定的的有效结果的生命期老,; 此时ADP 便将DNS 请求发送到所有的预设的DNS 服务器,之后等待... ,直到收到一个最早答复的结果为止(其他后续的答复都不管了)

; Case 2:ADP 收到的DNS 请求的结果在其本地缓存池中,但是该结果比AddressCacheSilentUpdateTime 规定的时间老,但小于AddressCacheScavengingTime 的值,; 即该请求存在一个有效的结果,且结果的缓存期/生命期还未结束,但需要自动更新一下了,这时ADP 一方面将缓存的结果送回客户端,另一方面重复Case 的操作,后台更新该结果; Case 3:ADP 收到客户端的DNS 请求的有效结果在其缓存池中,其比自动更新的期限年轻,则直接返回该结果给客户端,无须对预设的DNS 服务器进行任何网络请求;

; 使用ADP 默认参数设置理论上已经可以很大程度上boost 你的DNS 请求性能和效率,但如果你想得到最佳效率,你可能需要如下参数:; AddressCacheNegativeTime :失效的答复结果的缓存时间?分钟; AddressCacheScavengingTime :有效的答复结果的缓存时间?分钟; AddressCacheSilentUpdateTime :缓存过期时间?分钟,即当收到的DNS 请求已经缓存在数据库中,但过期了,此时便重新发起DNS 请求,并刷新本地的DNS 相应条目; 注意,失效的DNS 答复结果一般的缓存的生命期远小于有效的答复结果

AddressCacheNegativeTime=57600AddressCacheScavengingTime=57600AddressCacheSilentUpdateTime=2147483647;-----------------------------------------------------------------------------------------AddressCacheDisableCompression=No; 不压缩数据库?数据库压缩使用LZO ,速度很快,建议不要关闭压缩LocalBindingAddress=0.0.0.0LocalBindingPort=53HitLogFileName=R:HitLog.txtHitLogFileWhat=BHCFRUStatsLogFileName=R:�rylic_perf.txt; 自定义日志路径,如果确顶已经生效了,可以不使用日志,减少CPU 占用; B -> Explicitly blocked ,拦截的; H -> Resolved from the HOSTS cache ,从host 中解析的; C -> Resolved from the Acrylic cache,从Acrylic 缓存中解析的; F -> Forwarded to the configured DNS servers,发送到配置的DNS 服务器的; R -> Received from one of the configured DNS servers,从配置的DNS 服务器收到的; U -> Silent update from one of the configured DNS servers,从配置的DNS 服务器之一自动静默更新的;-----------------------------------------------------------------------------------------[AllowedAddressesSection]; 支持NDS 解析的的IP 网段?; 出于安全考虑,ADP 默认只接受来自本机的IP 的DNS 解析请求,拒绝来自非本机的IP 地址的DNS 解析请求;; 但如果有需要,ADP 可以被设置允许处理某些特定IP/IP网段的DNS 解析请求;; 每个IP 地址/IP网段前要有一个关键字,比如IP1=;

; 出于性能考虑,可以用子网段格式表示时,尽量不要用一堆的IP 地址表示;; 如非必要,尽量不要使用IP1=*这种方式,等价于使本机完全成为一台DNS 服务器;; 其实,这个功能可以被广泛用来进行DNS 类型的攻击,比如DNS 劫持啊,或者更高级的钓鱼啊; IP1=192.168.45.254 -- 单一的IP 地址; IP2=192.168.44.100 -- 另一个IP 地址; IP3=192.168.100.* -- 所有192.168.100的IP 网段; IP4=172.16.* -- 所有以172.16开始的网段;-----------------------------------------------------------------------------------------[CacheExceptionsSection][WhiteExceptionsSection]

●把本地连接和无线连接的dns 服务器改为手动,第一地址改为127.0.0.1以回环到本机的域名解析服务ADP Service, 同时禁用DNS Client Service(该服务与Acrylic DNS Proxy Service

服务功能类似,但不及后者强大);有时候Acrylic DNS Proxy Service服务无法启动(这是因为使用了慢速刷新策略的原因,所以推荐用中速刷新或者快速刷新策略)

●修改Acrylic 的host 配置文件还可以添加正则表达式,;

下面是我在宿舍上了一天网的Statistic 数据日志:

StartTime : 2012-04-20 08:18:25CurrentTime : 2012-04-20 22:16:31TotalPacketsDiscarded : 0TotalRequestsReceived : 13683 总计请求解析次数 = 提交dns 服务器次数 缓存池解析次数TotalRequestsForwarded : 2033 总共提交dns 服务器解析次数(总共发送了2000次左右的DNS 解析,其余均无需再次发送DNS 解析了)TotalRequestsResolvedThroughCache : 11650 通过缓存池解析的DNS 解析次数(这个数值越高,表示命中次数越高)TotalRequestsResolvedThroughHostsFile : 0

,

TotalRequestsResolvedThroughOtherWays : 0TotalResponsesReceivedFromDns1: 1995 第一dns 服务器解析次数MeanResponseTimeOfDns1mSeconds : 282.2 第一dns 服务器平均解析时间TotalResponsesReceivedFromDns2: 2005 第二dns 服务器解析次数MeanResponseTimeOfDns2mSeconds : 61.8 第二dns 服务器平均解析时间TotalResponsesReceivedFromDns3: 0MeanResponseTimeOfDns3mSeconds : ?通过检测器可以更加方便的查看解析数据,还能方便的修改ADP 设置与服务:

ADPM 的菜单:

●●●●●●●●●●●●●●●●●File->Start Automatically 自动开机启动检测器File->Start Minimized 启动后自动最小化File->Load at Start 启动ADPM 后自动加载Hit LogFile->Save Hit Log 将当前的命中率日志保存到文件中File->Flush Hit Log 将命中率日志清零 Edit->Configuration 设置ADP 配置文件Edit->Host File 设置ADP 的host 文件Edit->Restart App 重启ADPM 检测器 View->Oberve Service 监视ADP 后台服务View->Observe Hit Log 监测命中率日志文件View->Observe Statistics 检测ADP 数据统计文件 Tool->Stop Service 停止

ADP 服务Tool->Restart Service 重启ADP 服务Tool->Purge Cache 重置AcrylicCache.dat 数据库

ADP-Monitor 日志:

DNS 数据库刷新时间:

; 快速刷新NDS 策略:如果你比较在乎缓存的结果是否够新,比如你在LAN 中使用DHCP 分配的临时地址,可以将无效结果的缓存时间和自动更新时间缩小; AddressCacheNegativeTime=60; AddressCacheScavengingTime=600; AddressCacheSilentUpdateTime=60; ; 中速刷新策略:如果你的DNS 服务器很不稳定,比如国外的一些被GFW 污染的DNS 服务器,而你又不想被中断网络操作,将有效/无效结果缓存时间设置较大些AddressCacheNegativeTime=57600AddressCacheScavengingTime=57600AddressCacheSilentUpdateTime=30; ; 缓慢刷新策略:如果你比较在乎带宽消耗,同时又不太在意DNS 结果是否够新,将所有3个参数值设的较大,例如:; AddressCacheNegativeTime=57600; AddressCacheScavengingTime=57600; AddressCacheSilentUpdateTime=2147483647

标签: