forked from yaosj2k/dnsforwarder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
default.config
executable file
·434 lines (384 loc) · 16 KB
/
default.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
# 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 false
# 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]:53
UDPLocal 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
# 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.txt
GroupFile
# 注意:
# 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 地址不用加方括号
# 如果保留为空,则不从文件载入 Hosts
Hosts
# 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. IN A
#
# ;; ANSWER SECTION:
# www.windowsupdate.com. 3585 IN CNAME windowsupdate.microsoft.nsatc.net. (记录一)
# windowsupdate.microsoft.nsatc.net. 285 IN CNAME www.update.microsoft.com.nsatc.net. (记录二)
# www.update.microsoft.com.nsatc.net. 285 IN A 134.170.58.222 (记录三)
# www.update.microsoft.com.nsatc.net. 285 IN A 65.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 41
DisabledType
# 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