]>
Commit | Line | Data |
---|---|---|
89c4ed63 A |
1 | .TH "unbound.conf" "5" "Dec 8, 2014" "NLnet Labs" "unbound 1.5.1" |
2 | .\" | |
3 | .\" unbound.conf.5 -- unbound.conf manual | |
4 | .\" | |
5 | .\" Copyright (c) 2007, NLnet Labs. All rights reserved. | |
6 | .\" | |
7 | .\" See LICENSE for the license. | |
8 | .\" | |
9 | .\" | |
10 | .SH "NAME" | |
11 | .B unbound.conf | |
12 | \- Unbound configuration file. | |
13 | .SH "SYNOPSIS" | |
14 | .B unbound.conf | |
15 | .SH "DESCRIPTION" | |
16 | .B unbound.conf | |
17 | is used to configure | |
18 | \fIunbound\fR(8). | |
19 | The file format has attributes and values. Some attributes have attributes inside them. | |
20 | The notation is: attribute: value. | |
21 | .P | |
22 | Comments start with # and last to the end of line. Empty lines are | |
23 | ignored as is whitespace at the beginning of a line. | |
24 | .P | |
25 | The utility | |
26 | \fIunbound\-checkconf\fR(8) | |
27 | can be used to check unbound.conf prior to usage. | |
28 | .SH "EXAMPLE" | |
29 | An example config file is shown below. Copy this to /etc/unbound/unbound.conf | |
30 | and start the server with: | |
31 | .P | |
32 | .nf | |
33 | $ unbound \-c /etc/unbound/unbound.conf | |
34 | .fi | |
35 | .P | |
36 | Most settings are the defaults. Stop the server with: | |
37 | .P | |
38 | .nf | |
39 | $ kill `cat /etc/unbound/unbound.pid` | |
40 | .fi | |
41 | .P | |
42 | Below is a minimal config file. The source distribution contains an extensive | |
43 | example.conf file with all the options. | |
44 | .P | |
45 | .nf | |
46 | # unbound.conf(5) config file for unbound(8). | |
47 | server: | |
48 | directory: "/etc/unbound" | |
49 | username: unbound | |
50 | # make sure unbound can access entropy from inside the chroot. | |
51 | # e.g. on linux the use these commands (on BSD, devfs(8) is used): | |
52 | # mount \-\-bind \-n /dev/random /etc/unbound/dev/random | |
53 | # and mount \-\-bind \-n /dev/log /etc/unbound/dev/log | |
54 | chroot: "/etc/unbound" | |
55 | # logfile: "/etc/unbound/unbound.log" #uncomment to use logfile. | |
56 | pidfile: "/etc/unbound/unbound.pid" | |
57 | # verbosity: 1 # uncomment and increase to get more logging. | |
58 | # listen on all interfaces, answer queries from the local subnet. | |
59 | interface: 0.0.0.0 | |
60 | interface: ::0 | |
61 | access\-control: 10.0.0.0/8 allow | |
62 | access\-control: 2001:DB8::/64 allow | |
63 | .fi | |
64 | .SH "FILE FORMAT" | |
65 | There must be whitespace between keywords. Attribute keywords end with a colon ':'. An attribute | |
66 | is followed by its containing attributes, or a value. | |
67 | .P | |
68 | Files can be included using the | |
69 | .B include: | |
70 | directive. It can appear anywhere, it accepts a single file name as argument. | |
71 | Processing continues as if the text from the included file was copied into | |
72 | the config file at that point. If also using chroot, using full path names | |
73 | for the included files works, relative pathnames for the included names work | |
74 | if the directory where the daemon is started equals its chroot/working | |
75 | directory. Wildcards can be used to include multiple files, see \fIglob\fR(7). | |
76 | .SS "Server Options" | |
77 | These options are part of the | |
78 | .B server: | |
79 | clause. | |
80 | .TP | |
81 | .B verbosity: \fI<number> | |
82 | The verbosity number, level 0 means no verbosity, only errors. Level 1 | |
83 | gives operational information. Level 2 gives detailed operational | |
84 | information. Level 3 gives query level information, output per query. | |
85 | Level 4 gives algorithm level information. Level 5 logs client | |
86 | identification for cache misses. Default is level 1. | |
87 | The verbosity can also be increased from the commandline, see \fIunbound\fR(8). | |
88 | .TP | |
89 | .B statistics\-interval: \fI<seconds> | |
90 | The number of seconds between printing statistics to the log for every thread. | |
91 | Disable with value 0 or "". Default is disabled. The histogram statistics | |
92 | are only printed if replies were sent during the statistics interval, | |
93 | requestlist statistics are printed for every interval (but can be 0). | |
94 | This is because the median calculation requires data to be present. | |
95 | .TP | |
96 | .B statistics\-cumulative: \fI<yes or no> | |
97 | If enabled, statistics are cumulative since starting unbound, without clearing | |
98 | the statistics counters after logging the statistics. Default is no. | |
99 | .TP | |
100 | .B extended\-statistics: \fI<yes or no> | |
101 | If enabled, extended statistics are printed from \fIunbound\-control\fR(8). | |
102 | Default is off, because keeping track of more statistics takes time. The | |
103 | counters are listed in \fIunbound\-control\fR(8). | |
104 | .TP | |
105 | .B num\-threads: \fI<number> | |
106 | The number of threads to create to serve clients. Use 1 for no threading. | |
107 | .TP | |
108 | .B port: \fI<port number> | |
109 | The port number, default 53, on which the server responds to queries. | |
110 | .TP | |
111 | .B interface: \fI<ip address[@port]> | |
112 | Interface to use to connect to the network. This interface is listened to | |
113 | for queries from clients, and answers to clients are given from it. | |
114 | Can be given multiple times to work on several interfaces. If none are | |
115 | given the default is to listen to localhost. | |
116 | The interfaces are not changed on a reload (kill \-HUP) but only on restart. | |
117 | A port number can be specified with @port (without spaces between | |
118 | interface and port number), if not specified the default port (from | |
119 | \fBport\fR) is used. | |
120 | .TP | |
121 | .B ip\-address: \fI<ip address[@port]> | |
122 | Same as interface: (for easy of compatibility with nsd.conf). | |
123 | .TP | |
124 | .B interface\-automatic: \fI<yes or no> | |
125 | Detect source interface on UDP queries and copy them to replies. This | |
126 | feature is experimental, and needs support in your OS for particular socket | |
127 | options. Default value is no. | |
128 | .TP | |
129 | .B outgoing\-interface: \fI<ip address> | |
130 | Interface to use to connect to the network. This interface is used to send | |
131 | queries to authoritative servers and receive their replies. Can be given | |
132 | multiple times to work on several interfaces. If none are given the | |
133 | default (all) is used. You can specify the same interfaces in | |
134 | .B interface: | |
135 | and | |
136 | .B outgoing\-interface: | |
137 | lines, the interfaces are then used for both purposes. Outgoing queries are | |
138 | sent via a random outgoing interface to counter spoofing. | |
139 | .TP | |
140 | .B outgoing\-range: \fI<number> | |
141 | Number of ports to open. This number of file descriptors can be opened per | |
142 | thread. Must be at least 1. Default depends on compile options. Larger | |
143 | numbers need extra resources from the operating system. For performance a | |
144 | a very large value is best, use libevent to make this possible. | |
145 | .TP | |
146 | .B outgoing\-port\-permit: \fI<port number or range> | |
147 | Permit unbound to open this port or range of ports for use to send queries. | |
148 | A larger number of permitted outgoing ports increases resilience against | |
149 | spoofing attempts. Make sure these ports are not needed by other daemons. | |
150 | By default only ports above 1024 that have not been assigned by IANA are used. | |
151 | Give a port number or a range of the form "low\-high", without spaces. | |
152 | .IP | |
153 | The \fBoutgoing\-port\-permit\fR and \fBoutgoing\-port\-avoid\fR statements | |
154 | are processed in the line order of the config file, adding the permitted ports | |
155 | and subtracting the avoided ports from the set of allowed ports. The | |
156 | processing starts with the non IANA allocated ports above 1024 in the set | |
157 | of allowed ports. | |
158 | .TP | |
159 | .B outgoing\-port\-avoid: \fI<port number or range> | |
160 | Do not permit unbound to open this port or range of ports for use to send | |
161 | queries. Use this to make sure unbound does not grab a port that another | |
162 | daemon needs. The port is avoided on all outgoing interfaces, both IP4 and IP6. | |
163 | By default only ports above 1024 that have not been assigned by IANA are used. | |
164 | Give a port number or a range of the form "low\-high", without spaces. | |
165 | .TP | |
166 | .B outgoing\-num\-tcp: \fI<number> | |
167 | Number of outgoing TCP buffers to allocate per thread. Default is 10. If set | |
168 | to 0, or if do\-tcp is "no", no TCP queries to authoritative servers are done. | |
169 | .TP | |
170 | .B incoming\-num\-tcp: \fI<number> | |
171 | Number of incoming TCP buffers to allocate per thread. Default is 10. If set | |
172 | to 0, or if do\-tcp is "no", no TCP queries from clients are accepted. | |
173 | .TP | |
174 | .B edns\-buffer\-size: \fI<number> | |
175 | Number of bytes size to advertise as the EDNS reassembly buffer size. | |
176 | This is the value put into datagrams over UDP towards peers. The actual | |
177 | buffer size is determined by msg\-buffer\-size (both for TCP and UDP). Do | |
178 | not set higher than that value. Default is 4096 which is RFC recommended. | |
179 | If you have fragmentation reassembly problems, usually seen as timeouts, | |
180 | then a value of 1480 can fix it. Setting to 512 bypasses even the most | |
181 | stringent path MTU problems, but is seen as extreme, since the amount | |
182 | of TCP fallback generated is excessive (probably also for this resolver, | |
183 | consider tuning the outgoing tcp number). | |
184 | .TP | |
185 | .B max\-udp\-size: \fI<number> | |
186 | Maximum UDP response size (not applied to TCP response). 65536 disables the | |
187 | udp response size maximum, and uses the choice from the client, always. | |
188 | Suggested values are 512 to 4096. Default is 4096. | |
189 | .TP | |
190 | .B msg\-buffer\-size: \fI<number> | |
191 | Number of bytes size of the message buffers. Default is 65552 bytes, enough | |
192 | for 64 Kb packets, the maximum DNS message size. No message larger than this | |
193 | can be sent or received. Can be reduced to use less memory, but some requests | |
194 | for DNS data, such as for huge resource records, will result in a SERVFAIL | |
195 | reply to the client. | |
196 | .TP | |
197 | .B msg\-cache\-size: \fI<number> | |
198 | Number of bytes size of the message cache. Default is 4 megabytes. | |
199 | A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes | |
200 | or gigabytes (1024*1024 bytes in a megabyte). | |
201 | .TP | |
202 | .B msg\-cache\-slabs: \fI<number> | |
203 | Number of slabs in the message cache. Slabs reduce lock contention by threads. | |
204 | Must be set to a power of 2. Setting (close) to the number of cpus is a | |
205 | reasonable guess. | |
206 | .TP | |
207 | .B num\-queries\-per\-thread: \fI<number> | |
208 | The number of queries that every thread will service simultaneously. | |
209 | If more queries arrive that need servicing, and no queries can be jostled out | |
210 | (see \fIjostle\-timeout\fR), then the queries are dropped. This forces | |
211 | the client to resend after a timeout; allowing the server time to work on | |
212 | the existing queries. Default depends on compile options, 512 or 1024. | |
213 | .TP | |
214 | .B jostle\-timeout: \fI<msec> | |
215 | Timeout used when the server is very busy. Set to a value that usually | |
216 | results in one roundtrip to the authority servers. If too many queries | |
217 | arrive, then 50% of the queries are allowed to run to completion, and | |
218 | the other 50% are replaced with the new incoming query if they have already | |
219 | spent more than their allowed time. This protects against denial of | |
220 | service by slow queries or high query rates. Default 200 milliseconds. | |
221 | The effect is that the qps for long-lasting queries is about | |
222 | (numqueriesperthread / 2) / (average time for such long queries) qps. | |
223 | The qps for short queries can be about (numqueriesperthread / 2) | |
224 | / (jostletimeout in whole seconds) qps per thread, about (1024/2)*5 = 2560 | |
225 | qps by default. | |
226 | .TP | |
227 | .B delay\-close: \fI<msec> | |
228 | Extra delay for timeouted UDP ports before they are closed, in msec. | |
229 | Default is 0, and that disables it. This prevents very delayed answer | |
230 | packets from the upstream (recursive) servers from bouncing against | |
231 | closed ports and setting off all sort of close-port counters, with | |
232 | eg. 1500 msec. When timeouts happen you need extra sockets, it checks | |
233 | the ID and remote IP of packets, and unwanted packets are added to the | |
234 | unwanted packet counter. | |
235 | .TP | |
236 | .B so\-rcvbuf: \fI<number> | |
237 | If not 0, then set the SO_RCVBUF socket option to get more buffer | |
238 | space on UDP port 53 incoming queries. So that short spikes on busy | |
239 | servers do not drop packets (see counter in netstat \-su). Default is | |
240 | 0 (use system value). Otherwise, the number of bytes to ask for, try | |
241 | "4m" on a busy server. The OS caps it at a maximum, on linux unbound | |
242 | needs root permission to bypass the limit, or the admin can use sysctl | |
243 | net.core.rmem_max. On BSD change kern.ipc.maxsockbuf in /etc/sysctl.conf. | |
244 | On OpenBSD change header and recompile kernel. On Solaris ndd \-set | |
245 | /dev/udp udp_max_buf 8388608. | |
246 | .TP | |
247 | .B so\-sndbuf: \fI<number> | |
248 | If not 0, then set the SO_SNDBUF socket option to get more buffer space on | |
249 | UDP port 53 outgoing queries. This for very busy servers handles spikes | |
250 | in answer traffic, otherwise 'send: resource temporarily unavailable' | |
251 | can get logged, the buffer overrun is also visible by netstat \-su. | |
252 | Default is 0 (use system value). Specify the number of bytes to ask | |
253 | for, try "4m" on a very busy server. The OS caps it at a maximum, on | |
254 | linux unbound needs root permission to bypass the limit, or the admin | |
255 | can use sysctl net.core.wmem_max. On BSD, Solaris changes are similar | |
256 | to so\-rcvbuf. | |
257 | .TP | |
258 | .B so\-reuseport: \fI<yes or no> | |
259 | If yes, then open dedicated listening sockets for incoming queries for each | |
260 | thread and try to set the SO_REUSEPORT socket option on each socket. May | |
261 | distribute incoming queries to threads more evenly. Default is no. On Linux | |
262 | it is supported in kernels >= 3.9. On other systems, FreeBSD, OSX it may | |
263 | also work. You can enable it (on any platform and kernel), | |
264 | it then attempts to open the port and passes the option if it was available | |
265 | at compile time, if that works it is used, if it fails, it continues | |
266 | silently (unless verbosity 3) without the option. | |
267 | .TP | |
268 | .B rrset\-cache\-size: \fI<number> | |
269 | Number of bytes size of the RRset cache. Default is 4 megabytes. | |
270 | A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes | |
271 | or gigabytes (1024*1024 bytes in a megabyte). | |
272 | .TP | |
273 | .B rrset\-cache\-slabs: \fI<number> | |
274 | Number of slabs in the RRset cache. Slabs reduce lock contention by threads. | |
275 | Must be set to a power of 2. | |
276 | .TP | |
277 | .B cache\-max\-ttl: \fI<seconds> | |
278 | Time to live maximum for RRsets and messages in the cache. Default is | |
279 | 86400 seconds (1 day). If the maximum kicks in, responses to clients | |
280 | still get decrementing TTLs based on the original (larger) values. | |
281 | When the internal TTL expires, the cache item has expired. | |
282 | Can be set lower to force the resolver to query for data often, and not | |
283 | trust (very large) TTL values. | |
284 | .TP | |
285 | .B cache\-min\-ttl: \fI<seconds> | |
286 | Time to live minimum for RRsets and messages in the cache. Default is 0. | |
287 | If the the minimum kicks in, the data is cached for longer than the domain | |
288 | owner intended, and thus less queries are made to look up the data. | |
289 | Zero makes sure the data in the cache is as the domain owner intended, | |
290 | higher values, especially more than an hour or so, can lead to trouble as | |
291 | the data in the cache does not match up with the actual data any more. | |
292 | .TP | |
293 | .B infra\-host\-ttl: \fI<seconds> | |
294 | Time to live for entries in the host cache. The host cache contains | |
295 | roundtrip timing, lameness and EDNS support information. Default is 900. | |
296 | .TP | |
297 | .B infra\-cache\-slabs: \fI<number> | |
298 | Number of slabs in the infrastructure cache. Slabs reduce lock contention | |
299 | by threads. Must be set to a power of 2. | |
300 | .TP | |
301 | .B infra\-cache\-numhosts: \fI<number> | |
302 | Number of hosts for which information is cached. Default is 10000. | |
303 | .TP | |
304 | .B do\-ip4: \fI<yes or no> | |
305 | Enable or disable whether ip4 queries are answered or issued. Default is yes. | |
306 | .TP | |
307 | .B do\-ip6: \fI<yes or no> | |
308 | Enable or disable whether ip6 queries are answered or issued. Default is yes. | |
309 | If disabled, queries are not answered on IPv6, and queries are not sent on | |
310 | IPv6 to the internet nameservers. With this option you can disable the | |
311 | ipv6 transport for sending DNS traffic, it does not impact the contents of | |
312 | the DNS traffic, which may have ip4 and ip6 addresses in it. | |
313 | .TP | |
314 | .B do\-udp: \fI<yes or no> | |
315 | Enable or disable whether UDP queries are answered or issued. Default is yes. | |
316 | .TP | |
317 | .B do\-tcp: \fI<yes or no> | |
318 | Enable or disable whether TCP queries are answered or issued. Default is yes. | |
319 | .TP | |
320 | .B tcp\-upstream: \fI<yes or no> | |
321 | Enable or disable whether the upstream queries use TCP only for transport. | |
322 | Default is no. Useful in tunneling scenarios. | |
323 | .TP | |
324 | .B ssl\-upstream: \fI<yes or no> | |
325 | Enabled or disable whether the upstream queries use SSL only for transport. | |
326 | Default is no. Useful in tunneling scenarios. The SSL contains plain DNS in | |
327 | TCP wireformat. The other server must support this (see \fBssl\-service\-key\fR). | |
328 | .TP | |
329 | .B ssl\-service-key: \fI<file> | |
330 | If enabled, the server provider SSL service on its TCP sockets. The clients | |
331 | have to use ssl\-upstream: yes. The file is the private key for the TLS | |
332 | session. The public certificate is in the ssl\-service\-pem file. Default | |
333 | is "", turned off. Requires a restart (a reload is not enough) if changed, | |
334 | because the private key is read while root permissions are held and before | |
335 | chroot (if any). Normal DNS TCP service is not provided and gives errors, | |
336 | this service is best run with a different \fBport:\fR config or \fI@port\fR | |
337 | suffixes in the \fBinterface\fR config. | |
338 | .TP | |
339 | .B ssl\-service\-pem: \fI<file> | |
340 | The public key certificate pem file for the ssl service. Default is "", | |
341 | turned off. | |
342 | .TP | |
343 | .B ssl\-port: \fI<number> | |
344 | The port number on which to provide TCP SSL service, default 443, only | |
345 | interfaces configured with that port number as @number get the SSL service. | |
346 | .TP | |
347 | .B do\-daemonize: \fI<yes or no> | |
348 | Enable or disable whether the unbound server forks into the background as | |
349 | a daemon. Default is yes. | |
350 | .TP | |
351 | .B access\-control: \fI<IP netblock> <action> | |
352 | The netblock is given as an IP4 or IP6 address with /size appended for a | |
353 | classless network block. The action can be \fIdeny\fR, \fIrefuse\fR, | |
354 | \fIallow\fR, \fIallow_snoop\fR, \fIdeny_non_local\fR or \fIrefuse_non_local\fR. | |
355 | .IP | |
356 | The action \fIdeny\fR stops queries from hosts from that netblock. | |
357 | .IP | |
358 | The action \fIrefuse\fR stops queries too, but sends a DNS rcode REFUSED | |
359 | error message back. | |
360 | .IP | |
361 | The action \fIallow\fR gives access to clients from that netblock. | |
362 | It gives only access for recursion clients (which is | |
363 | what almost all clients need). Nonrecursive queries are refused. | |
364 | .IP | |
365 | The \fIallow\fR action does allow nonrecursive queries to access the | |
366 | local\-data that is configured. The reason is that this does not involve | |
367 | the unbound server recursive lookup algorithm, and static data is served | |
368 | in the reply. This supports normal operations where nonrecursive queries | |
369 | are made for the authoritative data. For nonrecursive queries any replies | |
370 | from the dynamic cache are refused. | |
371 | .IP | |
372 | The action \fIallow_snoop\fR gives nonrecursive access too. This give | |
373 | both recursive and non recursive access. The name \fIallow_snoop\fR refers | |
374 | to cache snooping, a technique to use nonrecursive queries to examine | |
375 | the cache contents (for malicious acts). However, nonrecursive queries can | |
376 | also be a valuable debugging tool (when you want to examine the cache | |
377 | contents). In that case use \fIallow_snoop\fR for your administration host. | |
378 | .IP | |
379 | By default only localhost is \fIallow\fRed, the rest is \fIrefuse\fRd. | |
380 | The default is \fIrefuse\fRd, because that is protocol\-friendly. The DNS | |
381 | protocol is not designed to handle dropped packets due to policy, and | |
382 | dropping may result in (possibly excessive) retried queries. | |
383 | .IP | |
384 | The deny_non_local and refuse_non_local settings are for hosts that are | |
385 | only allowed to query for the authoritative local\-data, they are not | |
386 | allowed full recursion but only the static data. With deny_non_local, | |
387 | messages that are disallowed are dropped, with refuse_non_local they | |
388 | receive error code REFUSED. | |
389 | .TP | |
390 | .B chroot: \fI<directory> | |
391 | If chroot is enabled, you should pass the configfile (from the | |
392 | commandline) as a full path from the original root. After the | |
393 | chroot has been performed the now defunct portion of the config | |
394 | file path is removed to be able to reread the config after a reload. | |
395 | .IP | |
396 | All other file paths (working dir, logfile, roothints, and | |
397 | key files) can be specified in several ways: | |
398 | as an absolute path relative to the new root, | |
399 | as a relative path to the working directory, or | |
400 | as an absolute path relative to the original root. | |
401 | In the last case the path is adjusted to remove the unused portion. | |
402 | .IP | |
403 | The pidfile can be either a relative path to the working directory, or | |
404 | an absolute path relative to the original root. It is written just prior | |
405 | to chroot and dropping permissions. This allows the pidfile to be | |
406 | /var/run/unbound.pid and the chroot to be /var/unbound, for example. | |
407 | .IP | |
408 | Additionally, unbound may need to access /dev/random (for entropy) | |
409 | from inside the chroot. | |
410 | .IP | |
411 | If given a chroot is done to the given directory. The default is | |
412 | "/usr/local/etc/unbound". If you give "" no chroot is performed. | |
413 | .TP | |
414 | .B username: \fI<name> | |
415 | If given, after binding the port the user privileges are dropped. Default is | |
416 | "unbound". If you give username: "" no user change is performed. | |
417 | .IP | |
418 | If this user is not capable of binding the | |
419 | port, reloads (by signal HUP) will still retain the opened ports. | |
420 | If you change the port number in the config file, and that new port number | |
421 | requires privileges, then a reload will fail; a restart is needed. | |
422 | .TP | |
423 | .B directory: \fI<directory> | |
424 | Sets the working directory for the program. Default is "/usr/local/etc/unbound". | |
425 | .TP | |
426 | .B logfile: \fI<filename> | |
427 | If "" is given, logging goes to stderr, or nowhere once daemonized. | |
428 | The logfile is appended to, in the following format: | |
429 | .nf | |
430 | [seconds since 1970] unbound[pid:tid]: type: message. | |
431 | .fi | |
432 | If this option is given, the use\-syslog is option is set to "no". | |
433 | The logfile is reopened (for append) when the config file is reread, on | |
434 | SIGHUP. | |
435 | .TP | |
436 | .B use\-syslog: \fI<yes or no> | |
437 | Sets unbound to send log messages to the syslogd, using | |
438 | \fIsyslog\fR(3). | |
439 | The log facility LOG_DAEMON is used, with identity "unbound". | |
440 | The logfile setting is overridden when use\-syslog is turned on. | |
441 | The default is to log to syslog. | |
442 | .TP | |
443 | .B log\-time\-ascii: \fI<yes or no> | |
444 | Sets logfile lines to use a timestamp in UTC ascii. Default is no, which | |
445 | prints the seconds since 1970 in brackets. No effect if using syslog, in | |
446 | that case syslog formats the timestamp printed into the log files. | |
447 | .TP | |
448 | .B log\-queries: \fI<yes or no> | |
449 | Prints one line per query to the log, with the log timestamp and IP address, | |
450 | name, type and class. Default is no. Note that it takes time to print these | |
451 | lines which makes the server (significantly) slower. Odd (nonprintable) | |
452 | characters in names are printed as '?'. | |
453 | .TP | |
454 | .B pidfile: \fI<filename> | |
455 | The process id is written to the file. Default is "/usr/local/etc/unbound/unbound.pid". | |
456 | So, | |
457 | .nf | |
458 | kill \-HUP `cat /usr/local/etc/unbound/unbound.pid` | |
459 | .fi | |
460 | triggers a reload, | |
461 | .nf | |
462 | kill \-QUIT `cat /usr/local/etc/unbound/unbound.pid` | |
463 | .fi | |
464 | gracefully terminates. | |
465 | .TP | |
466 | .B root\-hints: \fI<filename> | |
467 | Read the root hints from this file. Default is nothing, using builtin hints | |
468 | for the IN class. The file has the format of zone files, with root | |
469 | nameserver names and addresses only. The default may become outdated, | |
470 | when servers change, therefore it is good practice to use a root\-hints file. | |
471 | .TP | |
472 | .B hide\-identity: \fI<yes or no> | |
473 | If enabled id.server and hostname.bind queries are refused. | |
474 | .TP | |
475 | .B identity: \fI<string> | |
476 | Set the identity to report. If set to "", the default, then the hostname | |
477 | of the server is returned. | |
478 | .TP | |
479 | .B hide\-version: \fI<yes or no> | |
480 | If enabled version.server and version.bind queries are refused. | |
481 | .TP | |
482 | .B version: \fI<string> | |
483 | Set the version to report. If set to "", the default, then the package | |
484 | version is returned. | |
485 | .TP | |
486 | .B target\-fetch\-policy: \fI<"list of numbers"> | |
487 | Set the target fetch policy used by unbound to determine if it should fetch | |
488 | nameserver target addresses opportunistically. The policy is described per | |
489 | dependency depth. | |
490 | .IP | |
491 | The number of values determines the maximum dependency depth | |
492 | that unbound will pursue in answering a query. | |
493 | A value of \-1 means to fetch all targets opportunistically for that dependency | |
494 | depth. A value of 0 means to fetch on demand only. A positive value fetches | |
495 | that many targets opportunistically. | |
496 | .IP | |
497 | Enclose the list between quotes ("") and put spaces between numbers. | |
498 | The default is "3 2 1 0 0". Setting all zeroes, "0 0 0 0 0" gives behaviour | |
499 | closer to that of BIND 9, while setting "\-1 \-1 \-1 \-1 \-1" gives behaviour | |
500 | rumoured to be closer to that of BIND 8. | |
501 | .TP | |
502 | .B harden\-short\-bufsize: \fI<yes or no> | |
503 | Very small EDNS buffer sizes from queries are ignored. Default is off, since | |
504 | it is legal protocol wise to send these, and unbound tries to give very | |
505 | small answers to these queries, where possible. | |
506 | .TP | |
507 | .B harden\-large\-queries: \fI<yes or no> | |
508 | Very large queries are ignored. Default is off, since it is legal protocol | |
509 | wise to send these, and could be necessary for operation if TSIG or EDNS | |
510 | payload is very large. | |
511 | .TP | |
512 | .B harden\-glue: \fI<yes or no> | |
513 | Will trust glue only if it is within the servers authority. Default is on. | |
514 | .TP | |
515 | .B harden\-dnssec\-stripped: \fI<yes or no> | |
516 | Require DNSSEC data for trust\-anchored zones, if such data is absent, | |
517 | the zone becomes bogus. If turned off, and no DNSSEC data is received | |
518 | (or the DNSKEY data fails to validate), then the zone is made insecure, | |
519 | this behaves like there is no trust anchor. You could turn this off if | |
520 | you are sometimes behind an intrusive firewall (of some sort) that | |
521 | removes DNSSEC data from packets, or a zone changes from signed to | |
522 | unsigned to badly signed often. If turned off you run the risk of a | |
523 | downgrade attack that disables security for a zone. Default is on. | |
524 | .TP | |
525 | .B harden\-below\-nxdomain: \fI<yes or no> | |
526 | From draft\-vixie\-dnsext\-resimprove, returns nxdomain to queries for a name | |
527 | below another name that is already known to be nxdomain. DNSSEC mandates | |
528 | noerror for empty nonterminals, hence this is possible. Very old software | |
529 | might return nxdomain for empty nonterminals (that usually happen for reverse | |
530 | IP address lookups), and thus may be incompatible with this. To try to avoid | |
531 | this only DNSSEC-secure nxdomains are used, because the old software does not | |
532 | have DNSSEC. Default is off. | |
533 | .TP | |
534 | .B harden\-referral\-path: \fI<yes or no> | |
535 | Harden the referral path by performing additional queries for | |
536 | infrastructure data. Validates the replies if trust anchors are configured | |
537 | and the zones are signed. This enforces DNSSEC validation on nameserver | |
538 | NS sets and the nameserver addresses that are encountered on the referral | |
539 | path to the answer. | |
540 | Default off, because it burdens the authority servers, and it is | |
541 | not RFC standard, and could lead to performance problems because of the | |
542 | extra query load that is generated. Experimental option. | |
543 | If you enable it consider adding more numbers after the target\-fetch\-policy | |
544 | to increase the max depth that is checked to. | |
545 | .TP | |
546 | .B use\-caps\-for\-id: \fI<yes or no> | |
547 | Use 0x20\-encoded random bits in the query to foil spoof attempts. | |
548 | This perturbs the lowercase and uppercase of query names sent to | |
549 | authority servers and checks if the reply still has the correct casing. | |
550 | Disabled by default. | |
551 | This feature is an experimental implementation of draft dns\-0x20. | |
552 | .TP | |
553 | .B private\-address: \fI<IP address or subnet> | |
554 | Give IPv4 of IPv6 addresses or classless subnets. These are addresses | |
555 | on your private network, and are not allowed to be returned for public | |
556 | internet names. Any occurence of such addresses are removed from | |
557 | DNS answers. Additionally, the DNSSEC validator may mark the answers | |
558 | bogus. This protects against so\-called DNS Rebinding, where a user browser | |
559 | is turned into a network proxy, allowing remote access through the browser | |
560 | to other parts of your private network. Some names can be allowed to | |
561 | contain your private addresses, by default all the \fBlocal\-data\fR | |
562 | that you configured is allowed to, and you can specify additional | |
563 | names using \fBprivate\-domain\fR. No private addresses are enabled | |
564 | by default. We consider to enable this for the RFC1918 private IP | |
565 | address space by default in later releases. That would enable private | |
566 | addresses for 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 | |
567 | fd00::/8 and fe80::/10, since the RFC standards say these addresses | |
568 | should not be visible on the public internet. Turning on 127.0.0.0/8 | |
569 | would hinder many spamblocklists as they use that. | |
570 | .TP | |
571 | .B private\-domain: \fI<domain name> | |
572 | Allow this domain, and all its subdomains to contain private addresses. | |
573 | Give multiple times to allow multiple domain names to contain private | |
574 | addresses. Default is none. | |
575 | .TP | |
576 | .B unwanted\-reply\-threshold: \fI<number> | |
577 | If set, a total number of unwanted replies is kept track of in every thread. | |
578 | When it reaches the threshold, a defensive action is taken and a warning | |
579 | is printed to the log. The defensive action is to clear the rrset and | |
580 | message caches, hopefully flushing away any poison. A value of 10 million | |
581 | is suggested. Default is 0 (turned off). | |
582 | .TP | |
583 | .B do\-not\-query\-address: \fI<IP address> | |
584 | Do not query the given IP address. Can be IP4 or IP6. Append /num to | |
585 | indicate a classless delegation netblock, for example like | |
586 | 10.2.3.4/24 or 2001::11/64. | |
587 | .TP | |
588 | .B do\-not\-query\-localhost: \fI<yes or no> | |
589 | If yes, localhost is added to the do\-not\-query\-address entries, both | |
590 | IP6 ::1 and IP4 127.0.0.1/8. If no, then localhost can be used to send | |
591 | queries to. Default is yes. | |
592 | .TP | |
593 | .B prefetch: \fI<yes or no> | |
594 | If yes, message cache elements are prefetched before they expire to | |
595 | keep the cache up to date. Default is no. Turning it on gives about | |
596 | 10 percent more traffic and load on the machine, but popular items do | |
597 | not expire from the cache. | |
598 | .TP | |
599 | .B prefetch-key: \fI<yes or no> | |
600 | If yes, fetch the DNSKEYs earlier in the validation process, when a DS | |
601 | record is encountered. This lowers the latency of requests. It does use | |
602 | a little more CPU. Also if the cache is set to 0, it is no use. Default is no. | |
603 | .TP | |
604 | .B rrset-roundrobin: \fI<yes or no> | |
605 | If yes, Unbound rotates RRSet order in response (the random number is taken | |
606 | from the query ID, for speed and thread safety). Default is no. | |
607 | .TP | |
608 | .B minimal-responses: \fI<yes or no> | |
609 | If yes, Unbound doesn't insert authority/additional sections into response | |
610 | messages when those sections are not required. This reduces response | |
611 | size significantly, and may avoid TCP fallback for some responses. | |
612 | This may cause a slight speedup. The default is no, because the DNS | |
613 | protocol RFCs mandate these sections, and the additional content could | |
614 | be of use and save roundtrips for clients. | |
615 | .TP | |
616 | .B module\-config: \fI<"module names"> | |
617 | Module configuration, a list of module names separated by spaces, surround | |
618 | the string with quotes (""). The modules can be validator, iterator. | |
619 | Setting this to "iterator" will result in a non\-validating server. | |
620 | Setting this to "validator iterator" will turn on DNSSEC validation. | |
621 | The ordering of the modules is important. | |
622 | You must also set trust\-anchors for validation to be useful. | |
623 | .TP | |
624 | .B trust\-anchor\-file: \fI<filename> | |
625 | File with trusted keys for validation. Both DS and DNSKEY entries can appear | |
626 | in the file. The format of the file is the standard DNS Zone file format. | |
627 | Default is "", or no trust anchor file. | |
628 | .TP | |
629 | .B auto\-trust\-anchor\-file: \fI<filename> | |
630 | File with trust anchor for one zone, which is tracked with RFC5011 probes. | |
631 | The probes are several times per month, thus the machine must be online | |
632 | frequently. The initial file can be one with contents as described in | |
633 | \fBtrust\-anchor\-file\fR. The file is written to when the anchor is updated, | |
634 | so the unbound user must have write permission. | |
635 | .TP | |
636 | .B trust\-anchor: \fI<"Resource Record"> | |
637 | A DS or DNSKEY RR for a key to use for validation. Multiple entries can be | |
638 | given to specify multiple trusted keys, in addition to the trust\-anchor\-files. | |
639 | The resource record is entered in the same format as 'dig' or 'drill' prints | |
640 | them, the same format as in the zone file. Has to be on a single line, with | |
641 | "" around it. A TTL can be specified for ease of cut and paste, but is ignored. | |
642 | A class can be specified, but class IN is default. | |
643 | .TP | |
644 | .B trusted\-keys\-file: \fI<filename> | |
645 | File with trusted keys for validation. Specify more than one file | |
646 | with several entries, one file per entry. Like \fBtrust\-anchor\-file\fR | |
647 | but has a different file format. Format is BIND\-9 style format, | |
648 | the trusted\-keys { name flag proto algo "key"; }; clauses are read. | |
649 | It is possible to use wildcards with this statement, the wildcard is | |
650 | expanded on start and on reload. | |
651 | .TP | |
652 | .B dlv\-anchor\-file: \fI<filename> | |
653 | File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and | |
654 | DNSKEY entries can be used in the file, in the same format as for | |
655 | \fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more | |
656 | would be slow. The DLV configured is used as a root trusted DLV, this | |
657 | means that it is a lookaside for the root. Default is "", or no dlv anchor file. | |
658 | .TP | |
659 | .B dlv\-anchor: \fI<"Resource Record"> | |
660 | Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline. | |
661 | .TP | |
662 | .B domain\-insecure: \fI<domain name> | |
663 | Sets domain name to be insecure, DNSSEC chain of trust is ignored towards | |
664 | the domain name. So a trust anchor above the domain name can not make the | |
665 | domain secure with a DS record, such a DS record is then ignored. | |
666 | Also keys from DLV are ignored for the domain. Can be given multiple times | |
667 | to specify multiple domains that are treated as if unsigned. If you set | |
668 | trust anchors for the domain they override this setting (and the domain | |
669 | is secured). | |
670 | .IP | |
671 | This can be useful if you want to make sure a trust anchor for external | |
672 | lookups does not affect an (unsigned) internal domain. A DS record | |
673 | externally can create validation failures for that internal domain. | |
674 | .TP | |
675 | .B val\-override\-date: \fI<rrsig\-style date spec> | |
676 | Default is "" or "0", which disables this debugging feature. If enabled by | |
677 | giving a RRSIG style date, that date is used for verifying RRSIG inception | |
678 | and expiration dates, instead of the current date. Do not set this unless | |
679 | you are debugging signature inception and expiration. The value \-1 ignores | |
680 | the date altogether, useful for some special applications. | |
681 | .TP | |
682 | .B val\-sig\-skew\-min: \fI<seconds> | |
683 | Minimum number of seconds of clock skew to apply to validated signatures. | |
684 | A value of 10% of the signature lifetime (expiration \- inception) is | |
685 | used, capped by this setting. Default is 3600 (1 hour) which allows for | |
686 | daylight savings differences. Lower this value for more strict checking | |
687 | of short lived signatures. | |
688 | .TP | |
689 | .B val\-sig\-skew\-max: \fI<seconds> | |
690 | Maximum number of seconds of clock skew to apply to validated signatures. | |
691 | A value of 10% of the signature lifetime (expiration \- inception) | |
692 | is used, capped by this setting. Default is 86400 (24 hours) which | |
693 | allows for timezone setting problems in stable domains. Setting both | |
694 | min and max very low disables the clock skew allowances. Setting both | |
695 | min and max very high makes the validator check the signature timestamps | |
696 | less strictly. | |
697 | .TP | |
698 | .B val\-bogus\-ttl: \fI<number> | |
699 | The time to live for bogus data. This is data that has failed validation; | |
700 | due to invalid signatures or other checks. The TTL from that data cannot be | |
701 | trusted, and this value is used instead. The value is in seconds, default 60. | |
702 | The time interval prevents repeated revalidation of bogus data. | |
703 | .TP | |
704 | .B val\-clean\-additional: \fI<yes or no> | |
705 | Instruct the validator to remove data from the additional section of secure | |
706 | messages that are not signed properly. Messages that are insecure, bogus, | |
707 | indeterminate or unchecked are not affected. Default is yes. Use this setting | |
708 | to protect the users that rely on this validator for authentication from | |
709 | protentially bad data in the additional section. | |
710 | .TP | |
711 | .B val\-log\-level: \fI<number> | |
712 | Have the validator print validation failures to the log. Regardless of | |
713 | the verbosity setting. Default is 0, off. At 1, for every user query | |
714 | that fails a line is printed to the logs. This way you can monitor what | |
715 | happens with validation. Use a diagnosis tool, such as dig or drill, | |
716 | to find out why validation is failing for these queries. At 2, not only | |
717 | the query that failed is printed but also the reason why unbound thought | |
718 | it was wrong and which server sent the faulty data. | |
719 | .TP | |
720 | .B val\-permissive\-mode: \fI<yes or no> | |
721 | Instruct the validator to mark bogus messages as indeterminate. The security | |
722 | checks are performed, but if the result is bogus (failed security), the | |
723 | reply is not withheld from the client with SERVFAIL as usual. The client | |
724 | receives the bogus data. For messages that are found to be secure the AD bit | |
725 | is set in replies. Also logging is performed as for full validation. | |
726 | The default value is "no". | |
727 | .TP | |
728 | .B ignore\-cd\-flag: \fI<yes or no> | |
729 | Instruct unbound to ignore the CD flag from clients and refuse to | |
730 | return bogus answers to them. Thus, the CD (Checking Disabled) flag | |
731 | does not disable checking any more. This is useful if legacy (w2008) | |
732 | servers that set the CD flag but cannot validate DNSSEC themselves are | |
733 | the clients, and then unbound provides them with DNSSEC protection. | |
734 | The default value is "no". | |
735 | .TP | |
736 | .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> | |
737 | List of keysize and iteration count values, separated by spaces, surrounded | |
738 | by quotes. Default is "1024 150 2048 500 4096 2500". This determines the | |
739 | maximum allowed NSEC3 iteration count before a message is simply marked | |
740 | insecure instead of performing the many hashing iterations. The list must | |
741 | be in ascending order and have at least one entry. If you set it to | |
742 | "1024 65535" there is no restriction to NSEC3 iteration values. | |
743 | This table must be kept short; a very long list could cause slower operation. | |
744 | .TP | |
745 | .B add\-holddown: \fI<seconds> | |
746 | Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011 | |
747 | autotrust updates to add new trust anchors only after they have been | |
748 | visible for this time. Default is 30 days as per the RFC. | |
749 | .TP | |
750 | .B del\-holddown: \fI<seconds> | |
751 | Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011 | |
752 | autotrust updates to remove revoked trust anchors after they have been | |
753 | kept in the revoked list for this long. Default is 30 days as per | |
754 | the RFC. | |
755 | .TP | |
756 | .B keep\-missing: \fI<seconds> | |
757 | Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011 | |
758 | autotrust updates to remove missing trust anchors after they have been | |
759 | unseen for this long. This cleans up the state file if the target zone | |
760 | does not perform trust anchor revocation, so this makes the auto probe | |
761 | mechanism work with zones that perform regular (non\-5011) rollovers. | |
762 | The default is 366 days. The value 0 does not remove missing anchors, | |
763 | as per the RFC. | |
764 | .TP | |
765 | .B key\-cache\-size: \fI<number> | |
766 | Number of bytes size of the key cache. Default is 4 megabytes. | |
767 | A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes | |
768 | or gigabytes (1024*1024 bytes in a megabyte). | |
769 | .TP | |
770 | .B key\-cache\-slabs: \fI<number> | |
771 | Number of slabs in the key cache. Slabs reduce lock contention by threads. | |
772 | Must be set to a power of 2. Setting (close) to the number of cpus is a | |
773 | reasonable guess. | |
774 | .TP | |
775 | .B neg\-cache\-size: \fI<number> | |
776 | Number of bytes size of the aggressive negative cache. Default is 1 megabyte. | |
777 | A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes | |
778 | or gigabytes (1024*1024 bytes in a megabyte). | |
779 | .TP | |
780 | .B unblock\-lan\-zones: \fI<yesno> | |
781 | Default is disabled. If enabled, then for private address space, | |
782 | the reverse lookups are no longer filtered. This allows unbound when | |
783 | running as dns service on a host where it provides service for that host, | |
784 | to put out all of the queries for the 'lan' upstream. When enabled, | |
785 | only localhost, 127.0.0.1 reverse and ::1 reverse zones are configured | |
786 | with default local zones. Disable the option when unbound is running | |
787 | as a (DHCP-) DNS network resolver for a group of machines, where such | |
788 | lookups should be filtered (RFC compliance), this also stops potential | |
789 | data leakage about the local network to the upstream DNS servers. | |
790 | .TP | |
791 | .B local\-zone: \fI<zone> <type> | |
792 | Configure a local zone. The type determines the answer to give if | |
793 | there is no match from local\-data. The types are deny, refuse, static, | |
794 | transparent, redirect, nodefault, typetransparent, and are explained | |
795 | below. After that the default settings are listed. Use local\-data: to | |
796 | enter data into the local zone. Answers for local zones are authoritative | |
797 | DNS answers. By default the zones are class IN. | |
798 | .IP | |
799 | If you need more complicated authoritative data, with referrals, wildcards, | |
800 | CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for | |
801 | it as detailed in the stub zone section below. | |
802 | .TP 10 | |
803 | \h'5'\fIdeny\fR | |
804 | Do not send an answer, drop the query. | |
805 | If there is a match from local data, the query is answered. | |
806 | .TP 10 | |
807 | \h'5'\fIrefuse\fR | |
808 | Send an error message reply, with rcode REFUSED. | |
809 | If there is a match from local data, the query is answered. | |
810 | .TP 10 | |
811 | \h'5'\fIstatic\fR | |
812 | If there is a match from local data, the query is answered. | |
813 | Otherwise, the query is answered with nodata or nxdomain. | |
814 | For a negative answer a SOA is included in the answer if present | |
815 | as local\-data for the zone apex domain. | |
816 | .TP 10 | |
817 | \h'5'\fItransparent\fR | |
818 | If there is a match from local data, the query is answered. | |
819 | Otherwise if the query has a different name, the query is resolved normally. | |
820 | If the query is for a name given in localdata but no such type of data is | |
821 | given in localdata, then a noerror nodata answer is returned. | |
822 | If no local\-zone is given local\-data causes a transparent zone | |
823 | to be created by default. | |
824 | .TP 10 | |
825 | \h'5'\fItypetransparent\fR | |
826 | If there is a match from local data, the query is answered. If the query | |
827 | is for a different name, or for the same name but for a different type, | |
828 | the query is resolved normally. So, similar to transparent but types | |
829 | that are not listed in local data are resolved normally, so if an A record | |
830 | is in the local data that does not cause a nodata reply for AAAA queries. | |
831 | .TP 10 | |
832 | \h'5'\fIredirect\fR | |
833 | The query is answered from the local data for the zone name. | |
834 | There may be no local data beneath the zone name. | |
835 | This answers queries for the zone, and all subdomains of the zone | |
836 | with the local data for the zone. | |
837 | It can be used to redirect a domain to return a different address record | |
838 | to the end user, with | |
839 | local\-zone: "example.com." redirect and | |
840 | local\-data: "example.com. A 127.0.0.1" | |
841 | queries for www.example.com and www.foo.example.com are redirected, so | |
842 | that users with web browsers cannot access sites with suffix example.com. | |
843 | .TP 10 | |
844 | \h'5'\fInodefault\fR | |
845 | Used to turn off default contents for AS112 zones. The other types | |
846 | also turn off default contents for the zone. The 'nodefault' option | |
847 | has no other effect than turning off default contents for the | |
848 | given zone. | |
849 | .P | |
850 | The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112 | |
851 | zones. The AS112 zones are reverse DNS zones for private use and reserved | |
852 | IP addresses for which the servers on the internet cannot provide correct | |
853 | answers. They are configured by default to give nxdomain (no reverse | |
854 | information) answers. The defaults can be turned off by specifying your | |
855 | own local\-zone of that name, or using the 'nodefault' type. Below is a | |
856 | list of the default zone contents. | |
857 | .TP 10 | |
858 | \h'5'\fIlocalhost\fR | |
859 | The IP4 and IP6 localhost information is given. NS and SOA records are provided | |
860 | for completeness and to satisfy some DNS update tools. Default content: | |
861 | .nf | |
862 | local\-zone: "localhost." static | |
863 | local\-data: "localhost. 10800 IN NS localhost." | |
864 | local\-data: "localhost. 10800 IN | |
865 | SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" | |
866 | local\-data: "localhost. 10800 IN A 127.0.0.1" | |
867 | local\-data: "localhost. 10800 IN AAAA ::1" | |
868 | .fi | |
869 | .TP 10 | |
870 | \h'5'\fIreverse IPv4 loopback\fR | |
871 | Default content: | |
872 | .nf | |
873 | local\-zone: "127.in\-addr.arpa." static | |
874 | local\-data: "127.in\-addr.arpa. 10800 IN NS localhost." | |
875 | local\-data: "127.in\-addr.arpa. 10800 IN | |
876 | SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" | |
877 | local\-data: "1.0.0.127.in\-addr.arpa. 10800 IN | |
878 | PTR localhost." | |
879 | .fi | |
880 | .TP 10 | |
881 | \h'5'\fIreverse IPv6 loopback\fR | |
882 | Default content: | |
883 | .nf | |
884 | local\-zone: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. | |
885 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." static | |
886 | local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. | |
887 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN | |
888 | NS localhost." | |
889 | local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. | |
890 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN | |
891 | SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" | |
892 | local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. | |
893 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN | |
894 | PTR localhost." | |
895 | .fi | |
896 | .TP 10 | |
897 | \h'5'\fIreverse RFC1918 local use zones\fR | |
898 | Reverse data for zones 10.in\-addr.arpa, 16.172.in\-addr.arpa to | |
899 | 31.172.in\-addr.arpa, 168.192.in\-addr.arpa. | |
900 | The \fBlocal\-zone:\fR is set static and as \fBlocal\-data:\fR SOA and NS | |
901 | records are provided. | |
902 | .TP 10 | |
903 | \h'5'\fIreverse RFC3330 IP4 this, link\-local, testnet and broadcast\fR | |
904 | Reverse data for zones 0.in\-addr.arpa, 254.169.in\-addr.arpa, | |
905 | 2.0.192.in\-addr.arpa (TEST NET 1), 100.51.198.in\-addr.arpa (TEST NET 2), | |
906 | 113.0.203.in\-addr.arpa (TEST NET 3), 255.255.255.255.in\-addr.arpa. | |
907 | And from 64.100.in\-addr.arpa to 127.100.in\-addr.arpa (Shared Address Space). | |
908 | .TP 10 | |
909 | \h'5'\fIreverse RFC4291 IP6 unspecified\fR | |
910 | Reverse data for zone | |
911 | .nf | |
912 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. | |
913 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. | |
914 | .fi | |
915 | .TP 10 | |
916 | \h'5'\fIreverse RFC4193 IPv6 Locally Assigned Local Addresses\fR | |
917 | Reverse data for zone D.F.ip6.arpa. | |
918 | .TP 10 | |
919 | \h'5'\fIreverse RFC4291 IPv6 Link Local Addresses\fR | |
920 | Reverse data for zones 8.E.F.ip6.arpa to B.E.F.ip6.arpa. | |
921 | .TP 10 | |
922 | \h'5'\fIreverse IPv6 Example Prefix\fR | |
923 | Reverse data for zone 8.B.D.0.1.0.0.2.ip6.arpa. This zone is used for | |
924 | tutorials and examples. You can remove the block on this zone with: | |
925 | .nf | |
926 | local\-zone: 8.B.D.0.1.0.0.2.ip6.arpa. nodefault | |
927 | .fi | |
928 | You can also selectively unblock a part of the zone by making that part | |
929 | transparent with a local\-zone statement. | |
930 | This also works with the other default zones. | |
931 | .\" End of local-zone listing. | |
932 | .TP 5 | |
933 | .B local\-data: \fI"<resource record string>" | |
934 | Configure local data, which is served in reply to queries for it. | |
935 | The query has to match exactly unless you configure the local\-zone as | |
936 | redirect. If not matched exactly, the local\-zone type determines | |
937 | further processing. If local\-data is configured that is not a subdomain of | |
938 | a local\-zone, a transparent local\-zone is configured. | |
939 | For record types such as TXT, use single quotes, as in | |
940 | local\-data: 'example. TXT "text"'. | |
941 | .IP | |
942 | If you need more complicated authoritative data, with referrals, wildcards, | |
943 | CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for | |
944 | it as detailed in the stub zone section below. | |
945 | .TP 5 | |
946 | .B local\-data\-ptr: \fI"IPaddr name" | |
947 | Configure local data shorthand for a PTR record with the reversed IPv4 or | |
948 | IPv6 address and the host name. For example "192.0.2.4 www.example.com". | |
949 | TTL can be inserted like this: "2001:DB8::4 7200 www.example.com" | |
950 | .SS "Remote Control Options" | |
951 | In the | |
952 | .B remote\-control: | |
953 | clause are the declarations for the remote control facility. If this is | |
954 | enabled, the \fIunbound\-control\fR(8) utility can be used to send | |
955 | commands to the running unbound server. The server uses these clauses | |
956 | to setup SSLv3 / TLSv1 security for the connection. The | |
957 | \fIunbound\-control\fR(8) utility also reads the \fBremote\-control\fR | |
958 | section for options. To setup the correct self\-signed certificates use the | |
959 | \fIunbound\-control\-setup\fR(8) utility. | |
960 | .TP 5 | |
961 | .B control\-enable: \fI<yes or no> | |
962 | The option is used to enable remote control, default is "no". | |
963 | If turned off, the server does not listen for control commands. | |
964 | .TP 5 | |
965 | .B control\-interface: <ip address> | |
966 | Give IPv4 or IPv6 addresses to listen on for control commands. | |
967 | By default localhost (127.0.0.1 and ::1) is listened to. | |
968 | Use 0.0.0.0 and ::0 to listen to all interfaces. | |
969 | .TP 5 | |
970 | .B control\-port: <port number> | |
971 | The port number to listen on for control commands, default is 8953. | |
972 | If you change this port number, and permissions have been dropped, | |
973 | a reload is not sufficient to open the port again, you must then restart. | |
974 | .TP 5 | |
975 | .B server\-key\-file: "<private key file>" | |
976 | Path to the server private key, by default unbound_server.key. | |
977 | This file is generated by the \fIunbound\-control\-setup\fR utility. | |
978 | This file is used by the unbound server, but not by \fIunbound\-control\fR. | |
979 | .TP 5 | |
980 | .B server\-cert\-file: "<certificate file.pem>" | |
981 | Path to the server self signed certificate, by default unbound_server.pem. | |
982 | This file is generated by the \fIunbound\-control\-setup\fR utility. | |
983 | This file is used by the unbound server, and also by \fIunbound\-control\fR. | |
984 | .TP 5 | |
985 | .B control\-key\-file: "<private key file>" | |
986 | Path to the control client private key, by default unbound_control.key. | |
987 | This file is generated by the \fIunbound\-control\-setup\fR utility. | |
988 | This file is used by \fIunbound\-control\fR. | |
989 | .TP 5 | |
990 | .B control\-cert\-file: "<certificate file.pem>" | |
991 | Path to the control client certificate, by default unbound_control.pem. | |
992 | This certificate has to be signed with the server certificate. | |
993 | This file is generated by the \fIunbound\-control\-setup\fR utility. | |
994 | This file is used by \fIunbound\-control\fR. | |
995 | .SS "Stub Zone Options" | |
996 | .LP | |
997 | There may be multiple | |
998 | .B stub\-zone: | |
999 | clauses. Each with a name: and zero or more hostnames or IP addresses. | |
1000 | For the stub zone this list of nameservers is used. Class IN is assumed. | |
1001 | The servers should be authority servers, not recursors; unbound performs | |
1002 | the recursive processing itself for stub zones. | |
1003 | .P | |
1004 | The stub zone can be used to configure authoritative data to be used | |
1005 | by the resolver that cannot be accessed using the public internet servers. | |
1006 | This is useful for company\-local data or private zones. Setup an | |
1007 | authoritative server on a different host (or different port). Enter a config | |
1008 | entry for unbound with | |
1009 | .B stub\-addr: | |
1010 | <ip address of host[@port]>. | |
1011 | The unbound resolver can then access the data, without referring to the | |
1012 | public internet for it. | |
1013 | .P | |
1014 | This setup allows DNSSEC signed zones to be served by that | |
1015 | authoritative server, in which case a trusted key entry with the public key | |
1016 | can be put in config, so that unbound can validate the data and set the AD | |
1017 | bit on replies for the private zone (authoritative servers do not set the | |
1018 | AD bit). This setup makes unbound capable of answering queries for the | |
1019 | private zone, and can even set the AD bit ('authentic'), but the AA | |
1020 | ('authoritative') bit is not set on these replies. | |
1021 | .TP | |
1022 | .B name: \fI<domain name> | |
1023 | Name of the stub zone. | |
1024 | .TP | |
1025 | .B stub\-host: \fI<domain name> | |
1026 | Name of stub zone nameserver. Is itself resolved before it is used. | |
1027 | .TP | |
1028 | .B stub\-addr: \fI<IP address> | |
1029 | IP address of stub zone nameserver. Can be IP 4 or IP 6. | |
1030 | To use a nondefault port for DNS communication append '@' with the port number. | |
1031 | .TP | |
1032 | .B stub\-prime: \fI<yes or no> | |
1033 | This option is by default off. If enabled it performs NS set priming, | |
1034 | which is similar to root hints, where it starts using the list of nameservers | |
1035 | currently published by the zone. Thus, if the hint list is slightly outdated, | |
1036 | the resolver picks up a correct list online. | |
1037 | .TP | |
1038 | .B stub\-first: \fI<yes or no> | |
1039 | If enabled, a query is attempted without the stub clause if it fails. | |
1040 | The data could not be retrieved and would have caused SERVFAIL because | |
1041 | the servers are unreachable, instead it is tried without this clause. | |
1042 | The default is no. | |
1043 | .SS "Forward Zone Options" | |
1044 | .LP | |
1045 | There may be multiple | |
1046 | .B forward\-zone: | |
1047 | clauses. Each with a \fBname:\fR and zero or more hostnames or IP | |
1048 | addresses. For the forward zone this list of nameservers is used to | |
1049 | forward the queries to. The servers listed as \fBforward\-host:\fR and | |
1050 | \fBforward\-addr:\fR have to handle further recursion for the query. Thus, | |
1051 | those servers are not authority servers, but are (just like unbound is) | |
1052 | recursive servers too; unbound does not perform recursion itself for the | |
1053 | forward zone, it lets the remote server do it. Class IN is assumed. | |
1054 | A forward\-zone entry with name "." and a forward\-addr target will | |
1055 | forward all queries to that other server (unless it can answer from | |
1056 | the cache). | |
1057 | .TP | |
1058 | .B name: \fI<domain name> | |
1059 | Name of the forward zone. | |
1060 | .TP | |
1061 | .B forward\-host: \fI<domain name> | |
1062 | Name of server to forward to. Is itself resolved before it is used. | |
1063 | .TP | |
1064 | .B forward\-addr: \fI<IP address> | |
1065 | IP address of server to forward to. Can be IP 4 or IP 6. | |
1066 | To use a nondefault port for DNS communication append '@' with the port number. | |
1067 | .TP | |
1068 | .B forward\-first: \fI<yes or no> | |
1069 | If enabled, a query is attempted without the forward clause if it fails. | |
1070 | The data could not be retrieved and would have caused SERVFAIL because | |
1071 | the servers are unreachable, instead it is tried without this clause. | |
1072 | The default is no. | |
1073 | .SS "Python Module Options" | |
1074 | .LP | |
1075 | The | |
1076 | .B python: | |
1077 | clause gives the settings for the \fIpython\fR(1) script module. This module | |
1078 | acts like the iterator and validator modules do, on queries and answers. | |
1079 | To enable the script module it has to be compiled into the daemon, | |
1080 | and the word "python" has to be put in the \fBmodule\-config:\fR option | |
1081 | (usually first, or between the validator and iterator). | |
1082 | .TP | |
1083 | .B python\-script: \fI<python file>\fR | |
1084 | The script file to load. | |
1085 | .SS "DNS64 Module Options" | |
1086 | .LP | |
1087 | The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 | |
1088 | validator iterator" directive and be compiled into the daemon to be | |
1089 | enabled. These settings go in the \fBserver:\fR section. | |
1090 | .TP | |
1091 | .B dns64\-prefix: \fI<IPv6 prefix>\fR | |
1092 | This sets the DNS64 prefix to use to synthesize AAAA records with. | |
1093 | It must be /96 or shorter. The default prefix is 64:ff9b::/96. | |
1094 | .TP | |
1095 | .B dns64\-synthall: \fI<yes or no>\fR | |
1096 | Debug option, default no. If enabled, synthesize all AAAA records | |
1097 | despite the presence of actual AAAA records. | |
1098 | .SH "MEMORY CONTROL EXAMPLE" | |
1099 | In the example config settings below memory usage is reduced. Some service | |
1100 | levels are lower, notable very large data and a high TCP load are no longer | |
1101 | supported. Very large data and high TCP loads are exceptional for the DNS. | |
1102 | DNSSEC validation is enabled, just add trust anchors. | |
1103 | If you do not have to worry about programs using more than 3 Mb of memory, | |
1104 | the below example is not for you. Use the defaults to receive full service, | |
1105 | which on BSD\-32bit tops out at 30\-40 Mb after heavy usage. | |
1106 | .P | |
1107 | .nf | |
1108 | # example settings that reduce memory usage | |
1109 | server: | |
1110 | num\-threads: 1 | |
1111 | outgoing\-num\-tcp: 1 # this limits TCP service, uses less buffers. | |
1112 | incoming\-num\-tcp: 1 | |
1113 | outgoing\-range: 60 # uses less memory, but less performance. | |
1114 | msg\-buffer\-size: 8192 # note this limits service, 'no huge stuff'. | |
1115 | msg\-cache\-size: 100k | |
1116 | msg\-cache\-slabs: 1 | |
1117 | rrset\-cache\-size: 100k | |
1118 | rrset\-cache\-slabs: 1 | |
1119 | infra\-cache\-numhosts: 200 | |
1120 | infra\-cache\-slabs: 1 | |
1121 | key\-cache\-size: 100k | |
1122 | key\-cache\-slabs: 1 | |
1123 | neg\-cache\-size: 10k | |
1124 | num\-queries\-per\-thread: 30 | |
1125 | target\-fetch\-policy: "2 1 0 0 0 0" | |
1126 | harden\-large\-queries: "yes" | |
1127 | harden\-short\-bufsize: "yes" | |
1128 | .fi | |
1129 | .SH "FILES" | |
1130 | .TP | |
1131 | .I /usr/local/etc/unbound | |
1132 | default unbound working directory. | |
1133 | .TP | |
1134 | .I /usr/local/etc/unbound | |
1135 | default | |
1136 | \fIchroot\fR(2) | |
1137 | location. | |
1138 | .TP | |
1139 | .I /usr/local/etc/unbound/unbound.conf | |
1140 | unbound configuration file. | |
1141 | .TP | |
1142 | .I /usr/local/etc/unbound/unbound.pid | |
1143 | default unbound pidfile with process ID of the running daemon. | |
1144 | .TP | |
1145 | .I unbound.log | |
1146 | unbound log file. default is to log to | |
1147 | \fIsyslog\fR(3). | |
1148 | .SH "SEE ALSO" | |
1149 | \fIunbound\fR(8), | |
1150 | \fIunbound\-checkconf\fR(8). | |
1151 | .SH "AUTHORS" | |
1152 | .B Unbound | |
1153 | was written by NLnet Labs. Please see CREDITS file | |
1154 | in the distribution for further details. |