pdnsd的优秀替代方案——dnsforwarder

来源:互联网 发布:手机使用网络时间不准 编辑:程序博客网 时间:2024/05/22 00:22

使用pdnsd的目的一般在于将UDP的DNS请求转换为TCP进行发送,虽然TCP协议的DNS在效率上不及UDP协议,但是可以实现一些UDP很难做到的功能,比如通过Socks5代理端口进行透明代理。所以TCP的DNS在一些领域还是很有市场。


早期的方案一般是使用Pdnsd建立本地的DNS服务器,然后将请求该服务器的UDP请求转换为TCP请求向上游服务器进行发送,同时还可进行DNS缓存,而且可以设置超长时间的缓存时间。更厉害的是,Pdnsd可以设置DNS结果黑名单自动使用备用DNS服务器进行“二次请求”,是应对DNS污染的大杀器。Pdnsd虽然运行很稳定,但是也已经五六年没有好好更新过了,目前源码可以在https://github.com/SAPikachu/pdnsd.git 上获得。一般来说是不推荐使用过气的开源项目的,所以我们要寻找一个可靠的继任者来接替Pdnsd的工作。这个继任的软件要有Pdnsd原来的主要功能,而且又要易于编译使用和维护。开发者还要活跃,要经过长时间的使用测试证明其稳定性。

在初步的探索之后,觉得dnsforwarder这个新颖的工具不错,源码地址:https://github.com/holmium/dnsforwarder


由于没有Linux编译好的release,所以这个项目需要我们去编译。编译也不麻烦,首先clone代码到本地,然后执行如下命令

(注:

Windows版可直接下载执行文件,无需编译,

下载地址:https://github.com/holmium/dnsforwarder/wiki/%E5%AE%89%E8%A3%85%E5%92%8C%E9%83%A8%E7%BD%B2-%7C-Deployment

我编译的Linux版本(V6)下载地址:http://download.csdn.net/download/lvshaorong/10023744

然后执行编译配置


方案一(推荐,需安装wget):

./configure --enable-downloader=wget

这一句主要是指定下载 Hosts 时调用的库或者程序,有两种方案,一个是libcurl(默认),一个是wget,还有no,但是no将不能使用网络 Hosts 功能,其实对我们来说网络HOST不是一个必须的功能。所以不要也无所谓。因为如果你要使用wget或者libcurl需要安装相关的依赖包,其中libcurl不光需要安装libcurl.x86_64,而且还需要安装libcurl-devel.x86_64。和相关依赖包,比较麻烦。而wget一般的Linux发行版都含有,所以编译基本不会碰到依赖的问题,又可以使用全部的功能,所以推荐用wget


方案二(需要安装libcurl 和 libcurl-devel及其依赖包):

./configure

方案三(无需任何依赖,但没有网上下载HOST功能):

./configure --enable-downloader=no


然后就可以开始编译了

make


编译完之后会在当前目录下出现一个名为dnsforwarder的可执行文件,还可以找到一个名为config的配置文件,把这两个文件拷贝出来,就可以使用了。


如果你运行dnsforwarder这个文件,那么它会在当前目录下自动寻找config配置文件加载,也可以使用-f 配置文件路径进行加载。


默认的config文件没有什么特殊的功能,需要在此基础上进行修改

首先最重要的就是把UDP的DNS请求转换为TCP,这样才能方便代理转发。改起来也非常容易,只需找到

UDPGroup 1.2.4.8:53,114.114.114.114 * on
这一行并且#注释掉,新加一行

TCPGroup 8.8.8.8,8.8.4.4,208.67.222.222:443 * no

可以指定多个上游DNS服务器,不同服务器之间使用逗号分割,可以指定端口,如5353,443等不容易被污染的端口。


Pdnsd的二次查询功能也可以轻松实现,通过设置BlockIP列表,把常见的垃圾IP地址填进去,dnsforwarder就会在你设置的多个DNS服务器中请求多次,如果某个上游DNS返回被污染的地址就弃用,如果不是就作为结果。这个列表就是修改下面这一行

BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75


另外dnsforwarder还有很多优秀的新功能,

比如动态替换上游DNS的查询结果,可以把某些网站的DNS结果指定为我们想要的其他结果,方便内网服务器测试;

设置日志文件的位置,而且日志文件还可以自动归档,日志文件非常清晰便于纠错和统计;

手动指定HOST文件,用来手工指定DNS查询的结果,可以搭建内网DNS服务器(HOST路径可以为HTTP格式,自动下载网上的HOST文件直接用);

使用文件缓存+内存缓存,加快某些经常访问网站的查询速度;

还可以限定查询IP地址的类型,比如屏蔽IPv4的DNS结果,只保留IPv6的结果,可以测试网站的IPv6表现;

对于网络工程师来说非常有用。



改完之后的config文件如下,其他功能可以根据注释进行修改,由于都是中文注释,而且异常详尽,所以改起来很方便,在此就不多赘述了。

# DNS 转发器的配置文件# Configuration File for dnsforwarder# 此配置文件最好是 ANSI 编码的# 相对路径的写法# Windows:#  支持用 `% %' 包围起来的相对路径,比如 `%SYSTEMROOT%\System32\drivers\etc\hosts'。#  `%PROGRAMDIRECTORY%' 表示程序所在的文件夹。#  `%CONFIGFILEDIRECTORY%' 表示配置文件所在的文件夹。 (since 6.1.3)## Linux:#  支持类似 `${HOME}' 的变量,比如 `${HOME}/hosts'。#  `${PROGRAMDIRECTORY}' 表示程序的配置文件夹,一般为 `/root/.dnsforwarder/',执行 `dnsforwarder -p' 可以获得具体的位置。#  `${CONFIGFILEDIRECTORY}' 表示配置文件所在的文件夹。 (since 6.1.3)#################################################### 日志文件设置#################################################### LogOn <BOOLEAN># 是否打开文件日志输出 (since 5.0.4)LogOn on# LogFileThresholdLength <NUM># 单个日志文件大小的临界值(字节)(since 5.0.4)# 当日志文件大小超过这个临界值后,当前的日志文件将会被重命名,然后建立一个新的日志文件,继续记录日志LogFileThresholdLength 102400# LogFileFolder <PATH># 设定日志文件所在的文件夹 (since 5.0.4)# 日志文件初始的文件名为 `dnsforwarder.log',当超过临界值之后,将会被重命名为 `dnsforwarder.log.1'、`dnsforwarder.log.2' 等等,然后重新建立一个 dnsforwarder.log' 文件# 此路径的默认值为程序所在的文件夹(Windows)或程序的配置文件夹(Linux)LogFileFolder#################################################### 本地#################################################### UDPLocal <IP[:PORT]>,<IP[:PORT]>,...# 设置在本地开启的接口的IP地址和端口,可以是本地回环地址 (127.0.0.1) ,本地局域网,以及互联网 (since 6.0.0)# 如果是 IPv6 地址,请在IP两端加上方括号(不包含端口部分),例如 [::1]:53 (本地回环)、[fe80::699c:f79a:9bb6:1]:5353 (since 6.0.0)# 可以设置多个地址,用半角逗号(`,')分割# 如果不指定端口,则默认为 53## 示例:# UDPLocal 127.0.0.1:53,[::1]:53UDPLocal 127.0.0.1:53# 这一版本暂时不支持在本地开启 TCP 端口,以后会加上#################################################### IP 选择策略############################################################################# 服务器地址########################## UDPGroup <IP1[:PORT],IP2[:PORT],...> <DOMAIN1,DOMAIN2,...> <on|off># 设置一个 UDP 上游服务器组,并指定通过这些上游服务器查询的域名 (since 6.0.0)# 第一部分参数“<IP1[:PORT],IP2[:PORT],...>”,用于指定 UDP 上游服务器,不写端口则默认使用 53 端口# 第二部分参数“<DOMAIN1,DOMAIN2,...>”,用于指定通过这些 UDP 上游服务器查询的域名,可以包含通配符# 第三部分参数“<on|off>”,用于指定是否开启并发查询,`on' 为开启,`off' 为不开启# 并发查询指的是,向所有指定的 UDP 服务器发送查询请求,取最先接受到的未屏蔽的回复作为查询结果,并丢弃其余的回复# 可以有多条 `UDPGroup' 选项#UDPGroup 1.2.4.8:53,114.114.114.114 * on# TCPGroup <IP1[:PORT],IP2[:PORT],...> <DOMAIN1,DOMAIN2,...> <no|PROXY1[:PORT],PROXY2[:PORT],...># 设置一个 TCP 上游服务器组,并指定通过这些上游服务器查询的域名 (since 6.0.0)# 第一部分参数“<IP1[:PORT],IP2[:PORT],...>”,用于指定 TCP 上游服务器,不写端口则默认使用 53 端口# 第二部分参数“<DOMAIN1,DOMAIN2,...>”,用于指定通过这些 TCP 上游服务器查询的域名,可以包含通配符# 第三部分参数“<no|PROXY1[:PORT],PROXY2[:PORT],...>”,用于指定查询时使用的 Socks5 代理,不写端口则默认使用 1080 端口。`no' 代表不使用代理# 可以有多条 `TCPGroup' 选项## 示例一:#  TCPGroup 1.2.4.8:53,114.114.114.114 *.example.com 192.168.50.5:8080,192.168.50.6:8080# `*.example.com' 将通过 192.168.50.5:8080 或 192.168.50.6:8080 两个 Socks5 代理,使用 TCP 协议向 1.2.4.8:53 或 114.114.114.114 进行查询# 示例二:#  TCPGroup 8.8.8.8,114.114.114.114:53 * no# `*.example.com' 将使用 TCP 协议直接向 8.8.8.8 或 114.114.114.114:53 进行查询,不使用代理TCPGroup 8.8.8.8,8.8.4.4,208.67.222.222:443 * no# GroupFile <PATH># 从文件加载服务器组 (since 6.1.3)# 服务器组文件的写法请参阅:https://github.com/holmium/dnsforwarder/wiki/GroupFile-%E7%9A%84%E5%86%99%E6%B3%95-%7C-How-to-write-GroupFiles# 可以有多条 `GroupFile' 选项## 示例一:#  GroupFile D:\group.txt## 示例二:#  GroupFile /etc/group.txtGroupFile# 注意:# 1.对于没有指定服务器的域名,会随机选择一个服务器组进行查询。# 2.如果某域名匹配多个服务器组,则选择的顺序如下:#   (1) 优先选择不含通配符的匹配项,如果仍然有多条匹配,则选择匹配度最高的那个,#       如果匹配度相同的情况下仍然有多条匹配,则选择最后一个。#       (例如 `ipv6.microsoft.com' 比 `microsoft.com' 对于域名 `teredo.ipv6.microsoft.com' 的匹配度更高)#   (2) 然后选择包含通配符的匹配项,如果有多条匹配,则选择第一个;# 组合示例:# 一、以 microsoft.com 或 office.com 结尾的域名通过 UDP 服务器 1.2.4.8 查询,其它域名通过 TCP 服务器 8.8.4.4 查询:#  UDPGroup 1.2.4.8 microsoft.com,office.com on#  TCPGroup 8.8.4.4 * no# 两行顺序请保持一致########################## 服务器选项########################## BlockIP <IP1>,<IP2>,.....# 阻挡含有以下 IP 地址(支持 IPv4 和 IPv6 地址)的 DNS 数据包 (since 6.0.0)# IPv6 地址不用加方括号BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75# IPSubstituting <IP1 IP'1>,<IP2 IP'2>,.....# 替换 DNS 数据包中的 IP 地址(只支持 IPv4 地址) (since 5.0.1)# 例如:# IPSubstituting 127.0.0.1 1.2.0.127# 的效果是把 DNS 数据包中所有的 127.0.0.1 地址替换为 1.2.0.127# 仅替换通过服务器(TCP 和 UDP)查询而来的 DNS 数据包,对于缓存中和 Hosts 中的结果无效# 多条替换项目用半角逗号 (`,') 分隔,也可以写多行 `IPSubstituting'IPSubstituting# BlockNegativeResponse <BOOLEAN># 是否过滤来自上游服务器的查询未成功的响应 (since 6.1.1)# 查询未成功指:格式错误、服务器错误、域名不存在和服务器拒绝请求等# 参见 RFC 6895,`2.3.  RCODE Assignment'BlockNegativeResponse false########################## IP 列表(仅支持 IPv4 地址)########################## IP 列表用于自动检测一组 IP 地址,将相应最快的 IP 地址甄选出来# GoodIPList <NAME> <INTERVAL># 定义一个 IP 列表,<NAME> 为改列表的名称,<INTERVAL> 为检测列表中 IP 地址有效性的间隔时间(毫秒)# 例如:#  GoodIPList list1 60000# GoodIPListAddIP <LIST_NAME> <IP:PORT># 向一个 IP 列表中添加 IP 地址# 例如:#  GoodIPListAddIP list1 120.0.0.1:80########################## Hosts########################## Hosts <STRING># Hosts 文件的 URL,可以是本地 Hosts 文件 (以 file:// 开头,支持相对路径),也可以是网络上的 Hosts 文件 (以 http:// 或者 https:// 开头)。 (since 5.0.5)# 例如 file://C:/Windows/System32/drivers/etc/hosts 或 file:///etc/hosts 或 http://xxx.com/hosts# 写多条 `Hosts' 可以指定多个 Hosts 文件,路径两头不要加引号# 在 Hosts 文件中,支持通配符 (`*' 和 `?') (只能在域名中出现通配符)# Hosts 文件必须是原始格式,不能是压缩文件或者 HTML 文件# Hosts 文件最好是 ANSI 编码的# Hosts 中的 IPv6 地址不用加方括号# 如果保留为空,则不从文件载入 HostsHosts# HostsUpdateInterval <NUM># 重新载入 Hosts 文件的间隔时间,秒 (since 2.2)# -1 表示不重新载入# 如果保留为空,则使用默认值 (18000)HostsUpdateInterval 18000# HostsDownloadPath <PATH># Hosts 文件的下载到本地文件的路径 (不是文件夹路径) (since 2.2)# 例如 C:\Windows\Temp\hosts 或者 /tmp/hosts# 支持相对路径 (since 5.0.3)# 如果文件存在则覆盖# 如果保留为空,则默认在与程序所在相同的文件夹内(Windows)或程序的配置文件夹内(Linux)HostsDownloadPath# HostsScript <PATH># 在每次下载完 Hosts 文件后、加载 Hosts 文件之前执行的脚本 (since 2.2)# 支持相对路径 (since 5.0.3)# 如果保留为空,则不执行脚本HostsScript# HostsRetryInterval <NUM># 当网络 Hosts 下载失败后的重试时间,秒 (since 2.2.2)# 仅对网络 Hosts 有效# 如果保留为空,则使用默认值 (30)HostsRetryInterval 30# AppendHosts <HOSTS>,<HOSTS>,...# 附加的 hosts,即使 `Hosts' 选项为空也照样载入 (since 2.2.2)# <HOSTS> 的写法与文件中的一样,同样支持通配符# IPv6 地址不用加方括号# 多条 hosts 可以用半角逗号分隔开,也可以写多条 `AppendHosts'# 比如可以写成:#  AppendHosts 127.0.0.1 123.com,127.0.0.1 456.com,1.2.3.4 foobar.*# 也可以分多条写:#  AppendHosts 127.0.0.1 123.com#  AppendHosts 127.0.0.1 456.com#  AppendHosts 1.2.3.4 foobar.*## 也可以定义指向一个 IP 列表的 Hosts 项(仅支持 IPv4 地址),例如:#  AppendHosts <list1> www.123.com# 此时 www.123.com 将会指向 list1 中最快的 IP 地址。## 也可以定义 CName 的 Hosts 项,例如:#  AppendHosts www.google.cn *.google.com# 这样所有匹配 *.google.com 的域名都将指向 www.google.cn 的 IP 地址 (since 2.3)## 如果使某些域名跳过在 hosts 中的查询,可以#  AppendHosts @@ *.012345.com# 这样所有匹配 *.012345.com 的域名都不会在 hosts 中查询## 各种 hosts 的优先级从高到低# 带 `@@' 的禁止项# 一般 hosts 项# CName hosts 项AppendHosts# BlockIpv6WhenIpv4Exists <BOOLEAN># 如果一个域名在 Hosts 被指定了一个 IPv4 地址(包括文件 Hosts 和 `AppendHosts' 指定的 Hosts),那么拒绝对这个域名的 IPv6 地址查询 (since 5.0.12, renamed after 6.0.0)BlockIpv6WhenIpv4Exists false#################################################### 缓存控制#################################################### UseCache <BOOLEAN># 是否使用缓存(默认为文件缓存) (since 2.2)# 可选值:`false' 或 `true'UseCache false# CacheSize <NUM># 缓存大小 (字节)# 缓存大小不能小于 102400 (100KB) (since 2.3)CacheSize 1048576# MemoryCache <BOOLEAN># 是否使用内存缓存,而不是文件缓存 (since 2.3.2)# 如果 `UseCache' 为 `false',此选项无效# 可选值:`false' 或 `true'MemoryCache true# CacheFile <PATH># 手工指定缓存文件 (不是文件夹) (since 2.3)# 支持相对路径 (since 5.0.3)# 如果保留为空,则默认在与程序所在相同的文件夹内(Windows)或程序的配置文件夹内(Linux)# 如果 `MemoryCache' 为 `true',此选项无效CacheFile# IgnoreTTL <BOOLEAN># 是否忽略 TTL (since 2.2)# 可选值:`false' 或 `true'# 为 `true' 时将忽略 TTL,此时所有的缓存条目将不会被移除# 为 `false' 时不忽略 TTL,缓存条目将会按照 TTL 的时间来移除# 当 `UseCache' 的值为 `false' 时,此选项无效IgnoreTTL false# OverrideTTL <NUM># 强制使所有缓存的条目的 TTL 为 <NUM> (since 2.2)# 若 <NUM> 为 -1,则表示不进行强制# 当 `UseCache' 的值为 `false' 时,此选项无效# 此选项等同于 `CacheControl * fixed <NUM>' (since 5.0.18)OverrideTTL -1# MultipleTTL <NUM># 将所有缓存条目的 TTL 加倍,倍数为 <NUM> (since 2.2)# 当 `UseCache' 的值为 `false' 时,此选项无效# 当 `IgnoreTTL' 的值为 `true' 时,此选项无效# 此选项等同于 `CacheControl * vari <NUM>x+0' (since 5.0.18)MultipleTTL 1# CacheControl <DOMAIN> [$[$]]<TYPE> [ARGUMENT]# 控制域名 <DOMAIN> 的缓存行为 (since 5.0.18)# 如果缓存未开启,则此选项无效# <DOMAIN> 是域名;[$[$]] 是传染设定;<TYPE> 是类型;[ARGUMENT] 是参数# <DOMAIN> 支持通配符,支持尾部匹配# <TYPE> 有以下可选项(均为小写):#  orig    : 使用原先的 TTL,即不改变指定域名记录的 TTL,此类型无需 [ARGUMENT] 参数#  nocache : 不缓存指定域名记录,此类型无需 [ARGUMENT] 参数#  fixed   : 将指定域名记录的 TTL 修改为一个预先指定的常数值,这个值通过 [ARGUMENT] 参数指定#  vari    : 将指定域名记录的 TTL 修改为一个预先规定的变量,这个变量通过 [ARGUMENT] 参数指定,此时 [ARGUMENT] 参数的格式为 `ax+b',其中 a、b 为非负整数(需用户手工指定),x 为记录原先的 TTL 值(不需要用户指定)。此选项必须为 `ax+b' 的形式,不能是 `ax-b' 或者其它的变体形式## 示例:# CacheControl baidu.com orig # 不改变以 `baidu.com' 结尾的域名的 TTL# CacheControl 163.com nocache # 不缓存以 `163.com' 结尾的域名# CacheControl qq.com fixed 500 # 把所有以 `qq.com' 结尾的域名的 TTL 修改为 500# CacheControl sina.com.cn vari 2x+200 # 把所有以 `sina.com.cn' 结尾的域名的 TTL 的值修改为 2x+200,其中 x 是域名记录原先的 TTL 值## 传染机制:# 某些域名有 CName 记录,例如 www.windowsupdate.com:# ;; QUESTION SECTION:# ;www.windowsupdate.com.INA## ;; ANSWER SECTION:# www.windowsupdate.com.3585INCNAMEwindowsupdate.microsoft.nsatc.net.      (记录一)# windowsupdate.microsoft.nsatc.net. 285 IN CNAMEwww.update.microsoft.com.nsatc.net. (记录二)# www.update.microsoft.com.nsatc.net. 285IN A134.170.58.222                      (记录三)# www.update.microsoft.com.nsatc.net. 285IN A65.55.50.157                        (记录四)## 如果仅仅指定了 `www.windowsupdate.com' 的缓存控制,那么 `windowsupdate.microsoft.nsatc.net' 和 `www.update.microsoft.com.nsatc.net' 的记录以什么规则进行处理?是继承 `www.windowsupdate.com' 的缓存设置,还是使用自己专门的设置(如果有的话)?# 可以指定传染机制来解决这个问题# 有以下传染机制(以 `www.windowsupdate.com' 为例):#  主动传染 : 所有的域名记录不论是否存在单独指定的控制条目,均使用 `www.windowsupdate.com' 的控制条目#  被动传染 : 如果存在单独指定的控制条目,那么使用单独指定的控制条目,否则使用 `www.windowsupdate.com' 的控制条目#  不传染   : 如果存在单独指定的控制条目,那么使用单独指定的控制条目,如果没有则不修改记录的 TTL 值# 只有被查询的域名控制条目才具有传染性质# 写法:#  主动传染 (此为默认情况):#   CacheControl www.windowsupdate.com fixed 1000#   CacheControl 163.com orig#  被动传染(<TYPE> 前加一个 `$'):#   CacheControl www.windowsupdate.com $fixed 1500#   CacheControl sina.com.cn $nocache#  不传染(<TYPE> 前加两个 `$'):#   CacheControl www.windowsupdate.com $$fixed 2000#   CacheControl windowsupdate.microsoft.nsatc.net $$vari 2x+100## 示例(仍然以 `www.windowsupdate.com' 为例):#  CacheControl www.windowsupdate.com fixed 1000#  CacheControl windowsupdate.microsoft.nsatc.net fixed 500#  效果是:记录一、二、三和四的 TTL 都会被修改为 1000##  CacheControl www.windowsupdate.com $fixed 1000#  CacheControl windowsupdate.microsoft.nsatc.net fixed 500#  效果是:记录一、三和四的 TTL 会被修改为 1000,记录二的 TTL 会被修改为 500##  CacheControl www.windowsupdate.com $$fixed 1000#  CacheControl windowsupdate.microsoft.nsatc.net fixed 500#  效果是:记录一的 TTL 会被修改为 1000,记录二的 TTL 会被修改为 500,记录三和四的 TTL 不会被修改# ReloadCache <BOOLEAN># 当程序启动时是否重新载入已有的文件缓存 (since 2.2.3)# 已有的缓存大小必须和 `CacheSize' 所指定的大小相等# 可选值:`false' 或 `true'# 如果 `MemoryCache' 的值为 `true',此选项无效ReloadCache false# OverwriteCache <BOOLEAN># 如果已有的文件缓存无法重载,是否直接将其覆盖掉 (since 2.3)# 可选值:`false' 或 `true'# 如果 `MemoryCache' 的值为 `true',此选项无效# 如果 `ReloadCache' 的值为 `false',此选项无效OverwriteCache false#################################################### 杂项#################################################### DisabledType <NUM1>,<NUM2>,.....# 禁止查询的 DNS 类型列表,每个类型(用数字代表)之间用半角逗号 (`,') 分隔 (since 2.2)# 所有的 DNS 类型:# A      1   IPv4 地址# AAAA       28   IPv6 地址# APL        42# CERT       37# CNAME       5# DHCID      49# DLV     32769# DNAME      39# DNSKEY     48# DS     43# HIP        55# IPSECKEY   45# KEY        25# KX     36# LOC        29# MX     15# NAPTR      35# NS      2   Name Server# NSEC       47# NSEC3      50# NSEC3PARAM 51# PTR        12   Domain pointer# RRSIG      46# RP     17# SIG        24# SOA         6   start of authority record# SPF        99# SRV        33# SSHFP      44# TA  32768# TKEY      249# TSIG      250# TXT        16# ANY       255# AXFR      252# IXFR      251# OPT        41DisabledType# DisabledDomain <DOMAIN1>,<DOMAIN2>,.....# 禁止查询的域列表,每个域之间用半角逗号 (`,') 分隔 (since 2.2)# 支持通配符。 (since 2.2.2)# 一个项目如果不含通配符,则从域名尾部开始匹配,例如 `123.com' 则会匹配所有以 `123.com' 结尾的域名。# 如果含通配符则严格按照通配符来匹配。# 可以有多条DisabledDomain (since 2.2.2)DisabledDomain# DisabledList <PATH># 从文件载入到禁用列表 (since 5.0.3)# 写多条 `DisabledList' 可以加载多个文件,路径两头不要加引号DisabledList# DomainStatistic <BOOLEAN># 是否启用域名统计 (since 2.5 b1)# 域名信息统计会依照模板文件记录域名的查询情况# 记录的结果在与程序所在相同的文件夹内(Windows)或程序的配置文件夹内(Linux)的`statistic.html'文件内# 可选值:`false' 或 `true'DomainStatistic false# DomainStatisticTempletFile <PATH># 域名统计的模板文件路径 (since 5.0.23)# 如果保留为空,则默认为与程序所在相同的文件夹内(Windows)或程序的配置文件夹内(Linux)的`StatisticTemplate.html'文件DomainStatisticTempletFile# StatisticInsertionPosition <STRING># 指定在模板文件中写入的位置 (since 5.0.23)# 如果保留为空,则默认为`<!-- INSERT HERE -->'# StatisticInsertionPosition <!-- INSERT HERE --># StatisticUpdateInterval <NUM># 域名统计刷新时间间隔(秒) (since 2.5 b1)StatisticUpdateInterval 29




原创粉丝点击