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