手動架設DNS緩存服務-Acrylic DNS Proxy
//火狐教程:、,,,,本文;國內(nèi)關于ADP 這個工具的使用方法恐怕第一個就是我了,在我還沒開始研究Firefox 的時候就已經(jīng)將該擴展的配置方法翻譯過來了●安裝一個dns 緩存服務軟件:;;任務欄托
//火狐教程:、,,,,本文;
國內(nèi)關于ADP 這個工具的使用方法恐怕第一個就是我了,在我還沒開始研究Firefox 的時候就已經(jīng)將該擴展的配置方法翻譯過來了
●安裝一個dns 緩存服務軟件:;;任務欄托盤監(jiān)控器;●在開始菜單中找到該程序,打開配置文件,修改

,以;開始的行都是注釋,可以刪除,只留下關鍵設置處:
[GlobalSection]; Affinity Mask參數(shù)表示DNS 服務器關聯(lián)域名類,比如PrimaryServerAffinityMask=*.com;*.org表示使用Google 的DNS 服務器8.8.8.8來專門解析為com 和org 的請求;; 注意,各個參數(shù)值用分號; 隔開;如果要表示出了com 和org 之外的所有DNS 請求,用^*.com;^*.org;*來表示,最后的*號不能忘記; 這個新增的參數(shù)比較人性化,可以將不同的域名與DNS 服務器關聯(lián),從而既能用國外的流行的DNS 服務器解析到比較罕見的域名,又可用國內(nèi)DNS 服務器解析到國內(nèi)的域名*.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 服務器設置參數(shù);; 如果這10個參數(shù)均置空,表示使用ADP 緩存的靜態(tài)DNS 表,不會進行任何聯(lián)網(wǎng)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 文件中的靜態(tài)緩存表,若沒找到則繼續(xù)查找AcrylicCache.dat 中的動態(tài)緩存表,此時又3種情況:
,; Case 1:ADP 收到其他客戶端(瀏覽器等)的DNS 請求的相應結果的不在緩存池中,或者在緩存中,但該答復結果比AddressCacheScavengingTime 規(guī)定的的有效結果的生命期老,; 此時ADP 便將DNS 請求發(fā)送到所有的預設的DNS 服務器,之后等待... ,直到收到一個最早答復的結果為止(其他后續(xù)的答復都不管了)
; Case 2:ADP 收到的DNS 請求的結果在其本地緩存池中,但是該結果比AddressCacheSilentUpdateTime 規(guī)定的時間老,但小于AddressCacheScavengingTime 的值,; 即該請求存在一個有效的結果,且結果的緩存期/生命期還未結束,但需要自動更新一下了,這時ADP 一方面將緩存的結果送回客戶端,另一方面重復Case 的操作,后臺更新該結果; Case 3:ADP 收到客戶端的DNS 請求的有效結果在其緩存池中,其比自動更新的期限年輕,則直接返回該結果給客戶端,無須對預設的DNS 服務器進行任何網(wǎng)絡請求;
; 使用ADP 默認參數(shù)設置理論上已經(jīng)可以很大程度上boost 你的DNS 請求性能和效率,但如果你想得到最佳效率,你可能需要如下參數(shù):; AddressCacheNegativeTime :失效的答復結果的緩存時間?分鐘; AddressCacheScavengingTime :有效的答復結果的緩存時間?分鐘; AddressCacheSilentUpdateTime :緩存過期時間?分鐘,即當收到的DNS 請求已經(jīng)緩存在數(shù)據(jù)庫中,但過期了,此時便重新發(fā)起DNS 請求,并刷新本地的DNS 相應條目; 注意,失效的DNS 答復結果一般的緩存的生命期遠小于有效的答復結果
AddressCacheNegativeTime=57600AddressCacheScavengingTime=57600AddressCacheSilentUpdateTime=2147483647;-----------------------------------------------------------------------------------------AddressCacheDisableCompression=No; 不壓縮數(shù)據(jù)庫?數(shù)據(jù)庫壓縮使用LZO ,速度很快,建議不要關閉壓縮LocalBindingAddress=0.0.0.0LocalBindingPort=53HitLogFileName=R:HitLog.txtHitLogFileWhat=BHCFRUStatsLogFileName=R:?rylic_perf.txt; 自定義日志路徑,如果確頂已經(jīng)生效了,可以不使用日志,減少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,發(fā)送到配置的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 網(wǎng)段?; 出于安全考慮,ADP 默認只接受來自本機的IP 的DNS 解析請求,拒絕來自非本機的IP 地址的DNS 解析請求;; 但如果有需要,ADP 可以被設置允許處理某些特定IP/IP網(wǎng)段的DNS 解析請求;; 每個IP 地址/IP網(wǎng)段前要有一個關鍵字,比如IP1=;

; 出于性能考慮,可以用子網(wǎng)段格式表示時,盡量不要用一堆的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 網(wǎng)段; IP4=172.16.* -- 所有以172.16開始的網(wǎng)段;-----------------------------------------------------------------------------------------[CacheExceptionsSection][WhiteExceptionsSection]
●把本地連接和無線連接的dns 服務器改為手動,第一地址改為127.0.0.1以回環(huán)到本機的域名解析服務ADP Service, 同時禁用DNS Client Service(該服務與Acrylic DNS Proxy Service
服務功能類似,但不及后者強大);有時候Acrylic DNS Proxy Service服務無法啟動(這是因為使用了慢速刷新策略的原因,所以推薦用中速刷新或者快速刷新策略)
●修改Acrylic 的host 配置文件還可以添加正則表達式,;
下面是我在宿舍上了一天網(wǎng)的Statistic 數(shù)據(jù)日志:
StartTime : 2012-04-20 08:18:25CurrentTime : 2012-04-20 22:16:31TotalPacketsDiscarded : 0TotalRequestsReceived : 13683 總計請求解析次數(shù) = 提交dns 服務器次數(shù) 緩存池解析次數(shù)TotalRequestsForwarded : 2033 總共提交dns 服務器解析次數(shù)(總共發(fā)送了2000次左右的DNS 解析,其余均無需再次發(fā)送DNS 解析了)TotalRequestsResolvedThroughCache : 11650 通過緩存池解析的DNS 解析次數(shù)(這個數(shù)值越高,表示命中次數(shù)越高)TotalRequestsResolvedThroughHostsFile : 0
,TotalRequestsResolvedThroughOtherWays : 0TotalResponsesReceivedFromDns1: 1995 第一dns 服務器解析次數(shù)MeanResponseTimeOfDns1mSeconds : 282.2 第一dns 服務器平均解析時間TotalResponsesReceivedFromDns2: 2005 第二dns 服務器解析次數(shù)MeanResponseTimeOfDns2mSeconds : 61.8 第二dns 服務器平均解析時間TotalResponsesReceivedFromDns3: 0MeanResponseTimeOfDns3mSeconds : ?通過檢測器可以更加方便的查看解析數(shù)據(jù),還能方便的修改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 監(jiān)視ADP 后臺服務View->Observe Hit Log 監(jiān)測命中率日志文件View->Observe Statistics 檢測ADP 數(shù)據(jù)統(tǒng)計文件 Tool->Stop Service 停止

ADP 服務Tool->Restart Service 重啟ADP 服務Tool->Purge Cache 重置AcrylicCache.dat 數(shù)據(jù)庫
ADP-Monitor 日志:
DNS 數(shù)據(jù)庫刷新時間:
; 快速刷新NDS 策略:如果你比較在乎緩存的結果是否夠新,比如你在LAN 中使用DHCP 分配的臨時地址,可以將無效結果的緩存時間和自動更新時間縮小; AddressCacheNegativeTime=60; AddressCacheScavengingTime=600; AddressCacheSilentUpdateTime=60; ; 中速刷新策略:如果你的DNS 服務器很不穩(wěn)定,比如國外的一些被GFW 污染的DNS 服務器,而你又不想被中斷網(wǎng)絡操作,將有效/無效結果緩存時間設置較大些AddressCacheNegativeTime=57600AddressCacheScavengingTime=57600AddressCacheSilentUpdateTime=30; ; 緩慢刷新策略:如果你比較在乎帶寬消耗,同時又不太在意DNS 結果是否夠新,將所有3個參數(shù)值設的較大,例如:; AddressCacheNegativeTime=57600; AddressCacheScavengingTime=57600; AddressCacheSilentUpdateTime=2147483647