]> git.ipfire.org Git - people/ms/dnsmasq.git/blame - man/dnsmasq.8
Add --static to pkg-config command when appropriate.
[people/ms/dnsmasq.git] / man / dnsmasq.8
CommitLineData
9e4abcb5
SK
1.TH DNSMASQ 8
2.SH NAME
3dnsmasq \- A lightweight DHCP and caching DNS server.
4.SH SYNOPSIS
5.B dnsmasq
6.I [OPTION]...
7.SH "DESCRIPTION"
8.BR dnsmasq
34d0a36a 9is a lightweight DNS, TFTP, PXE, router advertisement and DHCP server. It is intended to provide
5aabfc78 10coupled DNS and DHCP service to a LAN.
9e4abcb5
SK
11.PP
12Dnsmasq accepts DNS queries and either answers them from a small, local,
13cache or forwards them to a real, recursive, DNS server. It loads the
14contents of /etc/hosts so that local hostnames
15which do not appear in the global DNS can be resolved and also answers
ee415867
SK
16DNS queries for DHCP configured hosts. It can also act as the
17authoritative DNS server for one or more domains, allowing local names
18to appear in the global DNS. It can be configured to do DNSSEC
19validation.
9e4abcb5 20.PP
73a08a24
SK
21The dnsmasq DHCP server supports static address assignments and multiple
22networks. It automatically
3be34541 23sends a sensible default set of DHCP options, and can be configured to
f2621c7f 24send any desired set of DHCP options, including vendor-encapsulated
1b7ecd11 25options. It includes a secure, read-only,
34d0a36a 26TFTP server to allow net/PXE boot of DHCP hosts and also supports BOOTP. The PXE support is full featured, and includes a proxy mode which supplies PXE information to clients whilst DHCP address allocation is done by another server.
9e4abcb5 27.PP
81925ab7
SK
28The dnsmasq DHCPv6 server provides the same set of features as the
29DHCPv4 server, and in addition, it includes router advertisements and
30a neat feature which allows nameing for clients which use DHCPv4 and
834f36fe 31stateless autoconfiguration only for IPv6 configuration. There is support for doing address allocation (both DHCPv6 and RA) from subnets which are dynamically delegated via DHCPv6 prefix delegation.
34d0a36a
SK
32.PP
33Dnsmasq is coded with small embedded systems in mind. It aims for the smallest possible memory footprint compatible with the supported functions, and allows uneeded functions to be omitted from the compiled binary.
9e4abcb5
SK
34.SH OPTIONS
35Note that in general missing parameters are allowed and switch off
832af0ba 36functions, for instance "--pid-file" disables writing a PID file. On
33820b7e
SK
37BSD, unless the GNU getopt library is linked, the long form of the
38options does not work on the command line; it is still recognised in
39the configuration file.
9e4abcb5 40.TP
7622fc06
SK
41.B --test
42Read and syntax check configuration file(s). Exit with code 0 if all
43is OK, or a non-zero code otherwise. Do not start up dnsmasq.
44.TP
9e4abcb5
SK
45.B \-h, --no-hosts
46Don't read the hostnames in /etc/hosts.
47.TP
48.B \-H, --addn-hosts=<file>
49Additional hosts file. Read the specified file as well as /etc/hosts. If -h is given, read
fd9fa481 50only the specified file. This option may be repeated for more than one
7622fc06 51additional hosts file. If a directory is given, then read all the files contained in that directory.
9e4abcb5 52.TP
832af0ba
SK
53.B \-E, --expand-hosts
54Add the domain to simple names (without a period) in /etc/hosts
1f15b81d
SK
55in the same way as for DHCP-derived names. Note that this does not
56apply to domain names in cnames, PTR records, TXT records etc.
832af0ba 57.TP
9e4abcb5
SK
58.B \-T, --local-ttl=<time>
59When replying with information from /etc/hosts or the DHCP leases
60file dnsmasq by default sets the time-to-live field to zero, meaning
c72daea8 61that the requester should not itself cache the information. This is
9e4abcb5
SK
62the correct thing to do in almost all situations. This option allows a
63time-to-live (in seconds) to be given for these replies. This will
64reduce the load on the server at the expense of clients using stale
65data under some circumstances.
66.TP
824af85b
SK
67.B --neg-ttl=<time>
68Negative replies from upstream servers normally contain time-to-live
69information in SOA records which dnsmasq uses for caching. If the
70replies from upstream servers omit this information, dnsmasq does not
71cache the reply. This option gives a default value for time-to-live
72(in seconds) which dnsmasq uses to cache negative replies even in
73the absence of an SOA record.
74.TP
8ef5ada2
SK
75.B --max-ttl=<time>
76Set a maximum TTL value that will be handed out to clients. The specified
77maximum TTL will be given to clients instead of the true TTL value if it is
78lower. The true TTL value is however kept in the cache to avoid flooding
79the upstream DNS servers.
80.TP
1d860415
SK
81.B --max-cache-ttl=<time>
82Set a maximum TTL value for entries in the cache.
83.TP
333b2ceb
SK
84.B --auth-ttl=<time>
85Set the TTL value returned in answers from the authoritative server.
86.TP
3be34541
SK
87.B \-k, --keep-in-foreground
88Do not go into the background at startup but otherwise run as
3d8df260
SK
89normal. This is intended for use when dnsmasq is run under daemontools
90or launchd.
3be34541 91.TP
9e4abcb5
SK
92.B \-d, --no-daemon
93Debug mode: don't fork to the background, don't write a pid file,
94don't change user id, generate a complete cache dump on receipt on
3be34541 95SIGUSR1, log to stderr as well as syslog, don't fork new processes
83b2198e
SK
96to handle TCP queries. Note that this option is for use in debugging
97only, to stop dnsmasq daemonising in production, use
98.B -k.
9e4abcb5
SK
99.TP
100.B \-q, --log-queries
101Log the results of DNS queries handled by dnsmasq. Enable a full cache dump on receipt of SIGUSR1.
102.TP
849a8357
SK
103.B \-8, --log-facility=<facility>
104Set the facility to which dnsmasq will send syslog entries, this
f2621c7f 105defaults to DAEMON, and to LOCAL0 when debug mode is in operation. If
9e038946 106the facility given contains at least one '/' character, it is taken to
f2621c7f 107be a filename, and dnsmasq logs to the given file, instead of
8ef5ada2
SK
108syslog. If the facility is '-' then dnsmasq logs to stderr.
109(Errors whilst reading configuration will still go to syslog,
f2621c7f 110but all output from a successful startup, and all output whilst
5aabfc78
SK
111running, will go exclusively to the file.) When logging to a file,
112dnsmasq will close and reopen the file when it receives SIGUSR2. This
113allows the log file to be rotated without stopping dnsmasq.
f2621c7f
SK
114.TP
115.B --log-async[=<lines>]
116Enable asynchronous logging and optionally set the limit on the
117number of lines
118which will be queued by dnsmasq when writing to the syslog is slow.
119Dnsmasq can log asynchronously: this
120allows it to continue functioning without being blocked by syslog, and
121allows syslog to use dnsmasq for DNS queries without risking deadlock.
122If the queue of log-lines becomes full, dnsmasq will log the
123overflow, and the number of messages lost. The default queue length is
1245, a sane value would be 5-25, and a maximum limit of 100 is imposed.
849a8357 125.TP
9e4abcb5
SK
126.B \-x, --pid-file=<path>
127Specify an alternate path for dnsmasq to record its process-id in. Normally /var/run/dnsmasq.pid.
128.TP
129.B \-u, --user=<username>
130Specify the userid to which dnsmasq will change after startup. Dnsmasq must normally be started as root, but it will drop root
b8187c80 131privileges after startup by changing id to another user. Normally this user is "nobody" but that
9e4abcb5
SK
132can be over-ridden with this switch.
133.TP
134.B \-g, --group=<groupname>
135Specify the group which dnsmasq will run
136as. The defaults to "dip", if available, to facilitate access to
137/etc/ppp/resolv.conf which is not normally world readable.
138.TP
139.B \-v, --version
140Print the version number.
141.TP
142.B \-p, --port=<port>
824af85b
SK
143Listen on <port> instead of the standard DNS port (53). Setting this
144to zero completely disables DNS function, leaving only DHCP and/or TFTP.
9e4abcb5 145.TP
feba5c1d
SK
146.B \-P, --edns-packet-max=<size>
147Specify the largest EDNS.0 UDP packet which is supported by the DNS
316e2730 148forwarder. Defaults to 4096, which is the RFC5625-recommended size.
feba5c1d 149.TP
9e4abcb5 150.B \-Q, --query-port=<query_port>
1a6bca81
SK
151Send outbound DNS queries from, and listen for their replies on, the
152specific UDP port <query_port> instead of using random ports. NOTE
153that using this option will make dnsmasq less secure against DNS
154spoofing attacks but it may be faster and use less resources. Setting this option
155to zero makes dnsmasq use a single port allocated to it by the
156OS: this was the default behaviour in versions prior to 2.43.
157.TP
158.B --min-port=<port>
159Do not use ports less than that given as source for outbound DNS
160queries. Dnsmasq picks random ports as source for outbound queries:
161when this option is given, the ports used will always to larger
162than that specified. Useful for systems behind firewalls.
9e4abcb5
SK
163.TP
164.B \-i, --interface=<interface name>
feba5c1d
SK
165Listen only on the specified interface(s). Dnsmasq automatically adds
166the loopback (local) interface to the list of interfaces to use when
167the
168.B \--interface
169option is used. If no
170.B \--interface
9e4abcb5 171or
feba5c1d
SK
172.B \--listen-address
173options are given dnsmasq listens on all available interfaces except any
174given in
175.B \--except-interface
309331f5 176options. IP alias interfaces (eg "eth1:0") cannot be used with
8a911ccc
SK
177.B --interface
178or
179.B --except-interface
49333cbd
SK
180options, use --listen-address instead. A simple wildcard, consisting
181of a trailing '*', can be used in
182.B \--interface
183and
184.B \--except-interface
185options.
9e4abcb5
SK
186.TP
187.B \-I, --except-interface=<interface name>
feba5c1d
SK
188Do not listen on the specified interface. Note that the order of
189.B \--listen-address
190.B --interface
191and
192.B --except-interface
193options does not matter and that
194.B --except-interface
195options always override the others.
34d0a36a
SK
196.TP
197.B --auth-server=<domain>,<interface>|<ip-address>
81925ab7 198Enable DNS authoritative mode for queries arriving at an interface or address. Note that the interface or address
34d0a36a
SK
199need not be mentioned in
200.B --interface
201or
202.B --listen-address
203configuration, indeed
204.B --auth-server
f25e6c6d
SK
205will overide these and provide a different DNS service on the
206specified interface. The <domain> is the "glue record". It should
207resolve in the global DNS to a A and/or AAAA record which points to
208the address dnsmasq is listening on. When an interface is specified,
209it may be qualified with "/4" or "/6" to specify only the IPv4 or IPv6
210addresses associated with the interface.
9e4abcb5 211.TP
3d8df260 212.B \-2, --no-dhcp-interface=<interface name>
832af0ba 213Do not provide DHCP or TFTP on the specified interface, but do provide DNS service.
3d8df260 214.TP
44a2a316 215.B \-a, --listen-address=<ipaddr>
feba5c1d
SK
216Listen on the given IP address(es). Both
217.B \--interface
218and
219.B \--listen-address
220options may be given, in which case the set of both interfaces and
221addresses is used. Note that if no
222.B \--interface
223option is given, but
224.B \--listen-address
225is, dnsmasq will not automatically listen on the loopback
226interface. To achieve this, its IP address, 127.0.0.1, must be
227explicitly given as a
228.B \--listen-address
229option.
9e4abcb5 230.TP
44a2a316
SK
231.B \-z, --bind-interfaces
232On systems which support it, dnsmasq binds the wildcard address,
233even when it is listening on only some interfaces. It then discards
234requests that it shouldn't reply to. This has the advantage of
235working even when interfaces come and go and change address. This
236option forces dnsmasq to really bind only the interfaces it is
237listening on. About the only time when this is useful is when
f6b7dc47 238running another nameserver (or another instance of dnsmasq) on the
309331f5 239same machine. Setting this option also enables multiple instances of
f6b7dc47
SK
240dnsmasq which provide DHCP service to run in the same machine.
241.TP
54dd393f
SK
242.B --bind-dynamic
243Enable a network mode which is a hybrid between
244.B --bind-interfaces
a2ce6fcc 245and the default. Dnsmasq binds the address of individual interfaces,
54dd393f
SK
246allowing multiple dnsmasq instances, but if new interfaces or
247addresses appear, it automatically listens on those (subject to any
248access-control configuration). This makes dynamically created
249interfaces work in the same way as the default. Implementing this
a2ce6fcc 250option requires non-standard networking APIs and it is only available
05ff1ed7 251under Linux. On other platforms it falls-back to --bind-interfaces mode.
54dd393f 252.TP
f6b7dc47
SK
253.B \-y, --localise-queries
254Return answers to DNS queries from /etc/hosts which depend on the interface over which the query was
b8187c80 255received. If a name in /etc/hosts has more than one address associated with
f6b7dc47
SK
256it, and at least one of those addresses is on the same subnet as the
257interface to which the query was sent, then return only the
258address(es) on that subnet. This allows for a server to have multiple
259addresses in /etc/hosts corresponding to each of its interfaces, and
260hosts will get the correct address based on which network they are
261attached to. Currently this facility is limited to IPv4.
44a2a316 262.TP
9e4abcb5
SK
263.B \-b, --bogus-priv
264Bogus private reverse lookups. All reverse lookups for private IP ranges (ie 192.168.x.x, etc)
feba5c1d
SK
265which are not found in /etc/hosts or the DHCP leases file are answered
266with "no such domain" rather than being forwarded upstream.
9e4abcb5 267.TP
73a08a24 268.B \-V, --alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]
1cff166d
SK
269Modify IPv4 addresses returned from upstream nameservers; old-ip is
270replaced by new-ip. If the optional mask is given then any address
271which matches the masked old-ip will be re-written. So, for instance
272.B --alias=1.2.3.0,6.7.8.0,255.255.255.0
273will map 1.2.3.56 to 6.7.8.56 and 1.2.3.67 to 6.7.8.67. This is what
73a08a24
SK
274Cisco PIX routers call "DNS doctoring". If the old IP is given as
275range, then only addresses in the range, rather than a whole subnet,
276are re-written. So
277.B --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
278maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
1cff166d 279.TP
9e4abcb5
SK
280.B \-B, --bogus-nxdomain=<ipaddr>
281Transform replies which contain the IP address given into "No such
282domain" replies. This is intended to counteract a devious move made by
b8187c80 283Verisign in September 2003 when they started returning the address of
9e4abcb5
SK
284an advertising web page in response to queries for unregistered names,
285instead of the correct NXDOMAIN response. This option tells dnsmasq to
286fake the correct response when it sees this behaviour. As at Sept 2003
b8187c80 287the IP address being returned by Verisign is 64.94.110.11
9e4abcb5
SK
288.TP
289.B \-f, --filterwin2k
290Later versions of windows make periodic DNS requests which don't get sensible answers from
291the public DNS and can cause problems by triggering dial-on-demand links. This flag turns on an option
292to filter such requests. The requests blocked are for records of types SOA and SRV, and type ANY where the
293requested name has underscores, to catch LDAP requests.
294.TP
295.B \-r, --resolv-file=<file>
296Read the IP addresses of the upstream nameservers from <file>, instead of
297/etc/resolv.conf. For the format of this file see
7de060b0
SK
298.BR resolv.conf (5).
299The only lines relevant to dnsmasq are nameserver ones. Dnsmasq can
9e4abcb5
SK
300be told to poll more than one resolv.conf file, the first file name specified
301overrides the default, subsequent ones add to the list. This is only
302allowed when polling; the file with the currently latest modification
303time is the one used.
304.TP
305.B \-R, --no-resolv
306Don't read /etc/resolv.conf. Get upstream servers only from the command
b49644f3 307line or the dnsmasq configuration file.
9e4abcb5 308.TP
ad094275 309.B \-1, --enable-dbus[=<service-name>]
3d8df260
SK
310Allow dnsmasq configuration to be updated via DBus method calls. The
311configuration which can be changed is upstream DNS servers (and
b8187c80 312corresponding domains) and cache clear. Requires that dnsmasq has
ad094275
SK
313been built with DBus support. If the service name is given, dnsmasq
314provides service at that name, rather than the default which is
315.B uk.org.thekelleys.dnsmasq
3d8df260 316.TP
9e4abcb5
SK
317.B \-o, --strict-order
318By default, dnsmasq will send queries to any of the upstream servers
824af85b 319it knows about and tries to favour servers that are known to
9e4abcb5
SK
320be up. Setting this flag forces dnsmasq to try each query with each
321server strictly in the order they appear in /etc/resolv.conf
322.TP
824af85b
SK
323.B --all-servers
324By default, when dnsmasq has more than one upstream server available,
325it will send queries to just one server. Setting this flag forces
326dnsmasq to send all queries to all available servers. The reply from
c72daea8 327the server which answers first will be returned to the original requester.
824af85b
SK
328.TP
329.B --stop-dns-rebind
330Reject (and log) addresses from upstream nameservers which are in the
331private IP ranges. This blocks an attack where a browser behind a
332firewall is used to probe machines on the local network.
333.TP
8ef5ada2
SK
334.B --rebind-localhost-ok
335Exempt 127.0.0.0/8 from rebinding checks. This address range is
336returned by realtime black hole servers, so blocking it may disable
337these services.
338.TP
339.B --rebind-domain-ok=[<domain>]|[[/<domain>/[<domain>/]
340Do not detect and block dns-rebind on queries to these domains. The
341argument may be either a single domain, or multiple domains surrounded
342by '/', like the --server syntax, eg.
343.B --rebind-domain-ok=/domain1/domain2/domain3/
344.TP
9e4abcb5
SK
345.B \-n, --no-poll
346Don't poll /etc/resolv.conf for changes.
347.TP
1697269c 348.B --clear-on-reload
d9fb0be8
SK
349Whenever /etc/resolv.conf is re-read or the upstream servers are set
350via DBus, clear the DNS cache.
1697269c
SK
351This is useful when new nameservers may have different
352data than that held in cache.
353.TP
9e4abcb5 354.B \-D, --domain-needed
7de060b0 355Tells dnsmasq to never forward A or AAAA queries for plain names, without dots
3d8df260 356or domain parts, to upstream nameservers. If the name is not known
9e4abcb5
SK
357from /etc/hosts or DHCP then a "not found" answer is returned.
358.TP
824af85b 359.B \-S, --local, --server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]
5aabfc78 360Specify IP address of upstream servers directly. Setting this flag does
9e4abcb5
SK
361not suppress reading of /etc/resolv.conf, use -R to do that. If one or
362more
363optional domains are given, that server is used only for those domains
364and they are queried only using the specified server. This is
365intended for private nameservers: if you have a nameserver on your
366network which deals with names of the form
367xxx.internal.thekelleys.org.uk at 192.168.1.1 then giving the flag
b8187c80 368.B -S /internal.thekelleys.org.uk/192.168.1.1
9e4abcb5
SK
369will send all queries for
370internal machines to that nameserver, everything else will go to the
371servers in /etc/resolv.conf. An empty domain specification,
372.B //
373has the special meaning of "unqualified names only" ie names without any
374dots in them. A non-standard port may be specified as
375part of the IP
376address using a # character.
377More than one -S flag is allowed, with
8ef5ada2
SK
378repeated domain or ipaddr parts as required.
379
380More specific domains take precendence over less specific domains, so:
381.B --server=/google.com/1.2.3.4
382.B --server=/www.google.com/2.3.4.5
383will send queries for *.google.com to 1.2.3.4, except *www.google.com,
384which will go to 2.3.4.5
385
386The special server address '#' means, "use the standard servers", so
387.B --server=/google.com/1.2.3.4
388.B --server=/www.google.com/#
389will send queries for *.google.com to 1.2.3.4, except *www.google.com which will
390be forwarded as usual.
9e4abcb5
SK
391
392Also permitted is a -S
393flag which gives a domain but no IP address; this tells dnsmasq that
394a domain is local and it may answer queries from /etc/hosts or DHCP
395but should never forward queries on that domain to any upstream
396servers.
397.B local
398is a synonym for
399.B server
400to make configuration files clearer in this case.
401
7de060b0
SK
402IPv6 addresses may include a %interface scope-id, eg
403fe80::202:a412:4512:7bbf%eth0.
404
824af85b
SK
405The optional string after the @ character tells
406dnsmasq how to set the source of the queries to this
407nameserver. It should be an ip-address, which should belong to the machine on which
9e4abcb5 408dnsmasq is running otherwise this server line will be logged and then
824af85b
SK
409ignored, or an interface name. If an interface name is given, then
410queries to the server will be forced via that interface; if an
411ip-address is given then the source address of the queries will be set
412to that address.
413The query-port flag is ignored for any servers which have a
9e4abcb5 414source address specified but the port may be specified directly as
824af85b
SK
415part of the source address. Forcing queries to an interface is not
416implemented on all platforms supported by dnsmasq.
9e4abcb5 417.TP
de73a497
SK
418.B --rev-server=<ip-address>/<prefix-len>,<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]
419This is functionally the same as
420.B --server,
421but provides some syntactic sugar to make specifying address-to-name queries easier. For example
422.B --rev-server=1.2.3.0/24,192.168.0.1
423is exactly equivalent to
424.B --server=/3.2.1.in-addr.arpa/192.168.0.1
425.TP
9e4abcb5
SK
426.B \-A, --address=/<domain>/[domain/]<ipaddr>
427Specify an IP address to return for any host in the given domains.
428Queries in the domains are never forwarded and always replied to
429with the specified IP address which may be IPv4 or IPv6. To give
430both IPv4 and IPv6 addresses for a domain, use repeated -A flags.
431Note that /etc/hosts and DHCP leases override this for individual
432names. A common use of this is to redirect the entire doubleclick.net
a222641c
SK
433domain to some friendly local web server to avoid banner ads. The
434domain specification works in the same was as for --server, with the
435additional facility that /#/ matches any domain. Thus
436--address=/#/1.2.3.4 will always return 1.2.3.4 for any query not
437answered from /etc/hosts or DHCP and not sent to an upstream
438nameserver by a more specific --server directive.
9e4abcb5 439.TP
13d86c73
JD
440.B --ipset=/<domain>/[domain/]<ipset>[,<ipset>]
441Places the resolved IP addresses of queries for the specified domains
442in the specified netfilter ip sets. Domains and subdomains are matched
443in the same way as --address. These ip sets must already exist. See
444ipset(8) for more details.
445.TP
f6b7dc47 446.B \-m, --mx-host=<mx name>[[,<hostname>],<preference>]
de37951c
SK
447Return an MX record named <mx name> pointing to the given hostname (if
448given), or
449the host specified in the --mx-target switch
9e4abcb5 450or, if that switch is not given, the host on which dnsmasq
f6b7dc47
SK
451is running. The default is useful for directing mail from systems on a LAN
452to a central server. The preference value is optional, and defaults to
4531 if not given. More than one MX record may be given for a host.
9e4abcb5
SK
454.TP
455.B \-t, --mx-target=<hostname>
f6b7dc47
SK
456Specify the default target for the MX record returned by dnsmasq. See
457--mx-host. If --mx-target is given, but not --mx-host, then dnsmasq
458returns a MX record containing the MX target for MX queries on the
459hostname of the machine on which dnsmasq is running.
9e4abcb5
SK
460.TP
461.B \-e, --selfmx
462Return an MX record pointing to itself for each local
463machine. Local machines are those in /etc/hosts or with DHCP leases.
464.TP
465.B \-L, --localmx
466Return an MX record pointing to the host given by mx-target (or the
467machine on which dnsmasq is running) for each
468local machine. Local machines are those in /etc/hosts or with DHCP
469leases.
470.TP
f6b7dc47
SK
471.B \-W, --srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
472Return a SRV DNS record. See RFC2782 for details. If not supplied, the
473domain defaults to that given by
474.B --domain.
475The default for the target domain is empty, and the default for port
476is one and the defaults for
477weight and priority are zero. Be careful if transposing data from BIND
478zone files: the port, weight and priority numbers are in a different
479order. More than one SRV record for a given service/domain is allowed,
3d8df260 480all that match are returned.
f6b7dc47 481.TP
e46164e0 482.B --host-record=<name>[,<name>....][<IPv4-address>],[<IPv6-address>]
e759d426
SK
483Add A, AAAA and PTR records to the DNS. This adds one or more names to
484the DNS with associated IPv4 (A) and IPv6 (AAAA) records. A name may
485appear in more than one
486.B host-record
487and therefore be assigned more than one address. Only the first
488address creates a PTR record linking the address to the name. This is
489the same rule as is used reading hosts-files.
490.B host-record
491options are considered to be read before host-files, so a name
492appearing there inhibits PTR-record creation if it appears in
e46164e0 493hosts-file also. Unlike hosts-files, names are not expanded, even when
e759d426
SK
494.B expand-hosts
495is in effect. Short and long names may appear in the same
e46164e0
SK
496.B host-record,
497eg.
498.B --host-record=laptop,laptop.thekelleys.org,192.168.0.1,1234::100
e759d426 499.TP
0a852541
SK
500.B \-Y, --txt-record=<name>[[,<text>],<text>]
501Return a TXT DNS record. The value of TXT record is a set of strings,
28866e95
SK
502so any number may be included, delimited by commas; use quotes to put
503commas into a string. Note that the maximum length of a single string
504is 255 characters, longer strings are split into 255 character chunks.
0a852541 505.TP
832af0ba
SK
506.B --ptr-record=<name>[,<target>]
507Return a PTR DNS record.
508.TP
1a6bca81
SK
509.B --naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
510Return an NAPTR DNS record, as specified in RFC3403.
511.TP
9009d746
SK
512.B --cname=<cname>,<target>
513Return a CNAME record which indicates that <cname> is really
514<target>. There are significant limitations on the target; it must be a
515DNS name which is known to dnsmasq from /etc/hosts (or additional
d56a604a 516hosts files), from DHCP, from --interface-name or from another
611ebc5f
SK
517.B --cname.
518If the target does not satisfy this
9009d746
SK
519criteria, the whole cname is ignored. The cname must be unique, but it
520is permissable to have more than one cname pointing to the same target.
521.TP
9f7f3b12
SK
522.B --dns-rr=<name>,<RR-number>,[<hex data>]
523Return an arbitrary DNS Resource Record. The number is the type of the
524record (which is always in the C_IN class). The value of the record is
a2ce6fcc 525given by the hex data, which may be of the form 01:23:45 or 01 23 45 or
9f7f3b12
SK
526012345 or any mixture of these.
527.TP
f7029f5c 528.B --interface-name=<name>,<interface>[/4|/6]
f2621c7f 529Return a DNS record associating the name with the primary address on
f7029f5c 530the given interface. This flag specifies an A or AAAA record for the given
f2621c7f 531name in the same way as an /etc/hosts line, except that the address is
f7029f5c
SK
532not constant, but taken from the given interface. The interface may be
533followed by "/4" or "/6" to specify that only IPv4 or IPv6 addresses
534of the interface should be used. If the interface is
9e038946 535down, not configured or non-existent, an empty record is returned. The
f2621c7f
SK
536matching PTR record is also created, mapping the interface address to
537the name. More than one name may be associated with an interface
538address by repeating the flag; in that case the first instance is used
539for the reverse address-to-name mapping.
540.TP
48fd1c4d 541.B --synth-domain=<domain>,<address range>[,<prefix>]
2bb73af7
SK
542Create artificial A/AAAA and PTR records for an address range. The
543records use the address, with periods (or colons for IPv6) replaced
544with dashes.
545
546An example should make this clearer.
48fd1c4d
SK
547.B --synth-domain=thekelleys.org.uk,192.168.0.0/24,internal-
548will result in a query for internal-192-168-0-56.thekelleys.org.uk returning
549192.168.0.56 and a reverse query vice versa. The same applies to IPv6,
550but IPv6 addresses may start with '::'
551but DNS labels may not start with '-' so in this case if no prefix is
552configured a zero is added in front of the label. ::1 becomes 0--1.
2bb73af7
SK
553
554The address range can be of the form
555<ip address>,<ip address> or <ip address>/<netmask>
556.TP
28866e95
SK
557.B --add-mac
558Add the MAC address of the requestor to DNS queries which are
559forwarded upstream. This may be used to DNS filtering by the upstream
560server. The MAC address can only be added if the requestor is on the same
561subnet as the dnsmasq server. Note that the mechanism used to achieve this (an EDNS0 option)
562is not yet standardised, so this should be considered
563experimental. Also note that exposing MAC addresses in this way may
ed4c0767
SK
564have security and privacy implications. The warning about caching
565given for --add-subnet applies to --add-mac too.
566.TP
567.B --add-subnet[[=<IPv4 prefix length>],<IPv6 prefix length>]
568Add the subnet address of the requestor to the DNS queries which are
569forwarded upstream. The amount of the address forwarded depends on the
570prefix length parameter: 32 (128 for IPv6) forwards the whole address,
571zero forwards none of it but still marks the request so that no
572upstream nameserver will add client address information either. The
573default is zero for both IPv4 and IPv6. Note that upstream nameservers
574may be configured to return different results based on this
575information, but the dnsmasq cache does not take account. If a dnsmasq
576instance is configured such that different results may be encountered,
577caching should be disabled.
28866e95 578.TP
9e4abcb5
SK
579.B \-c, --cache-size=<cachesize>
580Set the size of dnsmasq's cache. The default is 150 names. Setting the cache size to zero disables caching.
581.TP
582.B \-N, --no-negcache
583Disable negative caching. Negative caching allows dnsmasq to remember
584"no such domain" answers from upstream nameservers and answer
5aabfc78 585identical queries without forwarding them again.
9e4abcb5 586.TP
1697269c
SK
587.B \-0, --dns-forward-max=<queries>
588Set the maximum number of concurrent DNS queries. The default value is
589150, which should be fine for most setups. The only known situation
590where this needs to be increased is when using web-server log file
591resolvers, which can generate large numbers of concurrent queries.
208b65c5 592.TP
70b4a818
SK
593.B --dnssec
594Validate DNS replies and cache DNSSEC data. When forwarding DNS queries, dnsmasq requests the
595DNSSEC records needed to validate the replies. The replies are validated and the result returned as
596the Authenticated Data bit in the DNS packet. In addition the DNSSEC records are stored in the cache, making
597validation by clients more efficient. Note that validation by clients is the most secure DNSSEC mode, but for
598clients unable to do validation, use of the AD bit set by dnsmasq is useful, provided that the network between
599the dnsmasq server and the client is trusted. Dnsmasq must be compiled with HAVE_DNSSEC enabled, and DNSSEC
600trust anchors provided, see
ee415867 601.B --trust-anchor.
d588ab54
SK
602Because the DNSSEC validation process uses the cache, it is not
603permitted to reduce the cache size below the default when DNSSEC is
604enabled. The nameservers upstream of dnsmasq must be DNSSEC-capable,
605ie capable of returning DNSSEC records with data. If they are not,
606then dnsmasq will not be able to determine the trusted status of
607answers. In the default mode, this menas that all replies will be
608marked as untrusted. If
609.B --dnssec-check-unsigned
610is set and the upstream servers don't support DNSSEC, then DNS service will be entirely broken.
70b4a818 611.TP
ee415867
SK
612.B --trust-anchor=[<class>],<domain>,<key-tag>,<algorithm>,<digest-type>,<digest>
613Provide DS records to act a trust anchors for DNSSEC
614validation. Typically these will be the DS record(s) for Zone Signing
615key(s) of the root zone,
616but trust anchors for limited domains are also possible. The current
617root-zone trust anchors may be donwloaded from https://data.iana.org/root-anchors/root-anchors.xml
70b4a818 618.TP
00a5b5d4
SK
619.B --dnssec-check-unsigned
620As a default, dnsmasq does not check that unsigned DNS replies are
621legitimate: they are assumed to be valid and passed on (without the
622"authentic data" bit set, of course). This does not protect against an
623attacker forging unsigned replies for signed DNS zones, but it is
624fast. If this flag is set, dnsmasq will check the zones of unsigned
625replies, to ensure that unsigned replies are allowed in those
d588ab54
SK
626zones. The cost of this is more upstream queries and slower
627performance. See also the warning about upstream servers in the
628section on
629.B --dnssec
00a5b5d4 630.TP
28866e95 631.B --proxy-dnssec
70b4a818
SK
632Copy the DNSSEC Authenticated Data bit from upstream servers to downstream clients and cache it. This is an
633alternative to having dnsmasq validate DNSSEC, but it depends on the security of the network between
634dnsmasq and the upstream servers, and the trustworthiness of the upstream servers.
635.TP
636.B --dnssec-debug
637Set debugging mode for the DNSSEC validation, set the Checking Disabled bit on upstream queries,
ee415867
SK
638and don't convert replies which do not validate to responses with
639a return code of SERVFAIL. Note that
640setting this may affect DNS behaviour in bad ways, it is not an
641extra-logging flag and should not be set in production.
28866e95 642.TP
baa80ae5 643.B --auth-zone=<domain>[,<subnet>[/<prefix length>][,<subnet>[/<prefix length>].....]]
34d0a36a 644Define a DNS zone for which dnsmasq acts as authoritative server. Locally defined DNS records which are in the domain
c50f25a3
SK
645will be served. If subnet(s) are given, A and AAAA records must be in one of the
646specified subnets.
647
648As alternative to directly specifying the subnets, it's possible to
376d48c7
SK
649give the name of an interface, in which case the subnets implied by
650that interface's configured addresses and netmask/prefix-length are
651used; this is useful when using constructed DHCP ranges as the actual
652address is dynamic and not known when configuring dnsmasq. The
653interface addresses may be confined to only IPv6 addresses using
654<interface>/6 or to only IPv4 using <interface>/4. This is useful when
655an interface has dynamically determined global IPv6 addresses which should
656appear in the zone, but RFC1918 IPv4 addresses which should not.
657Interface-name and address-literal subnet specifications may be used
658freely in the same --auth-zone declaration.
659
660The subnet(s) are also used to define in-addr.arpa and
baa80ae5
SK
661ipv6.arpa domains which are served for reverse-DNS queries. If not
662specified, the prefix length defaults to 24 for IPv4 and 64 for IPv6.
663For IPv4 subnets, the prefix length should be have the value 8, 16 or 24
664unless you are familiar with RFC 2317 and have arranged the
c50f25a3
SK
665in-addr.arpa delegation accordingly. Note that if no subnets are
666specified, then no reverse queries are answered.
333b2ceb
SK
667.TP
668.B --auth-soa=<serial>[,<hostmaster>[,<refresh>[,<retry>[,<expiry>]]]]
669Specify fields in the SOA record associated with authoritative
670zones. Note that this is optional, all the values are set to sane defaults.
671.TP
672.B --auth-sec-servers=<domain>[,<domain>[,<domain>...]]
673Specify any secondary servers for a zone for which dnsmasq is
674authoritative. These servers must be configured to get zone data from
675dnsmasq by zone transfer, and answer queries for the same
6f130def 676authoritative zones as dnsmasq.
333b2ceb
SK
677.TP
678.B --auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]
679Specify the addresses of secondary servers which are allowed to
680initiate zone transfer (AXFR) requests for zones for which dnsmasq is
6f130def 681authoritative. If this option is not given, then AXFR requests will be
333b2ceb
SK
682accepted from any secondary.
683.TP
7de060b0
SK
684.B --conntrack
685Read the Linux connection track mark associated with incoming DNS
686queries and set the same mark value on upstream traffic used to answer
687those queries. This allows traffic generated by dnsmasq to be
688associated with the queries which cause it, useful for bandwidth
689accounting and firewalling. Dnsmasq must have conntrack support
690compiled in and the kernel must have conntrack support
691included and configured. This option cannot be combined with
692--query-port.
693.TP
49dc570a 694.B \-F, --dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-addr>[,<end-addr>][,<mode>][,<netmask>[,<broadcast>]][,<lease time>]
1adadf58 695.TP
83f28bef 696.B \-F, --dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-IPv6addr>[,<end-IPv6addr>|constructor:<interface>][,<mode>][,<prefix-len>][,<lease time>]
1adadf58 697
9e4abcb5 698Enable the DHCP server. Addresses will be given out from the range
44a2a316
SK
699<start-addr> to <end-addr> and from statically defined addresses given
700in
701.B dhcp-host
702options. If the lease time is given, then leases
b8187c80 703will be given for that length of time. The lease time is in seconds,
7622fc06
SK
704or minutes (eg 45m) or hours (eg 1h) or "infinite". If not given,
705the default lease time is one hour. The
c8257540
SK
706minimum lease time is two minutes. For IPv6 ranges, the lease time
707maybe "deprecated"; this sets the preferred lifetime sent in a DHCP
708lease or router advertisement to zero, which causes clients to use
709other addresses, if available, for new connections as a prelude to renumbering.
710
711This option may be repeated, with different addresses, to enable DHCP
44a2a316
SK
712service to more than one network. For directly connected networks (ie,
713networks on which the machine running dnsmasq has an interface) the
7de060b0
SK
714netmask is optional: dnsmasq will determine it from the interface
715configuration. For networks which receive DHCP service via a relay
716agent, dnsmasq cannot determine the netmask itself, so it should be
717specified, otherwise dnsmasq will have to guess, based on the class (A, B or
718C) of the network address. The broadcast address is
7622fc06 719always optional. It is always
8ef5ada2
SK
720allowed to have more than one dhcp-range in a single subnet.
721
1adadf58 722For IPv6, the parameters are slightly different: instead of netmask
4c82efc5
VG
723and broadcast address, there is an optional prefix length which must
724be equal to or larger then the prefix length on the local interface. If not
1adadf58
SK
725given, this defaults to 64. Unlike the IPv4 case, the prefix length is not
726automatically derived from the interface configuration. The mimimum
727size of the prefix length is 64.
728
34d0a36a
SK
729IPv6 (only) supports another type of range. In this, the start address and optional end address contain only the network part (ie ::1) and they are followed by
730.B constructor:<interface>.
731This forms a template which describes how to create ranges, based on the addresses assigned to the interface. For instance
732
83f28bef 733.B --dhcp-range=::1,::400,constructor:eth0
34d0a36a 734
861c8914 735will look for addresses on
429805db
SK
736eth0 and then create a range from <network>::1 to <network>::400. If
737the interface is assigned more than one network, then the
738corresponding ranges will be automatically created, and then
739deprecated and finally removed again as the address is deprecated and
740then deleted. The interface name may have a final "*" wildcard. Note
861c8914
SK
741that just any address on eth0 will not do: it must not be an
742autoconfigured or privacy address, or be deprecated.
34d0a36a 743
e4cdbbf5
VG
744If a dhcp-range is only being used for stateless DHCP and/or SLAAC,
745then the address can be simply ::
746
747.B --dhcp-range=::,constructor:eth0
748
e4cdbbf5 749
8ef5ada2
SK
750The optional
751.B set:<tag>
752sets an alphanumeric label which marks this network so that
0a852541 753dhcp options may be specified on a per-network basis.
8ef5ada2 754When it is prefixed with 'tag:' instead, then its meaning changes from setting
c5ad4e79
SK
755a tag to matching it. Only one tag may be set, but more than one tag
756may be matched.
757
e8ca69ea 758The optional <mode> keyword may be
33820b7e
SK
759.B static
760which tells dnsmasq to enable DHCP for the network specified, but not
7622fc06 761to dynamically allocate IP addresses: only hosts which have static
33820b7e
SK
762addresses given via
763.B dhcp-host
52002051
SK
764or from /etc/ethers will be served. A static-only subnet with address
765all zeros may be used as a "catch-all" address to enable replies to all
766Information-request packets on a subnet which is provided with
767stateless DHCPv6, ie
768.B --dhcp=range=::,static
c5ad4e79 769
e46164e0 770For IPv4, the <mode> may be
7622fc06
SK
771.B proxy
772in which case dnsmasq will provide proxy-DHCP on the specified
773subnet. (See
774.B pxe-prompt
775and
776.B pxe-service
e8ca69ea
SK
777for details.)
778
779For IPv6, the mode may be some combination of
780.B ra-only, slaac, ra-names, ra-stateless.
8ef5ada2 781
c5ad4e79 782.B ra-only
e8ca69ea
SK
783tells dnsmasq to offer Router Advertisement only on this subnet,
784and not DHCP.
785
786.B slaac
787tells dnsmasq to offer Router Advertisement on this subnet and to set
788the A bit in the router advertisement, so that the client will use
789SLAAC addresses. When used with a DHCP range or static DHCP address
790this results in the client having both a DHCP-assigned and a SLAAC
791address.
792
793.B ra-stateless
794sends router advertisements with the O and A bits set, and provides a
795stateless DHCP service. The client will use a SLAAC address, and use
796DHCP for other configuration information.
797
7023e382 798.B ra-names
e8ca69ea 799enables a mode
7023e382 800which gives DNS names to dual-stack hosts which do SLAAC for
884a6dfe 801IPv6. Dnsmasq uses the host's IPv4 lease to derive the name, network
7023e382 802segment and MAC address and assumes that the host will also have an
e46164e0 803IPv6 address calculated using the SLAAC algorithm, on the same network
884a6dfe
SK
804segment. The address is pinged, and if a reply is received, an AAAA
805record is added to the DNS for this IPv6
7023e382 806address. Note that this is only happens for directly-connected
884a6dfe
SK
807networks, (not one doing DHCP via a relay) and it will not work
808if a host is using privacy extensions.
e8ca69ea
SK
809.B ra-names
810can be combined with
811.B ra-stateless
812and
813.B slaac.
c5ad4e79 814
9e4abcb5 815.TP
8ef5ada2 816.B \-G, --dhcp-host=[<hwaddr>][,id:<client_id>|*][,set:<tag>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]
9e4abcb5
SK
817Specify per host parameters for the DHCP server. This allows a machine
818with a particular hardware address to be always allocated the same
819hostname, IP address and lease time. A hostname specified like this
820overrides any supplied by the DHCP client on the machine. It is also
c72daea8 821allowable to omit the hardware address and include the hostname, in
9e4abcb5
SK
822which case the IP address and lease times will apply to any machine
823claiming that name. For example
824.B --dhcp-host=00:20:e0:3b:13:af,wap,infinite
825tells dnsmasq to give
cdeda28f 826the machine with hardware address 00:20:e0:3b:13:af the name wap, and
9e4abcb5
SK
827an infinite DHCP lease.
828.B --dhcp-host=lap,192.168.0.199
829tells
830dnsmasq to always allocate the machine lap the IP address
8ef5ada2
SK
831192.168.0.199.
832
833Addresses allocated like this are not constrained to be
834in the range given by the --dhcp-range option, but they must be in
835the same subnet as some valid dhcp-range. For
836subnets which don't need a pool of dynamically allocated addresses,
837use the "static" keyword in the dhcp-range declaration.
838
89500e31
SK
839It is allowed to use client identifiers (called client
840DUID in IPv6-land rather than
9e4abcb5
SK
841hardware addresses to identify hosts by prefixing with 'id:'. Thus:
842.B --dhcp-host=id:01:02:03:04,.....
843refers to the host with client identifier 01:02:03:04. It is also
844allowed to specify the client ID as text, like this:
a84fa1d0 845.B --dhcp-host=id:clientidastext,.....
9009d746 846
1adadf58
SK
847A single
848.B dhcp-host
849may contain an IPv4 address or an IPv6 address, or both. IPv6 addresses must be bracketed by square brackets thus:
850.B --dhcp-host=laptop,[1234::56]
30393100
SK
851IPv6 addresses may contain only the host-identifier part:
852.B --dhcp-host=laptop,[::56]
6f130def 853in which case they act as wildcards in constructed dhcp ranges, with
30393100 854the appropriate network part inserted.
89500e31
SK
855Note that in IPv6 DHCP, the hardware address may not be
856available, though it normally is for direct-connected clients, or
857clients using DHCP relays which support RFC 6939.
1adadf58 858
89500e31
SK
859
860For DHCPv4, the special option id:* means "ignore any client-id
a84fa1d0
SK
861and use MAC addresses only." This is useful when a client presents a client-id sometimes
862but not others.
9009d746 863
1ab84e2f
SK
864If a name appears in /etc/hosts, the associated address can be
865allocated to a DHCP lease, but only if a
866.B --dhcp-host
8ef5ada2
SK
867option specifying the name also exists. Only one hostname can be
868given in a
869.B dhcp-host
870option, but aliases are possible by using CNAMEs. (See
871.B --cname
872).
873
874The special keyword "ignore"
33820b7e
SK
875tells dnsmasq to never offer a DHCP lease to a machine. The machine
876can be specified by hardware address, client ID or hostname, for
877instance
878.B --dhcp-host=00:20:e0:3b:13:af,ignore
879This is
880useful when there is another DHCP server on the network which should
9009d746
SK
881be used by some machines.
882
a66d36ea 883The set:<tag> construct sets the tag
9009d746 884whenever this dhcp-host directive is in use. This can be used to
8ef5ada2
SK
885selectively send DHCP options just for this host. More than one tag
886can be set in a dhcp-host directive (but not in other places where
887"set:<tag>" is allowed). When a host matches any
5aabfc78 888dhcp-host directive (or one implied by /etc/ethers) then the special
8ef5ada2 889tag "known" is set. This allows dnsmasq to be configured to
5aabfc78 890ignore requests from unknown machines using
8ef5ada2 891.B --dhcp-ignore=tag:!known
0a852541
SK
892Ethernet addresses (but not client-ids) may have
893wildcard bytes, so for example
894.B --dhcp-host=00:20:e0:3b:13:*,ignore
cdeda28f 895will cause dnsmasq to ignore a range of hardware addresses. Note that
0a852541 896the "*" will need to be escaped or quoted on a command line, but not
9009d746
SK
897in the configuration file.
898
899Hardware addresses normally match any
cdeda28f
SK
900network (ARP) type, but it is possible to restrict them to a single
901ARP type by preceding them with the ARP-type (in HEX) and "-". so
902.B --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4
903will only match a
904Token-Ring hardware address, since the ARP-address type for token ring
9009d746
SK
905is 6.
906
1adadf58 907As a special case, in DHCPv4, it is possible to include more than one
73a08a24
SK
908hardware address. eg:
909.B --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2
910This allows an IP address to be associated with
9009d746
SK
911multiple hardware addresses, and gives dnsmasq permission to abandon a
912DHCP lease to one of the hardware addresses when another one asks for
913a lease. Beware that this is a dangerous thing to do, it will only
914work reliably if only one of the hardware addresses is active at any
73a08a24
SK
915time and there is no way for dnsmasq to enforce this. It is, for instance,
916useful to allocate a stable IP address to a laptop which
9009d746 917has both wired and wireless interfaces.
5aabfc78 918.TP
28866e95
SK
919.B --dhcp-hostsfile=<path>
920Read DHCP host information from the specified file. If a directory
921is given, then read all the files contained in that directory. The file contains
5aabfc78
SK
922information about one host per line. The format of a line is the same
923as text to the right of '=' in --dhcp-host. The advantage of storing DHCP host information
924in this file is that it can be changed without re-starting dnsmasq:
925the file will be re-read when dnsmasq receives SIGHUP.
824af85b 926.TP
28866e95
SK
927.B --dhcp-optsfile=<path>
928Read DHCP option information from the specified file. If a directory
929is given, then read all the files contained in that directory. The advantage of
824af85b 930using this option is the same as for --dhcp-hostsfile: the
1f15b81d
SK
931dhcp-optsfile will be re-read when dnsmasq receives SIGHUP. Note that
932it is possible to encode the information in a
933.B --dhcp-boot
934flag as DHCP options, using the options names bootfile-name,
935server-ip-address and tftp-server. This allows these to be included
936in a dhcp-optsfile.
44a2a316
SK
937.TP
938.B \-Z, --read-ethers
939Read /etc/ethers for information about hosts for the DHCP server. The
940format of /etc/ethers is a hardware address, followed by either a
941hostname or dotted-quad IP address. When read by dnsmasq these lines
942have exactly the same effect as
943.B --dhcp-host
5aabfc78 944options containing the same information. /etc/ethers is re-read when
1adadf58 945dnsmasq receives SIGHUP. IPv6 addresses are NOT read from /etc/ethers.
9e4abcb5 946.TP
1adadf58 947.B \-O, --dhcp-option=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>|option6:<opt>|option6:<opt-name>],[<value>[,<value>]]
b8187c80 948Specify different or extra options to DHCP clients. By default,
9e4abcb5
SK
949dnsmasq sends some standard options to DHCP clients, the netmask and
950broadcast address are set to the same as the host running dnsmasq, and
951the DNS server and default route are set to the address of the machine
1adadf58 952running dnsmasq. (Equivalent rules apply for IPv6.) If the domain name option has been set, that is sent.
f2621c7f
SK
953This configuration allows these defaults to be overridden,
954or other options specified. The option, to be sent may be given as a
955decimal number or as "option:<option-name>" The option numbers are
956specified in RFC2132 and subsequent RFCs. The set of option-names
957known by dnsmasq can be discovered by running "dnsmasq --help dhcp".
958For example, to set the default route option to
9e4abcb5 959192.168.4.4, do
f2621c7f
SK
960.B --dhcp-option=3,192.168.4.4
961or
962.B --dhcp-option = option:router, 192.168.4.4
9e4abcb5 963and to set the time-server address to 192.168.0.4, do
f2621c7f
SK
964.B --dhcp-option = 42,192.168.0.4
965or
966.B --dhcp-option = option:ntp-server, 192.168.0.4
c3a04081
SK
967The special address 0.0.0.0 is taken to mean "the address of the
968machine running dnsmasq".
969
970Data types allowed are comma separated
971dotted-quad IPv4 addresses, []-wrapped IPv6 addresses, a decimal number, colon-separated hex digits
8ef5ada2
SK
972and a text string. If the optional tags are given then
973this option is only sent when all the tags are matched.
91dccd09 974
cdeda28f 975Special processing is done on a text argument for option 119, to
832af0ba
SK
976conform with RFC 3397. Text or dotted-quad IP addresses as arguments
977to option 120 are handled as per RFC 3361. Dotted-quad IP addresses
978which are followed by a slash and then a netmask size are encoded as
979described in RFC 3442.
cdeda28f 980
1adadf58
SK
981IPv6 options are specified using the
982.B option6:
983keyword, followed by the option number or option name. The IPv6 option
984name space is disjoint from the IPv4 option name space. IPv6 addresses
985in options must be bracketed with square brackets, eg.
986.B --dhcp-option=option6:ntp-server,[1234::56]
c3a04081
SK
987For IPv6, [::] means "the global address of
988the machine running dnsmasq", whilst [fd00::] is replaced with the
989ULA, if it exists, and [fe80::] with the link-local address.
1adadf58 990
9e4abcb5 991Be careful: no checking is done that the correct type of data for the
26128d27 992option number is sent, it is quite possible to
9e4abcb5 993persuade dnsmasq to generate illegal DHCP packets with injudicious use
91dccd09
SK
994of this flag. When the value is a decimal number, dnsmasq must determine how
995large the data item is. It does this by examining the option number and/or the
b8187c80 996value, but can be overridden by appending a single letter flag as follows:
91dccd09 997b = one byte, s = two bytes, i = four bytes. This is mainly useful with
3d8df260
SK
998encapsulated vendor class options (see below) where dnsmasq cannot
999determine data size from the option number. Option data which
1000consists solely of periods and digits will be interpreted by dnsmasq
1001as an IP address, and inserted into an option as such. To force a
1002literal string, use quotes. For instance when using option 66 to send
1003a literal IP address as TFTP server name, it is necessary to do
1004.B --dhcp-option=66,"1.2.3.4"
91dccd09 1005
1adadf58 1006Encapsulated Vendor-class options may also be specified (IPv4 only) using
91dccd09 1007--dhcp-option: for instance
1b7ecd11
SK
1008.B --dhcp-option=vendor:PXEClient,1,0.0.0.0
1009sends the encapsulated vendor
1010class-specific option "mftp-address=0.0.0.0" to any client whose
1011vendor-class matches "PXEClient". The vendor-class matching is
6b01084f
SK
1012substring based (see --dhcp-vendorclass for details). If a
1013vendor-class option (number 60) is sent by dnsmasq, then that is used
1014for selecting encapsulated options in preference to any sent by the
1015client. It is
1b7ecd11
SK
1016possible to omit the vendorclass completely;
1017.B --dhcp-option=vendor:,1,0.0.0.0
1adadf58 1018in which case the encapsulated option is always sent.
73a08a24 1019
1adadf58 1020Options may be encapsulated (IPv4 only) within other options: for instance
73a08a24
SK
1021.B --dhcp-option=encap:175, 190, "iscsi-client0"
1022will send option 175, within which is the option 190. If multiple
1023options are given which are encapsulated with the same option number
1024then they will be correctly combined into one encapsulated option.
1025encap: and vendor: are may not both be set in the same dhcp-option.
1026
316e2730
SK
1027The final variant on encapsulated options is "Vendor-Identifying
1028Vendor Options" as specified by RFC3925. These are denoted like this:
1029.B --dhcp-option=vi-encap:2, 10, "text"
1030The number in the vi-encap: section is the IANA enterprise number
1adadf58
SK
1031used to identify this option. This form of encapsulation is supported
1032in IPv6.
1033
1b7ecd11 1034The address 0.0.0.0 is not treated specially in
73a08a24 1035encapsulated options.
9e4abcb5 1036.TP
8ef5ada2 1037.B --dhcp-option-force=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
6b01084f 1038This works in exactly the same way as
f2621c7f
SK
1039.B --dhcp-option
1040except that the option will always be sent, even if the client does
6b01084f
SK
1041not ask for it in the parameter request list. This is sometimes
1042needed, for example when sending options to PXELinux.
1043.TP
824af85b 1044.B --dhcp-no-override
1adadf58 1045(IPv4 only) Disable re-use of the DHCP servername and filename fields as extra
824af85b
SK
1046option space. If it can, dnsmasq moves the boot server and filename
1047information (from dhcp-boot) out of their dedicated fields into
1048DHCP options. This make extra space available in the DHCP packet for
1049options but can, rarely, confuse old or broken clients. This flag
1050forces "simple and safe" behaviour to avoid problems in such a case.
1051.TP
ff7eea27
SK
1052.B --dhcp-relay=<local address>,<server address>[,<interface]
1053Configure dnsmasq to do DHCP relay. The local address is an address
1054allocated to an interface on the host running dnsmasq. All DHCP
1055requests arriving on that interface will we relayed to a remote DHCP
1056server at the server address. It is possible to relay from a single local
1057address to multiple remote servers by using multiple dhcp-relay
1058configs with the same local address and different server
1059addresses. A server address must be an IP literal address, not a
1060domain name. In the case of DHCPv6, the server address may be the
1061ALL_SERVERS multicast address, ff05::1:3. In this case the interface
1062must be given, not be wildcard, and is used to direct the multicast to the
1063correct interface to reach the DHCP server.
1064
1065Access control for DHCP clients has the same rules as for the DHCP
1066server, see --interface, --except-interface, etc. The optional
1067interface name in the dhcp-relay config has a different function: it
1068controls on which interface DHCP replies from the server will be
1069accepted. This is intended for configurations which have three
1070interfaces: one being relayed from, a second connecting the DHCP
1071server, and a third untrusted network, typically the wider
1072internet. It avoids the possibility of spoof replies arriving via this
1073third interface.
1074
1075It is allowed to have dnsmasq act as a DHCP server on one set of
1076interfaces and relay from a disjoint set of interfaces. Note that
1077whilst it is quite possible to write configurations which appear to
1078act as a server and a relay on the same interface, this is not
1079supported: the relay function will take precedence.
1080
1081Both DHCPv4 and DHCPv6 relay is supported. It's not possible to relay
1082DHCPv4 to a DHCPv6 server or vice-versa.
1083.TP
1adadf58 1084.B \-U, --dhcp-vendorclass=set:<tag>,[enterprise:<IANA-enterprise number>,]<vendor-class>
8ef5ada2 1085Map from a vendor-class string to a tag. Most DHCP clients provide a
a222641c 1086"vendor class" which represents, in some sense, the type of host. This option
f2621c7f 1087maps vendor classes to tags, so that DHCP options may be selectively delivered
a84fa1d0 1088to different classes of hosts. For example
8ef5ada2 1089.B dhcp-vendorclass=set:printers,Hewlett-Packard JetDirect
a84fa1d0 1090will allow options to be set only for HP printers like so:
8ef5ada2 1091.B --dhcp-option=tag:printers,3,192.168.4.4
a222641c
SK
1092The vendor-class string is
1093substring matched against the vendor-class supplied by the client, to
1adadf58
SK
1094allow fuzzy matching. The set: prefix is optional but allowed for
1095consistency.
1096
1097Note that in IPv6 only, vendorclasses are namespaced with an
1098IANA-allocated enterprise number. This is given with enterprise:
1099keyword and specifies that only vendorclasses matching the specified
1100number should be searched.
a222641c 1101.TP
8ef5ada2
SK
1102.B \-j, --dhcp-userclass=set:<tag>,<user-class>
1103Map from a user-class string to a tag (with substring
a222641c
SK
1104matching, like vendor classes). Most DHCP clients provide a
1105"user class" which is configurable. This option
f2621c7f 1106maps user classes to tags, so that DHCP options may be selectively delivered
a222641c
SK
1107to different classes of hosts. It is possible, for instance to use
1108this to set a different printer server for hosts in the class
1109"accounts" than for hosts in the class "engineering".
a84fa1d0 1110.TP
8ef5ada2 1111.B \-4, --dhcp-mac=set:<tag>,<MAC address>
89500e31 1112Map from a MAC address to a tag. The MAC address may include
cdeda28f 1113wildcards. For example
8ef5ada2 1114.B --dhcp-mac=set:3com,01:34:23:*:*:*
cdeda28f
SK
1115will set the tag "3com" for any host whose MAC address matches the pattern.
1116.TP
8ef5ada2
SK
1117.B --dhcp-circuitid=set:<tag>,<circuit-id>, --dhcp-remoteid=set:<tag>,<remote-id>
1118Map from RFC3046 relay agent options to tags. This data may
f2621c7f
SK
1119be provided by DHCP relay agents. The circuit-id or remote-id is
1120normally given as colon-separated hex, but is also allowed to be a
1121simple string. If an exact match is achieved between the circuit or
1adadf58
SK
1122agent ID and one provided by a relay agent, the tag is set.
1123
1124.B dhcp-remoteid
1125(but not dhcp-circuitid) is supported in IPv6.
8ef5ada2
SK
1126.TP
1127.B --dhcp-subscrid=set:<tag>,<subscriber-id>
1adadf58 1128(IPv4 and IPv6) Map from RFC3993 subscriber-id relay agent options to tags.
8ef5ada2
SK
1129.TP
1130.B --dhcp-proxy[=<ip addr>]......
0793380b 1131(IPv4 only) A normal DHCP relay agent is only used to forward the initial parts of
8ef5ada2
SK
1132a DHCP interaction to the DHCP server. Once a client is configured, it
1133communicates directly with the server. This is undesirable if the
a66d36ea 1134relay agent is adding extra information to the DHCP packets, such as
8ef5ada2
SK
1135that used by
1136.B dhcp-circuitid
1137and
1138.B dhcp-remoteid.
1139A full relay implementation can use the RFC 5107 serverid-override
1140option to force the DHCP server to use the relay as a full proxy, with all
1141packets passing through it. This flag provides an alternative method
1142of doing the same thing, for relays which don't support RFC
11435107. Given alone, it manipulates the server-id for all interactions
1144via relays. If a list of IP addresses is given, only interactions via
1145relays at those addresses are affected.
1146.TP
1147.B --dhcp-match=set:<tag>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]
1148Without a value, set the tag if the client sends a DHCP
73a08a24
SK
1149option of the given number or name. When a value is given, set the tag only if
1150the option is sent and matches the value. The value may be of the form
a66d36ea 1151"01:ff:*:02" in which case the value must match (apart from wildcards)
73a08a24
SK
1152but the option sent may have unmatched data past the end of the
1153value. The value may also be of the same form as in
1154.B dhcp-option
1155in which case the option sent is treated as an array, and one element
1156must match, so
1157
8ef5ada2 1158--dhcp-match=set:efi-ia32,option:client-arch,6
73a08a24
SK
1159
1160will set the tag "efi-ia32" if the the number 6 appears in the list of
1161architectures sent by the client in option 93. (See RFC 4578 for
316e2730
SK
1162details.) If the value is a string, substring matching is used.
1163
a66d36ea 1164The special form with vi-encap:<enterprise number> matches against
316e2730 1165vendor-identifying vendor classes for the specified enterprise. Please
8ef5ada2
SK
1166see RFC 3925 for more details of these rare and interesting beasts.
1167.TP
1168.B --tag-if=set:<tag>[,set:<tag>[,tag:<tag>[,tag:<tag>]]]
1169Perform boolean operations on tags. Any tag appearing as set:<tag> is set if
1170all the tags which appear as tag:<tag> are set, (or unset when tag:!<tag> is used)
1171If no tag:<tag> appears set:<tag> tags are set unconditionally.
1172Any number of set: and tag: forms may appear, in any order.
1173Tag-if lines ares executed in order, so if the tag in tag:<tag> is a
1174tag set by another
1175.B tag-if,
1176the line which sets the tag must precede the one which tests it.
1177.TP
1178.B \-J, --dhcp-ignore=tag:<tag>[,tag:<tag>]
1179When all the given tags appear in the tag set ignore the host and do
26128d27
SK
1180not allocate it a DHCP lease.
1181.TP
8ef5ada2
SK
1182.B --dhcp-ignore-names[=tag:<tag>[,tag:<tag>]]
1183When all the given tags appear in the tag set, ignore any hostname
9e038946 1184provided by the host. Note that, unlike dhcp-ignore, it is permissible
8ef5ada2 1185to supply no tags, in which case DHCP-client supplied hostnames
832af0ba
SK
1186are always ignored, and DHCP hosts are added to the DNS using only
1187dhcp-host configuration in dnsmasq and the contents of /etc/hosts and
1188/etc/ethers.
1189.TP
8ef5ada2 1190.B --dhcp-generate-names=tag:<tag>[,tag:<tag>]
1adadf58 1191(IPv4 only) Generate a name for DHCP clients which do not otherwise have one,
a66d36ea 1192using the MAC address expressed in hex, separated by dashes. Note that
8ef5ada2
SK
1193if a host provides a name, it will be used by preference to this,
1194unless
1195.B --dhcp-ignore-names
1196is set.
1197.TP
1198.B --dhcp-broadcast[=tag:<tag>[,tag:<tag>]]
1adadf58 1199(IPv4 only) When all the given tags appear in the tag set, always use broadcast to
8ef5ada2
SK
1200communicate with the host when it is unconfigured. It is permissible
1201to supply no tags, in which case this is unconditional. Most DHCP clients which
824af85b
SK
1202need broadcast replies set a flag in their requests so that this
1203happens automatically, some old BOOTP clients do not.
1204.TP
7de060b0 1205.B \-M, --dhcp-boot=[tag:<tag>,]<filename>,[<servername>[,<server address>|<tftp_servername>]]
1adadf58 1206(IPv4 only) Set BOOTP options to be returned by the DHCP server. Server name and
832af0ba
SK
1207address are optional: if not provided, the name is left empty, and the
1208address set to the address of the machine running dnsmasq. If dnsmasq
1209is providing a TFTP service (see
1210.B --enable-tftp
1211) then only the filename is required here to enable network booting.
8ef5ada2
SK
1212If the optional tag(s) are given,
1213they must match for this configuration to be sent.
7de060b0
SK
1214Instead of an IP address, the TFTP server address can be given as a domain
1215name which is looked up in /etc/hosts. This name can be associated in
1216/etc/hosts with multiple IP addresses, which are used round-robin.
1217This facility can be used to load balance the tftp load among a set of servers.
1218.TP
1219.B --dhcp-sequential-ip
1220Dnsmasq is designed to choose IP addresses for DHCP clients using a
1221hash of the client's MAC address. This normally allows a client's
1222address to remain stable long-term, even if the client sometimes allows its DHCP
1223lease to expire. In this default mode IP addresses are distributed
1224pseudo-randomly over the entire available address range. There are
1225sometimes circumstances (typically server deployment) where it is more
1226convenient to have IP
1227addresses allocated sequentially, starting from the lowest available
1228address, and setting this flag enables this mode. Note that in the
1229sequential mode, clients which allow a lease to expire are much more
1230likely to move IP address; for this reason it should not be generally used.
7622fc06 1231.TP
751d6f4a 1232.B --pxe-service=[tag:<tag>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>|<server_name>]
7622fc06
SK
1233Most uses of PXE boot-ROMS simply allow the PXE
1234system to obtain an IP address and then download the file specified by
1235.B dhcp-boot
1236and execute it. However the PXE system is capable of more complex
1237functions when supported by a suitable DHCP server.
1238
1239This specifies a boot option which may appear in a PXE boot menu. <CSA> is
1240client system type, only services of the correct type will appear in a
1241menu. The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
1242Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI; an
1243integer may be used for other types. The
1244parameter after the menu text may be a file name, in which case dnsmasq acts as a
1245boot server and directs the PXE client to download the file by TFTP,
1246either from itself (
1247.B enable-tftp
751d6f4a
SK
1248must be set for this to work) or another TFTP server if the final server
1249address/name is given.
7622fc06
SK
1250Note that the "layer"
1251suffix (normally ".0") is supplied by PXE, and should not be added to
1252the basename. If an integer boot service type, rather than a basename
1253is given, then the PXE client will search for a
1254suitable boot service for that type on the network. This search may be done
751d6f4a 1255by broadcast, or direct to a server if its IP address/name is provided.
316e2730
SK
1256If no boot service type or filename is provided (or a boot service type of 0 is specified)
1257then the menu entry will abort the net boot procedure and
751d6f4a
SK
1258continue booting from local media. The server address can be given as a domain
1259name which is looked up in /etc/hosts. This name can be associated in
1260/etc/hosts with multiple IP addresses, which are used round-robin.
7622fc06 1261.TP
8ef5ada2 1262.B --pxe-prompt=[tag:<tag>,]<prompt>[,<timeout>]
7622fc06
SK
1263Setting this provides a prompt to be displayed after PXE boot. If the
1264timeout is given then after the
1265timeout has elapsed with no keyboard input, the first available menu
1266option will be automatically executed. If the timeout is zero then the first available menu
1267item will be executed immediately. If
1268.B pxe-prompt
a66d36ea 1269is omitted the system will wait for user input if there are multiple
7622fc06
SK
1270items in the menu, but boot immediately if
1271there is only one. See
1272.B pxe-service
1273for details of menu items.
1274
1275Dnsmasq supports PXE "proxy-DHCP", in this case another DHCP server on
1276the network is responsible for allocating IP addresses, and dnsmasq
1277simply provides the information given in
1278.B pxe-prompt
1279and
1280.B pxe-service
1281to allow netbooting. This mode is enabled using the
1282.B proxy
1283keyword in
1284.B dhcp-range.
9e4abcb5 1285.TP
44a2a316
SK
1286.B \-X, --dhcp-lease-max=<number>
1287Limits dnsmasq to the specified maximum number of DHCP leases. The
8ef5ada2 1288default is 1000. This limit is to prevent DoS attacks from hosts which
44a2a316
SK
1289create thousands of leases and use lots of memory in the dnsmasq
1290process.
1291.TP
fd9fa481 1292.B \-K, --dhcp-authoritative
095f6255
SK
1293Should be set when dnsmasq is definitely the only DHCP server on a network.
1294For DHCPv4, it changes the behaviour from strict RFC compliance so that DHCP requests on
fd9fa481 1295unknown leases from unknown hosts are not ignored. This allows new hosts
cdeda28f
SK
1296to get a lease without a tedious timeout under all circumstances. It also
1297allows dnsmasq to rebuild its lease database without each client needing to
095f6255
SK
1298reacquire a lease, if the database is lost. For DHCPv6 it sets the
1299priority in replies to 255 (the maximum) instead of 0 (the minimum).
9e038946
SK
1300.TP
1301.B --dhcp-alternate-port[=<server port>[,<client port>]]
1adadf58 1302(IPv4 only) Change the ports used for DHCP from the default. If this option is
9e038946
SK
1303given alone, without arguments, it changes the ports used for DHCP
1304from 67 and 68 to 1067 and 1068. If a single argument is given, that
1305port number is used for the server and the port number plus one used
1306for the client. Finally, two port numbers allows arbitrary
1307specification of both server and client ports for DHCP.
fd9fa481 1308.TP
9009d746 1309.B \-3, --bootp-dynamic[=<network-id>[,<network-id>]]
1adadf58 1310(IPv4 only) Enable dynamic allocation of IP addresses to BOOTP clients. Use this
3d8df260
SK
1311with care, since each address allocated to a BOOTP client is leased
1312forever, and therefore becomes permanently unavailable for re-use by
9009d746
SK
1313other hosts. if this is given without tags, then it unconditionally
1314enables dynamic allocation. With tags, only when the tags are all
1315set. It may be repeated with different tag sets.
3d8df260 1316.TP
5e9e0efb 1317.B \-5, --no-ping
1adadf58 1318(IPv4 only) By default, the DHCP server will attempt to ensure that an address in
5e9e0efb
SK
1319not in use before allocating it to a host. It does this by sending an
1320ICMP echo request (aka "ping") to the address in question. If it gets
1321a reply, then the address must already be in use, and another is
1322tried. This flag disables this check. Use with caution.
1323.TP
f2621c7f
SK
1324.B --log-dhcp
1325Extra logging for DHCP: log all the options sent to DHCP clients and
8ef5ada2 1326the tags used to determine them.
f2621c7f 1327.TP
8c0b73d3
KDB
1328.B --quiet-dhcp, --quiet-dhcp6, --quiet-ra
1329Suppress logging of the routine operation of these protocols. Errors and
1330problems will still be logged. --quiet-dhcp and quiet-dhcp6 are
1331over-ridden by --log-dhcp.
1332.TP
9e4abcb5 1333.B \-l, --dhcp-leasefile=<path>
73a08a24 1334Use the specified file to store DHCP lease information.
208b65c5 1335.TP
8b372704
SK
1336.B --dhcp-duid=<enterprise-id>,<uid>
1337(IPv6 only) Specify the server persistent UID which the DHCPv6 server
1338will use. This option is not normally required as dnsmasq creates a
1339DUID automatically when it is first needed. When given, this option
1340provides dnsmasq the data required to create a DUID-EN type DUID. Note
1341that once set, the DUID is stored in the lease database, so to change between DUID-EN and
1342automatically created DUIDs or vice-versa, the lease database must be
1343re-intialised. The enterprise-id is assigned by IANA, and the uid is a
1344string of hex octets unique to a particular device.
1345.TP
7cebd20f 1346.B \-6 --dhcp-script=<path>
a9530964
SK
1347Whenever a new DHCP lease is created, or an old one destroyed, or a
1348TFTP file transfer completes, the
8ef5ada2
SK
1349executable specified by this option is run. <path>
1350must be an absolute pathname, no PATH search occurs.
1351The arguments to the process
7cebd20f 1352are "add", "old" or "del", the MAC
1adadf58 1353address of the host (or DUID for IPv6) , the IP address, and the hostname,
7cebd20f
SK
1354if known. "add" means a lease has been created, "del" means it has
1355been destroyed, "old" is a notification of an existing lease when
208b65c5
SK
1356dnsmasq starts or a change to MAC address or hostname of an existing
1357lease (also, lease length or expiry and client-id, if leasefile-ro is set).
9009d746
SK
1358If the MAC address is from a network type other than ethernet,
1359it will have the network type prepended, eg "06-01:23:45:67:89:ab" for
1360token ring. The process is run as root (assuming that dnsmasq was originally run as
1697269c 1361root) even if dnsmasq is configured to change UID to an unprivileged user.
8ef5ada2
SK
1362
1363The environment is inherited from the invoker of dnsmasq, with some or
1adadf58 1364all of the following variables added
8ef5ada2 1365
1adadf58 1366For both IPv4 and IPv6:
8ef5ada2
SK
1367
1368DNSMASQ_DOMAIN if the fully-qualified domain name of the host is
28866e95
SK
1369known, this is set to the domain part. (Note that the hostname passed
1370to the script as an argument is never fully-qualified.)
8ef5ada2 1371
1adadf58
SK
1372If the client provides a hostname, DNSMASQ_SUPPLIED_HOSTNAME
1373
1374If the client provides user-classes, DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn
8ef5ada2
SK
1375
1376If dnsmasq was compiled with HAVE_BROKEN_RTC, then
208b65c5 1377the length of the lease (in seconds) is stored in
1697269c 1378DNSMASQ_LEASE_LENGTH, otherwise the time of lease expiry is stored in
5aabfc78
SK
1379DNSMASQ_LEASE_EXPIRES. The number of seconds until lease expiry is
1380always stored in DNSMASQ_TIME_REMAINING.
8ef5ada2 1381
5aabfc78 1382If a lease used to have a hostname, which is
1697269c
SK
1383removed, an "old" event is generated with the new state of the lease,
1384ie no name, and the former name is provided in the environment
8ef5ada2
SK
1385variable DNSMASQ_OLD_HOSTNAME.
1386
1387DNSMASQ_INTERFACE stores the name of
9e038946 1388the interface on which the request arrived; this is not set for "old"
8ef5ada2
SK
1389actions when dnsmasq restarts.
1390
1391DNSMASQ_RELAY_ADDRESS is set if the client
316e2730 1392used a DHCP relay to contact dnsmasq and the IP address of the relay
8ef5ada2
SK
1393is known.
1394
1395DNSMASQ_TAGS contains all the tags set during the
316e2730 1396DHCP transaction, separated by spaces.
8ef5ada2 1397
e46164e0
SK
1398DNSMASQ_LOG_DHCP is set if
1399.B --log-dhcp
1400is in effect.
a9530964 1401
1adadf58
SK
1402For IPv4 only:
1403
1404DNSMASQ_CLIENT_ID if the host provided a client-id.
1405
dd1721c7
SK
1406DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBSCRIBER_ID, DNSMASQ_REMOTE_ID if a
1407DHCP relay-agent added any of these options.
1408
1adadf58
SK
1409If the client provides vendor-class, DNSMASQ_VENDOR_CLASS.
1410
1411For IPv6 only:
1412
1413If the client provides vendor-class, DNSMASQ_VENDOR_CLASS_ID,
1414containing the IANA enterprise id for the class, and
1415DNSMASQ_VENDOR_CLASS0..DNSMASQ_VENDOR_CLASSn for the data.
1416
57f460de 1417DNSMASQ_SERVER_DUID containing the DUID of the server: this is the same for
1adadf58
SK
1418every call to the script.
1419
1420DNSMASQ_IAID containing the IAID for the lease. If the lease is a
1421temporary allocation, this is prefixed to 'T'.
1422
89500e31 1423DNSMASQ_MAC containing the MAC address of the client, if known.
1adadf58
SK
1424
1425Note that the supplied hostname, vendorclass and userclass data is
1426only supplied for
1427"add" actions or "old" actions when a host resumes an existing lease,
1428since these data are not held in dnsmasq's lease
1429database.
1430
a9530964
SK
1431
1432
9e038946 1433All file descriptors are
7cebd20f
SK
1434closed except stdin, stdout and stderr which are open to /dev/null
1435(except in debug mode).
8ef5ada2
SK
1436
1437The script is not invoked concurrently: at most one instance
1438of the script is ever running (dnsmasq waits for an instance of script to exit
1439before running the next). Changes to the lease database are which
1440require the script to be invoked are queued awaiting exit of a running instance.
1441If this queueing allows multiple state changes occur to a single
1442lease before the script can be run then
1443earlier states are discarded and the current state of that lease is
1444reflected when the script finally runs.
1445
1446At dnsmasq startup, the script will be invoked for
7cebd20f 1447all existing leases as they are read from the lease file. Expired
8ef5ada2 1448leases will be called with "del" and others with "old". When dnsmasq
5aabfc78 1449receives a HUP signal, the script will be invoked for existing leases
9e038946 1450with an "old " event.
a9530964
SK
1451
1452
1453There are two further actions which may appear as the first argument
1454to the script, "init" and "tftp". More may be added in the future, so
1455scripts should be written to ignore unknown actions. "init" is
e46164e0 1456described below in
a9530964
SK
1457.B --leasefile-ro
1458The "tftp" action is invoked when a TFTP file transfer completes: the
1459arguments are the file size in bytes, the address to which the file
1460was sent, and the complete pathname of the file.
1461
9e038946 1462.TP
57f460de
SK
1463.B --dhcp-luascript=<path>
1464Specify a script written in Lua, to be run when leases are created,
1465destroyed or changed. To use this option, dnsmasq must be compiled
1466with the correct support. The Lua interpreter is intialised once, when
1467dnsmasq starts, so that global variables persist between lease
1468events. The Lua code must define a
1469.B lease
1470function, and may provide
1471.B init
1472and
1473.B shutdown
1474functions, which are called, without arguments when dnsmasq starts up
a9530964
SK
1475and terminates. It may also provide a
1476.B tftp
1477function.
57f460de
SK
1478
1479The
1480.B lease
a9530964 1481function receives the information detailed in
57f460de
SK
1482.B --dhcp-script.
1483It gets two arguments, firstly the action, which is a string
1484containing, "add", "old" or "del", and secondly a table of tag value
1485pairs. The tags mostly correspond to the environment variables
1486detailed above, for instance the tag "domain" holds the same data as
1487the environment variable DNSMASQ_DOMAIN. There are a few extra tags
1488which hold the data supplied as arguments to
1489.B --dhcp-script.
1490These are
1491.B mac_address, ip_address
1492and
1493.B hostname
1494for IPv4, and
1495.B client_duid, ip_address
1496and
1497.B hostname
a9530964
SK
1498for IPv6.
1499
1500The
1501.B tftp
1502function is called in the same way as the lease function, and the
1503table holds the tags
1504.B destination_address,
1505.B file_name
1506and
1507.B file_size.
57f460de 1508.TP
9e038946 1509.B --dhcp-scriptuser
57f460de 1510Specify the user as which to run the lease-change script or Lua script. This defaults to root, but can be changed to another user using this flag.
208b65c5
SK
1511.TP
1512.B \-9, --leasefile-ro
1513Completely suppress use of the lease database file. The file will not
1514be created, read, or written. Change the way the lease-change
1515script (if one is provided) is called, so that the lease database may
1516be maintained in external storage by the script. In addition to the
f2621c7f 1517invocations given in
208b65c5
SK
1518.B --dhcp-script
1519the lease-change script is called once, at dnsmasq startup, with the
1520single argument "init". When called like this the script should write
1521the saved state of the lease database, in dnsmasq leasefile format, to
1522stdout and exit with zero exit code. Setting this
1523option also forces the leasechange script to be called on changes
1524to the client-id and lease length and expiry time.
9e4abcb5 1525.TP
832af0ba
SK
1526.B --bridge-interface=<interface>,<alias>[,<alias>]
1527Treat DHCP request packets arriving at any of the <alias> interfaces
7622fc06
SK
1528as if they had arrived at <interface>. This option is necessary when
1529using "old style" bridging on BSD platforms, since
832af0ba
SK
1530packets arrive at tap interfaces which don't have an IP address.
1531.TP
28866e95 1532.B \-s, --domain=<domain>[,<address range>[,local]]
9009d746
SK
1533Specifies DNS domains for the DHCP server. Domains may be be given
1534unconditionally (without the IP range) or for limited IP ranges. This has two effects;
9e4abcb5
SK
1535firstly it causes the DHCP server to return the domain to any hosts
1536which request it, and secondly it sets the domain which it is legal
1b7ecd11
SK
1537for DHCP-configured hosts to claim. The intention is to constrain
1538hostnames so that an untrusted host on the LAN cannot advertise
1539its name via dhcp as e.g. "microsoft.com" and capture traffic not
1540meant for it. If no domain suffix is specified, then any DHCP
1541hostname with a domain part (ie with a period) will be disallowed
1542and logged. If suffix is specified, then hostnames with a domain
1543part are allowed, provided the domain part matches the suffix. In
1544addition, when a suffix is set then hostnames without a domain
1545part have the suffix added as an optional domain part. Eg on my network I can set
3d8df260 1546.B --domain=thekelleys.org.uk
9e4abcb5
SK
1547and have a machine whose DHCP hostname is "laptop". The IP address for that machine is available from
1548.B dnsmasq
de37951c
SK
1549both as "laptop" and "laptop.thekelleys.org.uk". If the domain is
1550given as "#" then the domain is read from the first "search" directive
28866e95
SK
1551in /etc/resolv.conf (or equivalent).
1552
1553The address range can be of the form
9009d746
SK
1554<ip address>,<ip address> or <ip address>/<netmask> or just a single
1555<ip address>. See
1556.B --dhcp-fqdn
1557which can change the behaviour of dnsmasq with domains.
28866e95
SK
1558
1559If the address range is given as ip-address/network-size, then a
1560additional flag "local" may be supplied which has the effect of adding
1561--local declarations for forward and reverse DNS queries. Eg.
1562.B --domain=thekelleys.org.uk,192.168.0.0/24,local
1563is identical to
1564.B --domain=thekelleys.org.uk,192.168.0.0/24
1565--local=/thekelleys.org.uk/ --local=/0.168.192.in-addr.arpa/
1566The network size must be 8, 16 or 24 for this to be legal.
9009d746
SK
1567.TP
1568.B --dhcp-fqdn
1569In the default mode, dnsmasq inserts the unqualified names of
1570DHCP clients into the DNS. For this reason, the names must be unique,
1571even if two clients which have the same name are in different
1572domains. If a second DHCP client appears which has the same name as an
a66d36ea 1573existing client, the name is transferred to the new client. If
9009d746
SK
1574.B --dhcp-fqdn
1575is set, this behaviour changes: the unqualified name is no longer
1576put in the DNS, only the qualified name. Two DHCP clients with the
1577same name may both keep the name, provided that the domain part is
1578different (ie the fully qualified names differ.) To ensure that all
1579names have a domain part, there must be at least
1580.B --domain
1581without an address specified when
1582.B --dhcp-fqdn
1583is set.
9e4abcb5 1584.TP
c72daea8
SK
1585.B --dhcp-client-update
1586Normally, when giving a DHCP lease, dnsmasq sets flags in the FQDN
1587option to tell the client not to attempt a DDNS update with its name
1588and IP address. This is because the name-IP pair is automatically
1589added into dnsmasq's DNS view. This flag suppresses that behaviour,
1590this is useful, for instance, to allow Windows clients to update
1591Active Directory servers. See RFC 4702 for details.
1592.TP
c5ad4e79
SK
1593.B --enable-ra
1594Enable dnsmasq's IPv6 Router Advertisement feature. DHCPv6 doesn't
1595handle complete network configuration in the same way as DHCPv4. Router
1596discovery and (possibly) prefix discovery for autonomous address
1597creation are handled by a different protocol. When DHCP is in use,
1598only a subset of this is needed, and dnsmasq can handle it, using
1599existing DHCP configuration to provide most data. When RA is enabled,
1600dnsmasq will advertise a prefix for each dhcp-range, with default
1601router and recursive DNS server as the relevant link-local address on
e8ca69ea
SK
1602the machine running dnsmasq. By default, he "managed address" bits are set, and
1603the "use SLAAC" bit is reset. This can be changed for individual
1604subnets with the mode keywords described in
1605.B --dhcp-range.
18f0fb05
SK
1606RFC6106 DNS parameters are included in the advertisements. By default,
1607the relevant link-local address of the machine running dnsmasq is sent
1608as recursive DNS server. If provided, the DHCPv6 options dns-server and
1609domain-search are used for RDNSS and DNSSL.
c5ad4e79 1610.TP
c4cd95df
SK
1611.B --ra-param=<interface>,[high|low],[[<ra-interval>],<router lifetime>]
1612Set non-default values for router advertisements sent via an
1613interface. The priority field for the router may be altered from the
1614default of medium with eg
1615.B --ra-param=eth0,high.
1616The interval between router advertisements may be set (in seconds) with
1617.B --ra-param=eth0,60.
1618The lifetime of the route may be changed or set to zero, which allows
1619a router to advertise prefixes but not a route via itself.
1620.B --ra-parm=eth0,0,0
1621(A value of zero for the interval means the default value.) All three parameters may be set at once.
1622.B --ra-param=low,60,1200
1623The interface field may include a wildcard.
8d030462 1624.TP
2937f8a0 1625.B --enable-tftp[=<interface>[,<interface>]]
832af0ba 1626Enable the TFTP server function. This is deliberately limited to that
9e038946 1627needed to net-boot a client. Only reading is allowed; the tsize and
8ef5ada2 1628blksize extensions are supported (tsize is only supported in octet
2937f8a0
SK
1629mode). Without an argument, the TFTP service is provided to the same set of interfaces as DHCP service.
1630If the list of interfaces is provided, that defines which interfaces recieve TFTP service.
832af0ba 1631.TP
8ef5ada2 1632.B --tftp-root=<directory>[,<interface>]
832af0ba
SK
1633Look for files to transfer using TFTP relative to the given
1634directory. When this is set, TFTP paths which include ".." are
1635rejected, to stop clients getting outside the specified root.
f2621c7f 1636Absolute paths (starting with /) are allowed, but they must be within
8ef5ada2
SK
1637the tftp-root. If the optional interface argument is given, the
1638directory is only used for TFTP requests via that interface.
832af0ba 1639.TP
5aabfc78
SK
1640.B --tftp-unique-root
1641Add the IP address of the TFTP client as a path component on the end
1642of the TFTP-root (in standard dotted-quad format). Only valid if a
1643tftp-root is set and the directory exists. For instance, if tftp-root is "/tftp" and client
16441.2.3.4 requests file "myfile" then the effective path will be
1645"/tftp/1.2.3.4/myfile" if /tftp/1.2.3.4 exists or /tftp/myfile otherwise.
1646.TP
832af0ba 1647.B --tftp-secure
5aabfc78 1648Enable TFTP secure mode: without this, any file which is readable by
832af0ba
SK
1649the dnsmasq process under normal unix access-control rules is
1650available via TFTP. When the --tftp-secure flag is given, only files
1651owned by the user running the dnsmasq process are accessible. If
1652dnsmasq is being run as root, different rules apply: --tftp-secure
1b7ecd11 1653has no effect, but only files which have the world-readable bit set
832af0ba
SK
1654are accessible. It is not recommended to run dnsmasq as root with TFTP
1655enabled, and certainly not without specifying --tftp-root. Doing so
1656can expose any world-readable file on the server to any host on the net.
1657.TP
61ce600b
SK
1658.B --tftp-lowercase
1659Convert filenames in TFTP requests to all lowercase. This is useful
1660for requests from Windows machines, which have case-insensitive
1661filesystems and tend to play fast-and-loose with case in filenames.
1662Note that dnsmasq's tftp server always converts "\\" to "/" in filenames.
1663.TP
832af0ba
SK
1664.B --tftp-max=<connections>
1665Set the maximum number of concurrent TFTP connections allowed. This
1666defaults to 50. When serving a large number of TFTP connections,
1667per-process file descriptor limits may be encountered. Dnsmasq needs
1668one file descriptor for each concurrent TFTP connection and one
1669file descriptor per unique file (plus a few others). So serving the
1670same file simultaneously to n clients will use require about n + 10 file
1671descriptors, serving different files simultaneously to n clients will
824af85b
SK
1672require about (2*n) + 10 descriptors. If
1673.B --tftp-port-range
1674is given, that can affect the number of concurrent connections.
6b01084f
SK
1675.TP
1676.B --tftp-no-blocksize
1677Stop the TFTP server from negotiating the "blocksize" option with a
1678client. Some buggy clients request this option but then behave badly
1679when it is granted.
824af85b
SK
1680.TP
1681.B --tftp-port-range=<start>,<end>
1682A TFTP server listens on a well-known port (69) for connection initiation,
1683but it also uses a dynamically-allocated port for each
1684connection. Normally these are allocated by the OS, but this option
1685specifies a range of ports for use by TFTP transfers. This can be
1686useful when TFTP has to traverse a firewall. The start of the range
1687cannot be lower than 1025 unless dnsmasq is running as root. The number
1688of concurrent TFTP connections is limited by the size of the port range.
832af0ba 1689.TP
b8187c80
SK
1690.B \-C, --conf-file=<file>
1691Specify a different configuration file. The conf-file option is also allowed in
28866e95
SK
1692configuration files, to include multiple configuration files. A
1693filename of "-" causes dnsmasq to read configuration from stdin.
849a8357 1694.TP
1f15b81d 1695.B \-7, --conf-dir=<directory>[,<file-extension>......]
849a8357 1696Read all the files in the given directory as configuration
1f15b81d
SK
1697files. If extension(s) are given, any files which end in those
1698extensions are skipped. Any files whose names end in ~ or start with . or start and end
1699with # are always skipped. This flag may be given on the command
849a8357 1700line or in a configuration file.
7b1eae4f
SK
1701.TP
1702.B --servers-file=<file>
1703A special case of
1704.B --conf-file
1705which differs in two respects. Firstly, only --server and --rev-server are allowed
1706in the configuration file included. Secondly, the file is re-read and the configuration
1707therein is updated when dnsmasq recieves SIGHUP.
9e4abcb5 1708.SH CONFIG FILE
3be34541
SK
1709At startup, dnsmasq reads
1710.I /etc/dnsmasq.conf,
1711if it exists. (On
1712FreeBSD, the file is
1713.I /usr/local/etc/dnsmasq.conf
b8187c80
SK
1714) (but see the
1715.B \-C
849a8357
SK
1716and
1717.B \-7
1718options.) The format of this
9e4abcb5
SK
1719file consists of one option per line, exactly as the long options detailed
1720in the OPTIONS section but without the leading "--". Lines starting with # are comments and ignored. For
b49644f3 1721options which may only be specified once, the configuration file overrides
b8187c80 1722the command line. Quoting is allowed in a config file:
3d8df260 1723between " quotes the special meanings of ,:. and # are removed and the
824af85b
SK
1724following escapes are allowed: \\\\ \\" \\t \\e \\b \\r and \\n. The later
1725corresponding to tab, escape, backspace, return and newline.
9e4abcb5
SK
1726.SH NOTES
1727When it receives a SIGHUP,
1728.B dnsmasq
3be34541 1729clears its cache and then re-loads
5aabfc78
SK
1730.I /etc/hosts
1731and
1732.I /etc/ethers
824af85b 1733and any file given by --dhcp-hostsfile, --dhcp-optsfile or --addn-hosts.
5aabfc78
SK
1734The dhcp lease change script is called for all
1735existing DHCP leases. If
9e4abcb5
SK
1736.B
1737--no-poll
3be34541
SK
1738is set SIGHUP also re-reads
1739.I /etc/resolv.conf.
1740SIGHUP
b49644f3 1741does NOT re-read the configuration file.
9e4abcb5
SK
1742.PP
1743When it receives a SIGUSR1,
1744.B dnsmasq
824af85b 1745writes statistics to the system log. It writes the cache size,
9e4abcb5
SK
1746the number of names which have had to removed from the cache before
1747they expired in order to make room for new names and the total number
824af85b
SK
1748of names that have been inserted into the cache. For each upstream
1749server it gives the number of queries sent, and the number which
1750resulted in an error. In
9e4abcb5 1751.B --no-daemon
5aabfc78
SK
1752mode or when full logging is enabled (-q), a complete dump of the
1753contents of the cache is made.
1754.PP
1755When it receives SIGUSR2 and it is logging direct to a file (see
1756.B --log-facility
1757)
1758.B dnsmasq
1759will close and reopen the log file. Note that during this operation,
1760dnsmasq will not be running as root. When it first creates the logfile
1761dnsmasq changes the ownership of the file to the non-root user it will run
1762as. Logrotate should be configured to create a new log file with
9e038946 1763the ownership which matches the existing one before sending SIGUSR2.
5aabfc78
SK
1764If TCP DNS queries are in progress, the old logfile will remain open in
1765child processes which are handling TCP queries and may continue to be
1766written. There is a limit of 150 seconds, after which all existing TCP
1767processes will have expired: for this reason, it is not wise to
1768configure logfile compression for logfiles which have just been
1769rotated. Using logrotate, the required options are
1770.B create
1771and
1772.B delaycompress.
1773
1774
9e4abcb5 1775.PP
9e4abcb5
SK
1776Dnsmasq is a DNS query forwarder: it it not capable of recursively
1777answering arbitrary queries starting from the root servers but
1778forwards such queries to a fully recursive upstream DNS server which is
1779typically provided by an ISP. By default, dnsmasq reads
3be34541
SK
1780.I /etc/resolv.conf
1781to discover the IP
9e4abcb5
SK
1782addresses of the upstream nameservers it should use, since the
1783information is typically stored there. Unless
1784.B --no-poll
1785is used,
1786.B dnsmasq
3be34541
SK
1787checks the modification time of
1788.I /etc/resolv.conf
1789(or equivalent if
9e4abcb5
SK
1790.B \--resolv-file
1791is used) and re-reads it if it changes. This allows the DNS servers to
1792be set dynamically by PPP or DHCP since both protocols provide the
1793information.
3be34541
SK
1794Absence of
1795.I /etc/resolv.conf
1796is not an error
9e4abcb5 1797since it may not have been created before a PPP connection exists. Dnsmasq
3be34541
SK
1798simply keeps checking in case
1799.I /etc/resolv.conf
1800is created at any
9e4abcb5
SK
1801time. Dnsmasq can be told to parse more than one resolv.conf
1802file. This is useful on a laptop, where both PPP and DHCP may be used:
3be34541
SK
1803dnsmasq can be set to poll both
1804.I /etc/ppp/resolv.conf
1805and
1806.I /etc/dhcpc/resolv.conf
1807and will use the contents of whichever changed
9e4abcb5
SK
1808last, giving automatic switching between DNS servers.
1809.PP
1810Upstream servers may also be specified on the command line or in
b49644f3 1811the configuration file. These server specifications optionally take a
9e4abcb5
SK
1812domain name which tells dnsmasq to use that server only to find names
1813in that particular domain.
1814.PP
1815In order to configure dnsmasq to act as cache for the host on which it is running, put "nameserver 127.0.0.1" in
1816.I /etc/resolv.conf
1817to force local processes to send queries to
1818dnsmasq. Then either specify the upstream servers directly to dnsmasq
1819using
1820.B \--server
1821options or put their addresses real in another file, say
1822.I /etc/resolv.dnsmasq
1823and run dnsmasq with the
1824.B \-r /etc/resolv.dnsmasq
1825option. This second technique allows for dynamic update of the server
1826addresses by PPP or DHCP.
f6b7dc47
SK
1827.PP
1828Addresses in /etc/hosts will "shadow" different addresses for the same
1829names in the upstream DNS, so "mycompany.com 1.2.3.4" in /etc/hosts will ensure that
1830queries for "mycompany.com" always return 1.2.3.4 even if queries in
1831the upstream DNS would otherwise return a different address. There is
1832one exception to this: if the upstream DNS contains a CNAME which
1833points to a shadowed name, then looking up the CNAME through dnsmasq
1834will result in the unshadowed address associated with the target of
1835the CNAME. To work around this, add the CNAME to /etc/hosts so that
1836the CNAME is shadowed too.
1837
3be34541 1838.PP
8ef5ada2
SK
1839The tag system works as follows: For each DHCP request, dnsmasq
1840collects a set of valid tags from active configuration lines which
1841include set:<tag>, including one from the
26128d27
SK
1842.B dhcp-range
1843used to allocate the address, one from any matching
1844.B dhcp-host
9009d746 1845(and "known" if a dhcp-host matches)
8ef5ada2
SK
1846The tag "bootp" is set for BOOTP requests, and a tag whose name is the
1847name of the interface on which the request arrived is also set.
1848
a66d36ea 1849Any configuration lines which include one or more tag:<tag> constructs
8ef5ada2
SK
1850will only be valid if all that tags are matched in the set derived
1851above. Typically this is dhcp-option.
26128d27 1852.B dhcp-option
8ef5ada2 1853which has tags will be used in preference to an untagged
26128d27
SK
1854.B dhcp-option,
1855provided that _all_ the tags match somewhere in the
8ef5ada2
SK
1856set collected as described above. The prefix '!' on a tag means 'not'
1857so --dhcp=option=tag:!purple,3,1.2.3.4 sends the option when the
1858tag purple is not in the set of valid tags. (If using this in a
1859command line rather than a configuration file, be sure to escape !,
1860which is a shell metacharacter)
7de060b0
SK
1861
1862When selecting dhcp-options, a tag from dhcp-range is second class
1863relative to other tags, to make it easy to override options for
1864individual hosts, so
1865.B dhcp-range=set:interface1,......
1866.B dhcp-host=set:myhost,.....
1867.B dhcp-option=tag:interface1,option:nis-domain,"domain1"
1868.B dhcp-option=tag:myhost,option:nis-domain,"domain2"
1869will set the NIS-domain to domain1 for hosts in the range, but
1870override that to domain2 for a particular host.
1871
26128d27 1872.PP
8ef5ada2 1873Note that for
f6b7dc47 1874.B dhcp-range
8ef5ada2
SK
1875both tag:<tag> and set:<tag> are allowed, to both select the range in
1876use based on (eg) dhcp-host, and to affect the options sent, based on
1877the range selected.
1878
1879This system evolved from an earlier, more limited one and for backward
1880compatibility "net:" may be used instead of "tag:" and "set:" may be
1881omitted. (Except in
1882.B dhcp-host,
1883where "net:" may be used instead of "set:".) For the same reason, '#'
1884may be used instead of '!' to indicate NOT.
f6b7dc47 1885.PP
3be34541
SK
1886The DHCP server in dnsmasq will function as a BOOTP server also,
1887provided that the MAC address and IP address for clients are given,
1888either using
1889.B dhcp-host
1890configurations or in
1891.I /etc/ethers
1892, and a
1893.B dhcp-range
1894configuration option is present to activate the DHCP server
b8187c80
SK
1895on a particular network. (Setting --bootp-dynamic removes the need for
1896static address mappings.) The filename
8ef5ada2
SK
1897parameter in a BOOTP request is used as a tag,
1898as is the tag "bootp", allowing some control over the options returned to
3be34541
SK
1899different classes of hosts.
1900
333b2ceb
SK
1901.SH AUTHORITATIVE CONFIGURATION
1902.PP
1903Configuring dnsmasq to act as an authoritative DNS server is
1904complicated by the fact that it involves configuration of external DNS
1905servers to provide delegation. We will walk through three scenarios of
1906increasing complexity. Prerequisites for all of these scenarios
81925ab7 1907are a globally accessible IP address, an A or AAAA record pointing to that address,
333b2ceb
SK
1908and an external DNS server capable of doing delegation of the zone in
1909question. For the first part of this explanation, we will call the A (or AAAA) record
1910for the globally accessible address server.example.com, and the zone
1911for which dnsmasq is authoritative our.zone.com.
1912
1913The simplest configuration consists of two lines of dnsmasq configuration; something like
1914
1915.nf
1916.B auth-server=server.example.com,eth0
79cb46c0 1917.B auth-zone=our.zone.com,1.2.3.0/24
333b2ceb
SK
1918.fi
1919
1920and two records in the external DNS
1921
1922.nf
1923server.example.com A 192.0.43.10
1924our.zone.com NS server.example.com
1925.fi
1926
1927eth0 is the external network interface on which dnsmasq is listening,
1928and has (globally accessible) address 192.0.43.10.
1929
1930Note that the external IP address may well be dynamic (ie assigned
1931from an ISP by DHCP or PPP) If so, the A record must be linked to this
1932dynamic assignment by one of the usual dynamic-DNS systems.
1933
1934A more complex, but practically useful configuration has the address
1935record for the globally accessible IP address residing in the
1936authoritative zone which dnsmasq is serving, typically at the root. Now
1937we have
1938
1939.nf
1940.B auth-server=our.zone.com,eth0
79cb46c0 1941.B auth-zone=our.zone.com,1.2.3.0/24
333b2ceb
SK
1942.fi
1943
1944.nf
0f128eb5 1945our.zone.com A 1.2.3.4
333b2ceb
SK
1946our.zone.com NS our.zone.com
1947.fi
1948
1949The A record for our.zone.com has now become a glue record, it solves
1950the chicken-and-egg problem of finding the IP address of the
1951nameserver for our.zone.com when the A record is within that
1952zone. Note that this is the only role of this record: as dnsmasq is
1953now authoritative from our.zone.com it too must provide this
1954record. If the external address is static, this can be done with an
1955.B /etc/hosts
1956entry or
1957.B --host-record.
333b2ceb
SK
1958
1959.nf
0f128eb5
SK
1960.B auth-server=our.zone.com,eth0
1961.B host-record=our.zone.com,1.2.3.4
1962.B auth-zone=our.zone.com,1.2.3.0/24
1963.fi
1964
1965If the external address is dynamic, the address
1966associated with our.zone.com must be derived from the address of the
6f130def 1967relevant interface. This is done using
0f128eb5
SK
1968.B interface-name
1969Something like:
1970
1971.nf
1972.B auth-server=our.zone.com,eth0
1973.B interface-name=our.zone.com,eth0
32b4e4cb 1974.B auth-zone=our.zone.com,1.2.3.0/24,eth0
333b2ceb
SK
1975.fi
1976
32b4e4cb
SK
1977(The "eth0" argument in auth-zone adds the subnet containing eth0's
1978dynamic address to the zone, so that the interface-name returns the
1979address in outside queries.)
1980
333b2ceb
SK
1981Our final configuration builds on that above, but also adds a
1982secondary DNS server. This is another DNS server which learns the DNS data
1983for the zone by doing zones transfer, and acts as a backup should
1984the primary server become inaccessible. The configuration of the
1985secondary is beyond the scope of this man-page, but the extra
1986configuration of dnsmasq is simple:
1987
1988.nf
1989.B auth-sec-servers=secondary.myisp.com
1990.fi
1991
1992and
1993
1994.nf
1995our.zone.com NS secondary.myisp.com
1996.fi
1997
1998Adding auth-sec-servers enables zone transfer in dnsmasq, to allow the
1999secondary to collect the DNS data. If you wish to restrict this data
2000to particular hosts then
2001
2002.nf
2003.B auth-peer=<IP address of secondary>
2004.fi
2005
2006will do so.
2007
2008Dnsmasq acts as an authoritative server for in-addr.arpa and
2009ipv6.arpa domains associated with the subnets given in auth-zone
2010declarations, so reverse (address to name) lookups can be simply
2011configured with a suitable NS record, for instance in this example,
2012where we allow 1.2.3.0/24 addresses.
2013
2014.nf
2015 3.2.1.in-addr.arpa NS our.zone.com
2016.fi
2017
2018Note that at present, reverse (in-addr.arpa and ip6.arpa) zones are
2019not available in zone transfers, so there is no point arranging
2020secondary servers for reverse lookups.
2021
2022.PP
2023When dnsmasq is configured to act as an authoritative server, the
2024following data is used to populate the authoritative zone.
2025.PP
2026.B --mx-host, --srv-host, --dns-rr, --txt-record, --naptr-record
2027, as long as the record names are in the authoritative domain.
2028.PP
2029.B --cname
2030as long as the record name is in the authoritative domain. If the
2031target of the CNAME is unqualified, then it is qualified with the
2032authoritative zone name.
2033.PP
2034IPv4 and IPv6 addresses from /etc/hosts (and
2035.B --addn-hosts
2036) and
2037.B --host-record
376d48c7
SK
2038and
2039.B --interface-name
333b2ceb
SK
2040provided the address falls into one of the subnets specified in the
2041.B --auth-zone.
333b2ceb
SK
2042.PP
2043Addresses of DHCP leases, provided the address falls into one of the subnets specified in the
376d48c7
SK
2044.B --auth-zone.
2045(If contructed DHCP ranges are is use, which depend on the address dynamically
2046assigned to an interface, then the form of
333b2ceb 2047.B --auth-zone
376d48c7
SK
2048which defines subnets by the dynamic address of an interface should
2049be used to ensure this condition is met.)
2050.PP
2051In the default mode, where a DHCP lease
333b2ceb
SK
2052has an unqualified name, and possibly a qualified name constructed
2053using
2054.B --domain
2055then the name in the authoritative zone is constructed from the
2056unqualified name and the zone's domain. This may or may not equal
2057that specified by
2058.B --domain.
2059If
2060.B --dhcp-fqdn
2061is set, then the fully qualified names associated with DHCP leases are
2062used, and must match the zone's domain.
2063
2064
2065
5aabfc78
SK
2066.SH EXIT CODES
2067.PP
20680 - Dnsmasq successfully forked into the background, or terminated
2069normally if backgrounding is not enabled.
2070.PP
20711 - A problem with configuration was detected.
2072.PP
20732 - A problem with network access occurred (address in use, attempt
2074to use privileged ports without permission).
2075.PP
9e038946 20763 - A problem occurred with a filesystem operation (missing
5aabfc78
SK
2077file/directory, permissions).
2078.PP
20794 - Memory allocation failure.
2080.PP
20815 - Other miscellaneous problem.
2082.PP
208311 or greater - a non zero return code was received from the
2084lease-script process "init" call. The exit code from dnsmasq is the
2085script's exit code with 10 added.
2086
1b7ecd11
SK
2087.SH LIMITS
2088The default values for resource limits in dnsmasq are generally
2089conservative, and appropriate for embedded router type devices with
2090slow processors and limited memory. On more capable hardware, it is
2091possible to increase the limits, and handle many more clients. The
2092following applies to dnsmasq-2.37: earlier versions did not scale as well.
2093
2094.PP
2095Dnsmasq is capable of handling DNS and DHCP for at least a thousand
8ef5ada2 2096clients. The DHCP lease times should not be very short (less than one hour). The
1b7ecd11
SK
2097value of
2098.B --dns-forward-max
2099can be increased: start with it equal to
2100the number of clients and increase if DNS seems slow. Note that DNS
2101performance depends too on the performance of the upstream
2102nameservers. The size of the DNS cache may be increased: the hard
2103limit is 10000 names and the default (150) is very low. Sending
2104SIGUSR1 to dnsmasq makes it log information which is useful for tuning
2105the cache size. See the
2106.B NOTES
2107section for details.
2108
2109.PP
2110The built-in TFTP server is capable of many simultaneous file
2111transfers: the absolute limit is related to the number of file-handles
2112allowed to a process and the ability of the select() system call to
2113cope with large numbers of file handles. If the limit is set too high
2114using
2115.B --tftp-max
2116it will be scaled down and the actual limit logged at
2117start-up. Note that more transfers are possible when the same file is
2118being sent than when each transfer sends a different file.
2119
2120.PP
2121It is possible to use dnsmasq to block Web advertising by using a list
2122of known banner-ad servers, all resolving to 127.0.0.1 or 0.0.0.0, in
2123.B /etc/hosts
2124or an additional hosts file. The list can be very long,
2125dnsmasq has been tested successfully with one million names. That size
2126file needs a 1GHz processor and about 60Mb of RAM.
2127
1f15b81d
SK
2128.SH INTERNATIONALISATION
2129Dnsmasq can be compiled to support internationalisation. To do this,
2130the make targets "all-i18n" and "install-i18n" should be used instead of
2131the standard targets "all" and "install". When internationalisation
2132is compiled in, dnsmasq will produce log messages in the local
2133language and support internationalised domain names (IDN). Domain
2134names in /etc/hosts, /etc/ethers and /etc/dnsmasq.conf which contain
2135non-ASCII characters will be translated to the DNS-internal punycode
2136representation. Note that
2137dnsmasq determines both the language for messages and the assumed
2138charset for configuration
2139files from the LANG environment variable. This should be set to the system
2140default value by the script which is responsible for starting
2141dnsmasq. When editing the configuration files, be careful to do so
2142using only the system-default locale and not user-specific one, since
2143dnsmasq has no direct way of determining the charset in use, and must
2144assume that it is the system default.
2145
9e4abcb5 2146.SH FILES
b49644f3
SK
2147.IR /etc/dnsmasq.conf
2148
2149.IR /usr/local/etc/dnsmasq.conf
9e4abcb5
SK
2150
2151.IR /etc/resolv.conf
28866e95
SK
2152.IR /var/run/dnsmasq/resolv.conf
2153.IR /etc/ppp/resolv.conf
2154.IR /etc/dhcpc/resolv.conf
9e4abcb5
SK
2155
2156.IR /etc/hosts
2157
3be34541
SK
2158.IR /etc/ethers
2159
b49644f3
SK
2160.IR /var/lib/misc/dnsmasq.leases
2161
2162.IR /var/db/dnsmasq.leases
9e4abcb5
SK
2163
2164.IR /var/run/dnsmasq.pid
2165.SH SEE ALSO
9e4abcb5
SK
2166.BR hosts (5),
2167.BR resolver (5)
2168.SH AUTHOR
2169This manual page was written by Simon Kelley <simon@thekelleys.org.uk>.
2170
2171