Annotation of embedaddon/dnsmasq/CHANGELOG, revision 1.1.1.5
1.1.1.5 ! misho 1: version 2.90
! 2: Fix reversion in --rev-server introduced in 2.88 which
! 3: caused breakage if the prefix length is not exactly divisible
! 4: by 8 (IPv4) or 4 (IPv6).
! 5:
! 6: Fix possible SEGV when there server(s) for a particular
! 7: domain are configured, but no server which is not qualified
! 8: for a particular domain. Thanks to Daniel Danzberger for
! 9: spotting this bug.
! 10:
! 11:
! 12: version 2.89
! 13: Fix bug introduced in 2.88 (commit fe91134b) which can result
! 14: in corruption of the DNS cache internal data structures and
! 15: logging of "cache internal error". This has only been seen
! 16: in one place in the wild, and it took considerable effort
! 17: to even generate a test case to reproduce it, but there's
! 18: no way to be sure it won't strike, and the effect is to break
! 19: the cache badly. Installations with DNSSEC enabled are more
! 20: likely to see the problem, but not running DNSSEC does not
! 21: guarantee that it won't happen. Thanks to Timo van Roermund
! 22: for reporting the bug and for his great efforts in chasing
! 23: it down.
! 24:
! 25:
! 26: version 2.88
! 27: Fix bug in --dynamic-host when an interface has /16 IPv4
! 28: address. Thanks to Mark Dietzer for spotting this.
! 29:
! 30: Add --fast-dns-retry option. This gives dnsmasq the ability
! 31: to originate retries for upstream DNS queries itself, rather
! 32: than relying on the downstream client. This is most useful
! 33: when doing DNSSEC over unreliable upstream networks. It comes
! 34: with some cost in memory usage and network bandwidth.
! 35:
! 36: Add --use-stale-cache option. When set, if a DNS name exists
! 37: in the cache, but its time-to-live has expired, dnsmasq will
! 38: return the data anyway. (It attempts to refresh the
! 39: data with an upstream query after returning the stale data.)
! 40: This can improve speed and reliability. It comes
! 41: at the expense of sometimes returning out-of-date data and
! 42: less efficient cache utilisation, since old data cannot be
! 43: flushed when its TTL expires, so the cache becomes
! 44: strictly least-recently-used.
! 45:
! 46: Add --port-limit option which allows tuning for robustness in
! 47: the face of some upstream network errors. Thanks to
! 48: Prashant Kumar Singh, Ravi Nagayach and Mike Danilov,
! 49: all of Amazon Web Services, for their efforts in developing this
! 50: and the stale-cache and fast-retry options.
! 51:
! 52: Make --hostsdir (but NOT --dhcp-hostsdir and --dhcp-optsdir)
! 53: handle removal of whole files or entries within files.
! 54: Thanks to Dominik Derigs for the initial patches for this.
! 55:
! 56: Fix bug, introduced in 2.87, which could result in DNS
! 57: servers being removed from the configuration when reloading
! 58: server configuration from DBus, or re-reading /etc/resolv.conf
! 59: Only servers from the same source should be replaced, but some
! 60: servers from other sources (i.e., hard coded or another dynamic source)
! 61: could mysteriously disappear. Thanks to all reporting this,
! 62: but especially Christopher J. Madsen who reduced the problem
! 63: to an easily reproducible case which saved much labour in
! 64: finding it.
! 65:
! 66: Add --no-round-robin option.
! 67:
! 68: Allow domain names as well as IP addresses when specifying
! 69: upstream DNS servers. There are some gotchas associated with this
! 70: (it will mysteriously fail to work if the dnsmasq instance
! 71: being started is in the path from the system resolver to the DNS),
! 72: and a seemingly sensible configuration like
! 73: --server=domain.name@1.2.3.4 is unactionable if domain.name
! 74: only resolves to an IPv6 address). There are, however,
! 75: cases where is can be useful. Thanks to Dominik Derigs for
! 76: the patch.
! 77:
! 78: Handle DS records for unsupported crypto algorithms correctly.
! 79: Such a DS, as long as it is validated, should allow answers
! 80: in the domain it attests to be returned as unvalidated, and not
! 81: as a validation error.
! 82:
! 83: Optimise reading large numbers of --server options. When re-reading
! 84: upstream servers from /etc/resolv.conf or other sources that
! 85: can change dnsmasq tries to avoid memory fragmentation by re-using
! 86: existing records that are being re-read unchanged. This involves
! 87: seaching all the server records for each new one installed.
! 88: During startup this search is pointless, and can cause long
! 89: start times with thousands of --server options because the work
! 90: needed is O(n^2). Handle this case more intelligently.
! 91: Thanks to Ye Zhou for spotting the problem and an initial patch.
! 92:
! 93: If we detect that a DNS reply from upstream is malformed don't
! 94: return it to the requestor; send a SEVFAIL rcode instead.
! 95:
! 96:
! 97: version 2.87
! 98: Allow arbitrary prefix lengths in --rev-server and
! 99: --domain=....,local
! 100:
! 101: Replace --address=/#/..... functionality which got
! 102: missed in the 2.86 domain search rewrite.
! 103:
! 104: Add --nftset option, like --ipset but for the newer nftables.
! 105: Thanks to Chen Zhenge for the patch.
! 106:
! 107: Add --filter-A and --filter-AAAA options, to remove IPv4 or IPv6
! 108: addresses from DNS answers.
! 109:
! 110: Fix crash doing netbooting when --port is set to zero
! 111: to disable the DNS server. Thanks to Drexl Johannes
! 112: for the bug report.
! 113:
! 114: Generalise --dhcp-relay. Sending via broadcast/multicast is
! 115: now supported for both IPv4 and IPv6 and the configuration
! 116: syntax made easier (but backwards compatible).
! 117:
! 118: Add snooping of IPv6 prefix-delegations to the DHCP-relay system.
! 119:
! 120: Finesse parsing of --dhcp-remoteid and --dhcp-subscrid. To be treated
! 121: as hex, the pattern must consist of only hex digits AND contain
! 122: at least one ':'. Thanks to Bengt-Erik Sandstrom who tripped
! 123: over a pattern consisting of a decimal number which was interpreted
! 124: surprisingly.
! 125:
! 126: Include client address in TFTP file-not-found error reports.
! 127: Thanks to Stefan Rink for the initial patch, which has been
! 128: re-worked by me (srk). All bugs mine.
! 129:
! 130: Note in manpage the change in behaviour of -address. This behaviour
! 131: actually changed in v2.86, but was undocumented there. From 2.86 on,
! 132: (eg) --address=/example.com/1.2.3.4 ONLY applies to A queries. All other
! 133: types of query will be sent upstream. Pre 2.86, that would catch the
! 134: whole example.com domain and queries for other types would get
! 135: a local NODATA answer. The pre-2.86 behaviour is still available,
! 136: by configuring --address=/example.com/1.2.3.4 --local=/example.com/
! 137:
! 138: Fix problem with binding DHCP sockets to an individual interface.
! 139: Despite the fact that the system call tales the interface _name_ as
! 140: a parameter, it actually, binds the socket to interface _index_.
! 141: Deleting the interface and creating a new one with the same name
! 142: leaves the socket bound to the old index. (Creating new sockets
! 143: always allocates a fresh index, they are not reused). We now
! 144: take this behaviour into account and keep up with changing indexes.
! 145:
! 146: Add --conf-script configuration option.
! 147:
! 148: Enhance --domain to accept, for instance,
! 149: --domain=net2.thekelleys.org.uk,eth2 so that hosts get a domain
! 150: which relects the interface they are attached to in a way which
! 151: doesn't require hard-coding addresses. Thanks to Sten Spans for
! 152: the idea.
! 153:
! 154: Fix write-after-free error in DHCPv6 server code.
! 155: CVE-2022-0934 refers.
! 156:
! 157: Add the ability to specify destination port in
! 158: DHCP-relay mode. This change also removes a previous bug
! 159: where --dhcp-alternate-port would affect the port used
! 160: to relay _to_ as well as the port being listened on.
! 161: The new feature allows configuration to provide bug-for-bug
! 162: compatibility, if required. Thanks to Damian Kaczkowski
! 163: for the feature suggestion.
! 164:
! 165: Bound the value of UDP packet size in the EDNS0 header of
! 166: forwarded queries to the configured or default value of
! 167: edns-packet-max. There's no point letting a client set a larger
! 168: value if we're unable to return the answer. Thanks to Bertie
! 169: Taylor for pointing out the problem and supplying the patch.
! 170:
! 171: Fix problem with the configuration
! 172:
! 173: --server=/some.domain/# --address=/#/<ip> --server=<server_ip>
! 174:
! 175: This would return <ip> for queries in some.domain, rather than
! 176: forwarding the query via the default server.
! 177:
! 178: Tweak DHCPv6 relay code so that packets relayed towards a server
! 179: have source address on the server-facing network, not the
! 180: client facing network. Thanks to Luis Thomas for spotting this
! 181: and initial patch.
! 182:
! 183:
! 184: version 2.86
! 185: Handle DHCPREBIND requests in the DHCPv6 server code.
! 186: Thanks to Aichun Li for spotting this omission, and the initial
! 187: patch.
! 188:
! 189: Fix bug which caused dnsmasq to lose track of processes forked
! 190: to handle TCP DNS connections under heavy load. The code
! 191: checked that at least one free process table slot was
! 192: available before listening on TCP sockets, but didn't take
! 193: into account that more than one TCP connection could
! 194: arrive, so that check was not sufficient to ensure that
! 195: there would be slots for all new processes. It compounded
! 196: this error by silently failing to store the process when
! 197: it did run out of slots. Even when this bug is triggered,
! 198: all the right things happen, and answers are still returned.
! 199: Only under very exceptional circumstances, does the bug
! 200: manifest itself: see
! 201: https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2021q2/014976.html
! 202: Thanks to Tijs Van Buggenhout for finding the conditions under
! 203: which the bug manifests itself, and then working out
! 204: exactly what was going on.
! 205:
! 206: Major rewrite of the DNS server and domain handling code.
! 207: This should be largely transparent, but it drastically
! 208: improves performance and reduces memory foot-print when
! 209: configuring large numbers domains of the form
! 210: local=/adserver.com/
! 211: or
! 212: local=/adserver.com/#
! 213: Lookup times now grow as log-to-base-2 of the number of domains,
! 214: rather than greater than linearly, as before.
! 215: The change makes multiple addresses associated with a domain work
! 216: address=/example.com/1.2.3.4
! 217: address=/example.com/5.6.7.8
! 218: It also handles multiple upstream servers for a domain better; using
! 219: the same try/retry algorithms as non domain-specific servers. This
! 220: also applies to DNSSEC-generated queries.
! 221: Finally, some of the oldest and gnarliest code in dnsmasq has had
! 222: a significant clean-up. It's far from perfect, but it _is_ better.
! 223:
! 224: Revise resource handling for number of concurrent DNS queries. This
! 225: used to have a global limit, but that has a problem when using
! 226: different servers for different upstream domains. Queries which are
! 227: routed by domain to an upstream server which is not responding will
! 228: build up and trigger the limit, which breaks DNS service for
! 229: all other domains which could be handled by other servers. The
! 230: change is to make the limit per server-group, where a server group
! 231: is the set of servers configured for a particular domain. In the
! 232: common case, where only default servers are declared, there is
! 233: no effective change.
! 234:
! 235: Improve efficiency of DNSSEC. The sharing point for DNSSEC RR data
! 236: used to be when it entered the cache, having been validated. After
! 237: that queries requiring the KEY or DS records would share the cached
! 238: values. There is a common case in dual-stack hosts that queries for
! 239: A and AAAA records for the same domain are made simultaneously.
! 240: If required keys were not in the cache, this would result in two
! 241: requests being sent upstream for the same key data (and all the
! 242: subsequent chain-of-trust queries.) Now we combine these requests
! 243: and elide the duplicates, resulting in fewer queries upstream
! 244: and better performance. To keep a better handle on what's
! 245: going on, the "extra" logging mode has been modified to associate
! 246: queries and answers for DNSSEC queries in the same way as ordinary
! 247: queries. The requesting address and port have been removed from
! 248: DNSSEC logging lines, since this is no longer strictly defined.
! 249:
! 250: Connection track mark based DNS query filtering. Thanks to
! 251: Etan Kissling for implementing this It extends query filtering
! 252: support beyond what is currently possible
! 253: with the `--ipset` configuration option, by adding support for:
! 254: 1) Specifying allowlists on a per-client basis, based on their
! 255: associated Linux connection track mark.
! 256: 2) Dynamic configuration of allowlists via Ubus.
! 257: 3) Reporting when a DNS query resolves or is rejected via Ubus.
! 258: 4) DNS name patterns containing wildcards.
! 259: Disallowed queries are not forwarded; they are rejected
! 260: with a REFUSED error code.
! 261:
! 262: Allow smaller than 64 prefix lengths in synth-domain, with caveats.
! 263: --synth-domain=1234:4567::/56,example.com is now valid.
! 264:
! 265: Make domains generated by --synth-domain appear in replies
! 266: when in authoritative mode.
! 267:
! 268: Ensure CAP_NET_ADMIN capability is available when
! 269: conntrack is configured. Thanks to Yick Xie for spotting
! 270: the lack of this.
! 271:
! 272: When --dhcp-hostsfile --dhcp-optsfile and --addn-hosts are
! 273: given a directory as argument, define the order in which
! 274: files within that directory are read (alphabetical order
! 275: of filename). Thanks to Ed Wildgoose for the initial patch
! 276: and motivation for this.
! 277:
! 278: Allow adding IP address to nftables set in addition to
! 279: ipset.
! 280:
! 281:
! 282: version 2.85
! 283: Fix problem with DNS retries in 2.83/2.84.
! 284: The new logic in 2.83/2.84 which merges distinct requests
! 285: for the same domain causes problems with clients which do
! 286: retries as distinct requests (differing IDs and/or source ports.)
! 287: The retries just get piggy-backed on the first, failed, request.
! 288: The logic is now changed so that distinct requests for repeated
! 289: queries still get merged into a single ID/source port, but
! 290: they now always trigger a re-try upstream.
! 291: Thanks to Nicholas Mu for his analysis.
! 292:
! 293: Tweak sort order of tags in get-version. v2.84 sorts
! 294: before v2.83, but v2.83 sorts before v2.83rc1 and 2.83rc1
! 295: sorts before v2.83test1. This fixes the problem which lead
! 296: to 2.84 announcing itself as 2.84rc2.
! 297:
! 298: Avoid treating a --dhcp-host which has an IPv6 address
! 299: as eligible for use with DHCPv4 on the grounds that it has
! 300: no address, and vice-versa. Thanks to Viktor Papp for
! 301: spotting the problem. (This bug was fixed was back in 2.67, and
! 302: then regressed in 2.81).
! 303:
! 304: Add --dynamic-host option: A and AAAA records which take their
! 305: network part from the network of a local interface. Useful
! 306: for routers with dynamically prefixes. Thanks
! 307: to Fred F for the suggestion.
! 308:
! 309: Teach --bogus-nxdomain and --ignore-address to take an IPv4 subnet.
! 310:
! 311: Use random source ports where possible if source
! 312: addresses/interfaces in use.
! 313: CVE-2021-3448 applies. Thanks to Petr Menšík for spotting this.
! 314: It's possible to specify the source address or interface to be
! 315: used when contacting upstream name servers: server=8.8.8.8@1.2.3.4
! 316: or server=8.8.8.8@1.2.3.4#66 or server=8.8.8.8@eth0, and all of
! 317: these have, until now, used a single socket, bound to a fixed
! 318: port. This was originally done to allow an error (non-existent
! 319: interface, or non-local address) to be detected at start-up. This
! 320: means that any upstream servers specified in such a way don't use
! 321: random source ports, and are more susceptible to cache-poisoning
! 322: attacks.
! 323: We now use random ports where possible, even when the
! 324: source is specified, so server=8.8.8.8@1.2.3.4 or
! 325: server=8.8.8.8@eth0 will use random source
! 326: ports. server=8.8.8.8@1.2.3.4#66 or any use of --query-port will
! 327: use the explicitly configured port, and should only be done with
! 328: understanding of the security implications.
! 329: Note that this change changes non-existing interface, or non-local
! 330: source address errors from fatal to run-time. The error will be
! 331: logged and communication with the server not possible.
! 332:
! 333: Change the method of allocation of random source ports for DNS.
! 334: Previously, without min-port or max-port configured, dnsmasq would
! 335: default to the compiled in defaults for those, which are 1024 and
! 336: 65535. Now, when neither are configured, it defaults instead to
! 337: the kernel's ephemeral port range, which is typically
! 338: 32768 to 60999 on Linux systems. This change eliminates the
! 339: possibility that dnsmasq may be using a registered port > 1024
! 340: when a long-running daemon starts up and wishes to claim it.
! 341: This change does likely slightly reduce the number of random ports
! 342: and therefore the protection from reply spoofing. The older
! 343: behaviour can be restored using the min-port and max-port config
! 344: switches should that be a concern.
! 345:
! 346: Scale the size of the DNS random-port pool based on the
! 347: value of the --dns-forward-max configuration.
! 348:
! 349: Tweak TFTP code to check sender of all received packets, as
! 350: specified in RFC 1350 para 4.
! 351:
! 352: Support some wildcard matching of input tags to --tag-if.
! 353: Thanks to Geoff Back for the idea and the patch.
! 354:
! 355:
! 356: version 2.84
! 357: Fix a problem, introduced in 2.83, which could see DNS replies
! 358: being sent via the wrong socket. On machines running both
! 359: IPv4 and IPv6 this could result in sporadic messages of
! 360: the form "failed to send packet: Network is unreachable" and
! 361: the lost of the query. Since the error is sporadic and of
! 362: low probability, the client retry would normally succeed.
! 363:
! 364: Change HAVE_NETTLEHASH compile-time to HAVE_CRYPTOHASH.
! 365:
! 366:
1.1.1.4 misho 367: version 2.83
368: Use the values of --min-port and --max-port in outgoing
369: TCP connections to upstream DNS servers.
370:
371: Fix a remote buffer overflow problem in the DNSSEC code. Any
372: dnsmasq with DNSSEC compiled in and enabled is vulnerable to this,
373: referenced by CVE-2020-25681, CVE-2020-25682, CVE-2020-25683
374: CVE-2020-25687.
375:
376: Be sure to only accept UDP DNS query replies at the address
377: from which the query was originated. This keeps as much entropy
378: in the {query-ID, random-port} tuple as possible, to help defeat
379: cache poisoning attacks. Refer: CVE-2020-25684.
380:
381: Use the SHA-256 hash function to verify that DNS answers
382: received are for the questions originally asked. This replaces
383: the slightly insecure SHA-1 (when compiled with DNSSEC) or
384: the very insecure CRC32 (otherwise). Refer: CVE-2020-25685.
385:
386: Handle multiple identical near simultaneous DNS queries better.
387: Previously, such queries would all be forwarded
1.1.1.5 ! misho 388: independently. This is, in theory, inefficient but in practise
1.1.1.4 misho 389: not a problem, _except_ that is means that an answer for any
390: of the forwarded queries will be accepted and cached.
391: An attacker can send a query multiple times, and for each repeat,
392: another {port, ID} becomes capable of accepting the answer he is
393: sending in the blind, to random IDs and ports. The chance of a
1.1.1.5 ! misho 394: successful attack is therefore multiplied by the number of repeats
1.1.1.4 misho 395: of the query. The new behaviour detects repeated queries and
396: merely stores the clients sending repeats so that when the
397: first query completes, the answer can be sent to all the
398: clients who asked. Refer: CVE-2020-25686.
399:
1.1.1.3 misho 400:
1.1.1.4 misho 401: version 2.82
402: Improve behaviour in the face of network interfaces which come
403: and go and change index. Thanks to Petr Mensik for the patch.
1.1.1.3 misho 404:
1.1.1.4 misho 405: Convert hard startup failure on NETLINK_NO_ENOBUFS under qemu-user
406: to a warning.
1.1.1.3 misho 407:
1.1.1.4 misho 408: Allow IPv6 addresses ofthe form [::ffff:1.2.3.4] in --dhcp-option.
1.1.1.3 misho 409:
1.1.1.4 misho 410: Fix crash under heavy TCP connection load introduced in 2.81.
411: Thanks to Frank for good work chasing this down.
1.1.1.3 misho 412:
1.1.1.4 misho 413: Change default lease time for DHCPv6 to one day.
414:
415: Alter calculation of preferred and valid times in router
416: advertisements, so that these do not have a floor applied
417: of the lease time in the dhcp-range if this is not explicitly
418: specified and is merely the default.
419: Thanks to Martin-Éric Racine for suggestions on this.
1.1.1.3 misho 420:
421:
1.1.1.4 misho 422: version 2.81
423: Improve cache behaviour for TCP connections. For ease of
424: implementation, dnsmasq has always forked a new process to handle
425: each incoming TCP connection. A side-effect of this is that
426: any DNS queries answered from TCP connections are not cached:
427: when TCP connections were rare, this was not a problem.
428: With the coming of DNSSEC, it is now the case that some
429: DNSSEC queries have answers which spill to TCP, and if,
430: for instance, this applies to the keys for the root, then
431: those never get cached, and performance is very bad.
432: This fix passes cache entries back from the TCP child process to
433: the main server process, and fixes the problem.
434:
435: Remove the NO_FORK compile-time option, and support for uclinux.
436: In an era where everything has an MMU, this looks like
437: an anachronism, and it adds to (Ok, multiplies!) the
438: combinatorial explosion of compile-time options. Thanks to
439: Kevin Darbyshire-Bryant for the patch.
440:
441: Fix line-counting when reading /etc/hosts and friends; for
442: correct error messages. Thanks to Christian Rosentreter
443: for reporting this.
444:
445: Fix bug in DNS non-terminal code, added in 2.80, which could
446: sometimes cause a NODATA rather than an NXDOMAIN reply.
447: Thanks to Norman Rasmussen, Sven Mueller and Maciej Żenczykowski
448: for spotting and diagnosing the bug and providing patches.
449:
450: Support TCP-fastopen (RFC-7413) on both incoming and
451: outgoing TCP connections, if supported and enabled in the OS.
452:
453: Improve kernel-capability manipulation code under Linux. Dnsmasq
454: now fails early if a required capability is not available, and
455: tries not to request capabilities not required by its
456: configuration.
457:
458: Add --shared-network config. This enables allocation of addresses
459: by the DHCP server in subnets where the server (or relay) does not
460: have an interface on the network in that subnet. Many thanks to
461: kamp.de for sponsoring this feature.
1.1.1.3 misho 462:
1.1.1.4 misho 463: Fix broken contrib/lease_tools/dhcp_lease_time.c. A packet
464: validation check got borked in commit 2b38e382 and release 2.80.
465: Thanks to Tomasz Szajner for spotting this.
466:
467: Fix compilation against nettle version 3.5 and later.
468:
469: Fix spurious DNSSEC validation failures when the auth section
470: of a reply contains unsigned RRs from a signed zone,
471: with the exception that NSEC and NSEC3 RRs must always be signed.
472: Thanks to Tore Anderson for spotting and diagnosing the bug.
1.1.1.3 misho 473:
1.1.1.4 misho 474: Add --dhcp-ignore-clid. This disables reading of DHCP client
475: identifier option (option 61), so clients are only identified by
476: MAC addresses.
477:
478: Fix a bug which stopped --dhcp-name-match from working when a hostname
479: is supplied in --dhcp-host. Thanks to James Feeney for spotting this.
480:
481: Fix bug which caused very rarely caused zero-length DHCPv6 packets.
482: Thanks to Dereck Higgins for spotting this.
483:
484: Add --tftp-single-port option.
485:
486: Enhance --conf-dir to load files in a deterministic order. Thanks to
487: Evgenii Seliavka for the suggestion and initial patch.
488:
489: In the router advert code, handle case where we have two
490: different interfaces on the same IPv6 net, and we are doing
491: RA/DHCP service on only one of them. Thanks to NIIBE Yutaka
492: for spotting this case and making the initial patch.
493:
494: Support prefixed ranges of ipv6 addresses in dhcp-host.
495: This eases problems chain-netbooting, where each link in the
496: chain requests an address using a different UID. With a single
497: address, only one gets the "static" address, but with this
498: fix, enough addresses can be reserved for all the stages of the
499: boot. Many thanks to Harald Jensås for his work on this idea and
500: earlier patches.
501:
502: Add filtering by tag of --dhcp-host directives. Based on a patch
503: by Harald Jensås.
504:
505: Allow empty server spec in --rev-server, to match --server.
506:
507: Remove DSA signature verification from DNSSEC, as specified in
508: RFC 8624. Thanks to Loganaden Velvindron for the original patch.
1.1.1.3 misho 509:
1.1.1.4 misho 510: Add --script-on-renewal option.
1.1.1.3 misho 511:
512:
1.1.1.4 misho 513: version 2.80
514: Add support for RFC 4039 DHCP rapid commit. Thanks to Ashram Method
515: for the initial patch and motivation.
516:
517: Alter the default for dnssec-check-unsigned. Versions of
518: dnsmasq prior to 2.80 defaulted to not checking unsigned
519: replies, and used --dnssec-check-unsigned to switch
520: this on. Such configurations will continue to work as before,
521: but those which used the default of no checking will need to be
522: altered to explicitly select no checking. The new default is
523: because switching off checking for unsigned replies is
524: inherently dangerous. Not only does it open the possiblity of forged
525: replies, but it allows everything to appear to be working even
526: when the upstream namesevers do not support DNSSEC, and in this
527: case no DNSSEC validation at all is occuring.
528:
529: Fix DHCP broken-ness when --no-ping AND --dhcp-sequential-ip
530: are set. Thanks to Daniel Miess for help with this.
531:
532: Add a facilty to store DNS packets sent/recieved in a
533: pcap-format file for later debugging. The file location
534: is given by the --dumpfile option, and a bitmap controlling
535: which packets should be dumped is given by the --dumpmask
536: option.
537:
538: Handle the case of both standard and constructed dhcp-ranges on the
539: same interface better. We don't now contruct a dhcp-range if there's
540: already one specified. This allows the specified interface to
541: have different parameters and avoids advertising the same
542: prefix twice. Thanks to Luis Marsano for spotting this case.
543:
544: Allow zone transfer in authoritative mode if auth-peer is specified,
545: even if auth-sec-servers is not. Thanks to Raphaël Halimi for
546: the suggestion.
547:
548: Fix bug which sometimes caused dnsmasq to wrongly return answers
549: without DNSSEC RRs to queries with the do-bit set, but only when
550: DNSSEC validation was not enabled.
551: Thanks to Petr Menšík for spotting this.
552:
553: Fix missing fatal errors with some malformed options
554: (server, local, address, rebind-domain-ok, ipset, alias).
555: Thanks to Eugene Lozovoy for spotting the problem.
556:
557: Fix crash on startup with a --synth-domain which has no prefix.
558: Introduced in 2.79. Thanks to Andreas Engel for the bug report.
559:
560: Fix missing EDNS0 section in some replies generated by local
561: DNS configuration which confused systemd-resolvd. Thanks to
562: Steve Dodd for characterising the problem.
563:
564: Add --dhcp-name-match config option.
565:
566: Add --caa-record config option.
567:
568: Implement --address=/example.com/# as (more efficient) syntactic
569: sugar for --address=/example.com/0.0.0.0 and
570: --address=/example.com/::
571: Returning null addresses is a useful technique for ad-blocking.
572: Thanks to Peter Russell for the suggestion.
1.1.1.3 misho 573:
1.1.1.4 misho 574: Change anti cache-snooping behaviour with queries with the
575: recursion-desired bit unset. Instead to returning SERVFAIL, we
576: now always forward, and never answer from the cache. This
577: allows "dig +trace" command to work.
578:
579: Include in the example config file a formulation which
580: stops DHCP clients from claiming the DNS name "wpad".
581: This is a fix for the CERT Vulnerability VU#598349.
582:
583:
584: version 2.79
585: Fix parsing of CNAME arguments, which are confused by extra spaces.
586: Thanks to Diego Aguirre for spotting the bug.
587:
588: Where available, use IP_UNICAST_IF or IPV6_UNICAST_IF to bind
589: upstream servers to an interface, rather than SO_BINDTODEVICE.
590: Thanks to Beniamino Galvani for the patch.
591:
592: Always return a SERVFAIL answer to DNS queries without the
593: recursion desired bit set, UNLESS acting as an authoritative
594: DNS server. This avoids a potential route to cache snooping.
595:
596: Add support for Ed25519 signatures in DNSSEC validation.
597:
598: No longer support RSA/MD5 signatures in DNSSEC validation,
599: since these are not secure. This behaviour is mandated in
600: RFC-6944.
601:
602: Fix incorrect error exit code from dhcp_release6 utility.
603: Thanks Gaudenz Steinlin for the bug report.
604:
605: Use SIGINT (instead of overloading SIGHUP) to turn on DNSSEC
606: time validation when --dnssec-no-timecheck is in use.
607: Note that this is an incompatible change from earlier releases.
608:
609: Allow more than one --bridge-interface option to refer to an
610: interface, so that we can use
611: --bridge-interface=int1,alias1
612: --bridge-interface=int1,alias2
613: as an alternative to
614: --bridge-interface=int1,alias1,alias2
615: Thanks to Neil Jerram for work on this.
616:
617: Fix for DNSSEC with wildcard-derived NSEC records.
618: It's OK for NSEC records to be expanded from wildcards,
619: but in that case, the proof of non-existence is only valid
620: starting at the wildcard name, *.<domain> NOT the name expanded
621: from the wildcard. Without this check it's possible for an
622: attacker to craft an NSEC which wrongly proves non-existence.
623: Thanks to Ralph Dolmans for finding this, and co-ordinating
624: the vulnerability tracking and fix release.
625: CVE-2017-15107 applies.
626:
627: Remove special handling of A-for-A DNS queries. These
628: are no longer a significant problem in the global DNS.
629: http://cs.northwestern.edu/~ychen/Papers/DNS_ToN15.pdf
630: Thanks to Mattias Hellström for the initial patch.
631:
632: Fix failure to delete dynamically created dhcp options
633: from files in -dhcp-optsdir directories. Thanks to
634: Lindgren Fredrik for the bug report.
635:
636: Add to --synth-domain the ability to create names using
637: sequential numbers, as well as encodings of IP addresses.
638: For instance,
639: --synth-domain=thekelleys.org.uk,192.168.0.50,192.168.0.70,internal-*
640: creates 21 domain names of the form
641: internal-4.thekelleys.org.uk over the address range given, with
642: internal-0.thekelleys.org.uk being 192.168.0.50 and
643: internal-20.thekelleys.org.uk being 192.168.0.70
644: Thanks to Andy Hawkins for the suggestion.
645:
646: Tidy up Crypto code, removing workarounds for ancient
647: versions of libnettle. We now require libnettle 3.
648:
649:
650: version 2.78
651: Fix logic of appending ".<layer>" to PXE basename. Thanks to Chris
652: Novakovic for the patch.
653:
654: Revert ping-check of address in DHCPDISCOVER if there
655: already exists a lease for the address. Under some
656: circumstances, and netbooted windows installation can reply
657: to pings before if has a DHCP lease and block allocation
658: of the address it already used during netboot. Thanks to
659: Jan Psota for spotting this.
660:
661: Fix DHCP relaying, broken in 2.76 and 2.77 by commit
662: ff325644c7afae2588583f935f4ea9b9694eb52e. Thanks to
663: John Fitzgibbon for the diagnosis and patch.
664:
665: Try other servers if first returns REFUSED when
666: --strict-order active. Thanks to Hans Dedecker
667: for the patch
668:
669: Fix regression in 2.77, ironically added as a security
670: improvement, which resulted in a crash when a DNS
671: query exceeded 512 bytes (or the EDNS0 packet size,
672: if different.) Thanks to Christian Kujau, Arne Woerner
673: Juan Manuel Fernandez and Kevin Darbyshire-Bryant for
674: chasing this one down. CVE-2017-13704 applies.
675:
676: Fix heap overflow in DNS code. This is a potentially serious
677: security hole. It allows an attacker who can make DNS
678: requests to dnsmasq, and who controls the contents of
679: a domain, which is thereby queried, to overflow
680: (by 2 bytes) a heap buffer and either crash, or
681: even take control of, dnsmasq.
682: CVE-2017-14491 applies.
683: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
684: Kevin Hamacher and Ron Bowes of the Google Security Team for
685: finding this.
686:
687: Fix heap overflow in IPv6 router advertisement code.
688: This is a potentially serious security hole, as a
689: crafted RA request can overflow a buffer and crash or
690: control dnsmasq. Attacker must be on the local network.
691: CVE-2017-14492 applies.
692: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
693: and Kevin Hamacher of the Google Security Team for
694: finding this.
695:
696: Fix stack overflow in DHCPv6 code. An attacker who can send
697: a DHCPv6 request to dnsmasq can overflow the stack frame and
698: crash or control dnsmasq.
699: CVE-2017-14493 applies.
700: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
701: Kevin Hamacher and Ron Bowes of the Google Security Team for
702: finding this.
703:
704: Fix information leak in DHCPv6. A crafted DHCPv6 packet can
705: cause dnsmasq to forward memory from outside the packet
706: buffer to a DHCPv6 server when acting as a relay.
707: CVE-2017-14494 applies.
708: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
709: Kevin Hamacher and Ron Bowes of the Google Security Team for
710: finding this.
711:
712: Fix DoS in DNS. Invalid boundary checks in the
713: add_pseudoheader function allows a memcpy call with negative
714: size An attacker which can send malicious DNS queries
715: to dnsmasq can trigger a DoS remotely.
716: dnsmasq is vulnerable only if one of the following option is
717: specified: --add-mac, --add-cpe-id or --add-subnet.
718: CVE-2017-14496 applies.
719: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
720: Kevin Hamacher and Ron Bowes of the Google Security Team for
721: finding this.
722:
723: Fix out-of-memory Dos vulnerability. An attacker which can
724: send malicious DNS queries to dnsmasq can trigger memory
725: allocations in the add_pseudoheader function
726: The allocated memory is never freed which leads to a DoS
727: through memory exhaustion. dnsmasq is vulnerable only
728: if one of the following option is specified:
729: --add-mac, --add-cpe-id or --add-subnet.
730: CVE-2017-14495 applies.
731: Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
732: Kevin Hamacher and Ron Bowes of the Google Security Team for
733: finding this.
734:
735:
736: version 2.77
737: Generate an error when configured with a CNAME loop,
738: rather than a crash. Thanks to George Metz for
739: spotting this problem.
740:
741: Calculate the length of TFTP error reply packet
742: correctly. This fixes a problem when the error
743: message in a TFTP packet exceeds the arbitrary
744: limit of 500 characters. The message was correctly
745: truncated, but not the packet length, so
746: extra data was appended. This is a possible
747: security risk, since the extra data comes from
748: a buffer which is also used for DNS, so that
749: previous DNS queries or replies may be leaked.
750: Thanks to Mozilla for funding the security audit
751: which spotted this bug.
752:
753: Fix logic error in Linux netlink code. This could
754: cause dnsmasq to enter a tight loop on systems
755: with a very large number of network interfaces.
756: Thanks to Ivan Kokshaysky for the diagnosis and
757: patch.
758:
759: Fix problem with --dnssec-timestamp whereby receipt
760: of SIGHUP would erroneously engage timestamp checking.
761: Thanks to Kevin Darbyshire-Bryant for this work.
762:
763: Bump zone serial on reloading /etc/hosts and friends
764: when providing authoritative DNS. Thanks to Harrald
765: Dunkel for spotting this.
766:
767: Handle v4-mapped IPv6 addresses sanely in --synth-domain.
768: These have standard representation like ::ffff:1.2.3.4
769: and are now converted to names like
770: <prefix>--ffff-1-2-3-4.<domain>
771:
772: Handle binding upstream servers to an interface
773: (--server=1.2.3.4@eth0) when the named interface
774: is destroyed and recreated in the kernel. Thanks to
775: Beniamino Galvani for the patch.
776:
777: Allow wildcard CNAME records in authoritative zones.
778: For example --cname=*.example.com,default.example.com
779: Thanks to Pro Backup for sponsoring this development.
780:
781: Bump the allowed backlog of TCP connections from 5 to 32,
782: and make this a compile-time configurable option. Thanks
783: to Donatas Abraitis for diagnosing this as a potential
784: problem.
785:
786: Add DNSMASQ_REQUESTED_OPTIONS environment variable to the
787: lease-change script. Thanks to ZHAO Yu for the patch.
788:
789: Fix foobar in rrfilter code, that could cause malformed
790: replies, especially when DNSSEC validation on, and
791: the upstream server returns answer with the RRs in a
792: particular order. The only DNS server known to tickle
793: this is Nominum's. Thanks to Dave Täht for spotting the
794: bug and assisting in the fix.
795:
796: Fix the manpage which lied that only the primary address
797: of an interface is used by --interface-name.
798:
799: Make --localise-queries apply to names from --interface-name.
800: Thanks to Kevin Darbyshire-Bryant and Eric Luehrsen
801: for pushing this.
802:
803: Improve connection handling when talking to TCP upstream
804: servers. Specifically, be prepared to open a new TCP
805: connection when we want to make multiple queries
806: but the upstream server accepts fewer queries per connection.
807:
808: Improve logging of upstream servers when there are a lot
809: of "local addresses only" entries. Thanks to Hannu Nyman for
810: the patch.
811:
812: Make --bogus-priv apply to IPv6, for the prefixes specified
813: in RFC6303. Thanks to Kevin Darbyshire-Bryant for work on this.
814:
815: Allow use of MAC addresses with --tftp-unique-root. Thanks
816: to Floris Bos for the patch.
817:
818: Add --dhcp-reply-delay option. Thanks to Floris Bos
819: for the patch.
820:
821: Add mtu setting facility to --ra-param. Thanks to David
822: Flamand for the patch.
823:
824: Capture STDOUT and STDERR output from dhcp-script and log
825: it as part of the dnsmasq log stream. Makes life easier
826: for diagnosing unexpected problems in scripts.
827: Thanks to Petr Mensik for the patch.
828:
829: Generate fatal errors when failing to parse the output
830: of the dhcp-script in "init" mode. Avoids strange errors
831: when the script accidentally emits error messages.
832: Thanks to Petr Mensik for the patch.
833:
834: Make --rev-server for an RFC1918 subnet work even in the
835: presence of the --bogus-priv flag. Thanks to
836: Vladislav Grishenko for the patch.
837:
838: Extend --ra-param mtu: field to allow an interface name.
839: This allows the MTU of a WAN interface to be advertised on
840: the internal interfaces of a router. Thanks to
841: Vladislav Grishenko for the patch.
842:
843: Do ICMP-ping check for address-in-use for DHCPv4 when
844: the client specifies an address in DHCPDISCOVER, and when
845: an address in configured locally. Thanks to Alin Năstac
846: for spotting the problem.
847:
848: Add new DHCP tag "known-othernet" which is set when only a
849: dhcp-host exists for another subnet. Can be used to ensure
850: that privileged hosts are not given "guest" addresses by
851: accident. Thanks to Todd Sanket for the suggestion.
852:
853: Remove historic automatic inclusion of IDN support when
854: building internationalisation support. This doesn't
855: fit now there is a choice of IDN libraries. Be sure
856: to include either -DHAVE_IDN or -DHAVE_LIBIDN2 for
857: IDN support.
858:
859:
860: version 2.76
861: Include 0.0.0.0/8 in DNS rebind checks. This range
862: translates to hosts on the local network, or, at
863: least, 0.0.0.0 accesses the local host, so could
864: be targets for DNS rebinding. See RFC 5735 section 3
865: for details. Thanks to Stephen Röttger for the bug report.
866:
867: Enhance --add-subnet to allow arbitrary subnet addresses.
868: Thanks to Ed Barsley for the patch.
869:
870: Respect the --no-resolv flag in inotify code. Fixes bug
871: which caused dnsmasq to fail to start if a resolv-file
872: was a dangling symbolic link, even of --no-resolv set.
873: Thanks to Alexander Kurtz for spotting the problem.
874:
875: Fix crash when an A or AAAA record is defined locally,
876: in a hosts file, and an upstream server sends a reply
877: that the same name is empty. Thanks to Edwin Török for
878: the patch.
879:
880: Fix failure to correctly calculate cache-size when
881: reading a hosts-file fails. Thanks to André Glüpker
882: for the patch.
883:
884: Fix wrong answer to simple name query when --domain-needed
885: set, but no upstream servers configured. Dnsmasq returned
886: REFUSED, in this case, when it should be the same as when
887: upstream servers are configured - NOERROR. Thanks to
888: Allain Legacy for spotting the problem.
889:
890: Return REFUSED when running out of forwarding table slots,
891: not SERVFAIL.
892:
893: Add --max-port configuration. Thanks to Hans Dedecker for
894: the patch.
895:
896: Add --script-arp and two new functions for the dhcp-script.
897: These are "arp" and "arp-old" which announce the arrival and
898: removal of entries in the ARP or neighbour tables.
899:
900: Extend --add-mac to allow a new encoding of the MAC address
901: as base64, by configuring --add-mac=base64
902:
903: Add --add-cpe-id option.
904:
905: Don't crash with divide-by-zero if an IPv6 dhcp-range
906: is declared as a whole /64.
907: (ie xx::0 to xx::ffff:ffff:ffff:ffff)
908: Thanks to Laurent Bendel for spotting this problem.
909:
910: Add support for a TTL parameter in --host-record and
911: --cname.
912:
913: Add --dhcp-ttl option.
914:
915: Add --tftp-mtu option. Thanks to Patrick McLean for the
916: initial patch.
917:
918: Check return-code of inet_pton() when parsing dhcp-option.
919: Bad addresses could fail to generate errors and result in
920: garbage dhcp-options being sent. Thanks to Marc Branchaud
921: for spotting this.
922:
923: Fix wrong value for EDNS UDP packet size when using
924: --servers-file to define upstream DNS servers. Thanks to
925: Scott Bonar for the bug report.
926:
927: Move the dhcp_release and dhcp_lease_time tools from
928: contrib/wrt to contrib/lease-tools.
929:
930: Add dhcp_release6 to contrib/lease-tools. Many thanks
931: to Sergey Nechaev for this code.
932:
933: To avoid filling logs in configurations which define
934: many upstream nameservers, don't log more that 30 servers.
935: The number to be logged can be changed as SERVERS_LOGGED
936: in src/config.h.
937:
938: Swap the values if BC_EFI and x86-64_EFI in --pxe-service.
939: These were previously wrong due to an error in RFC 4578.
940: If you're using BC_EFI to boot 64-bit EFI machines, you
941: will need to update your config.
942:
943: Add ARM32_EFI and ARM64_EFI as valid architectures in
944: --pxe-service.
945:
946: Fix PXE booting for UEFI architectures. Modify PXE boot
947: sequence in this case to force the client to talk to dnsmasq
948: over port 4011. This makes PXE and especially proxy-DHCP PXE
949: work with these architectures.
950:
951: Workaround problems with UEFI PXE clients. There exist
952: in the wild PXE clients which have problems with PXE
953: boot menus. To work around this, when there's a single
954: --pxe-service which applies to client, then that target
955: will be booted directly, rather then sending a
956: single-item boot menu.
957:
958: Many thanks to Jarek Polok, Michael Kuron and Dreamcat4
959: for their work on the long-standing UEFI PXE problem.
960:
961: Subtle change in the semantics of "basename" in
962: --pxe-service. The historical behaviour has always been
963: that the actual filename downloaded from the TFTP server
964: is <basename>.<layer> where <layer> is an integer which
965: corresponds to the layer parameter supplied by the client.
966: It's not clear what the function of the "layer"
967: actually is in the PXE protocol, and in practise layer
968: is always zero, so the filename is <basename>.0
969: The new behaviour is the same as the old, except when
970: <basename> includes a file suffix, in which case
971: the layer suffix is no longer added. This allows
972: sensible suffices to be used, rather then the
973: meaningless ".0". Only in the unlikely event that you
974: have a config with a basename which already has a
975: suffix, is this an incompatible change, since the file
976: downloaded will change from name.suffix.0 to just
977: name.suffix
978:
979:
980: version 2.75
981: Fix reversion on 2.74 which caused 100% CPU use when a
982: dhcp-script is configured. Thanks to Adrian Davey for
983: reporting the bug and testing the fix.
984:
985:
986: version 2.74
987: Fix reversion in 2.73 where --conf-file would attempt to
988: read the default file, rather than no file.
989:
990: Fix inotify code to handle dangling symlinks better and
991: not SEGV in some circumstances.
992:
993: DNSSEC fix. In the case of a signed CNAME generated by a
994: wildcard which pointed to an unsigned domain, the wrong
995: status would be logged, and some necessary checks omitted.
996:
997:
998: version 2.73
999: Fix crash at startup when an empty suffix is supplied to
1000: --conf-dir, also trivial memory leak. Thanks to
1001: Tomas Hozza for spotting this.
1002:
1003: Remove floor of 4096 on advertised EDNS0 packet size when
1004: DNSSEC in use, the original rationale for this has long gone.
1005: Thanks to Anders Kaseorg for spotting this.
1006:
1007: Use inotify for checking on updates to /etc/resolv.conf and
1008: friends under Linux. This fixes race conditions when the files are
1009: updated rapidly and saves CPU by noy polling. To build
1010: a binary that runs on old Linux kernels without inotify,
1011: use make COPTS=-DNO_INOTIFY
1012:
1013: Fix breakage of --domain=<domain>,<subnet>,local - only reverse
1014: queries were intercepted. THis appears to have been broken
1015: since 2.69. Thanks to Josh Stone for finding the bug.
1016:
1017: Eliminate IPv6 privacy addresses and deprecated addresses from
1018: the answers given by --interface-name. Note that reverse queries
1019: (ie looking for names, given addresses) are not affected.
1020: Thanks to Michael Gorbach for the suggestion.
1021:
1022: Fix crash in DNSSEC code with long RRs. Thanks to Marco Davids
1023: for the bug report.
1024:
1025: Add --ignore-address option. Ignore replies to A-record
1026: queries which include the specified address. No error is
1027: generated, dnsmasq simply continues to listen for another
1028: reply. This is useful to defeat blocking strategies which
1029: rely on quickly supplying a forged answer to a DNS
1030: request for certain domains, before the correct answer can
1031: arrive. Thanks to Glen Huang for the patch.
1032:
1033: Revisit the part of DNSSEC validation which determines if an
1034: unsigned answer is legit, or is in some part of the DNS
1035: tree which should be signed. Dnsmasq now works from the
1036: DNS root downward looking for the limit of signed
1037: delegations, rather than working bottom up. This is
1038: both more correct, and less likely to trip over broken
1039: nameservers in the unsigned parts of the DNS tree
1040: which don't respond well to DNSSEC queries.
1041:
1042: Add --log-queries=extra option, which makes logs easier
1043: to search automatically.
1044:
1045: Add --min-cache-ttl option. I've resisted this for a long
1046: time, on the grounds that disbelieving TTLs is never a
1047: good idea, but I've been persuaded that there are
1048: sometimes reasons to do it. (Step forward, GFW).
1049: To avoid misuse, there's a hard limit on the TTL
1050: floor of one hour. Thanks to RinSatsuki for the patch.
1051:
1052: Cope with multiple interfaces with the same link-local
1053: address. (IPv6 addresses are scoped, so this is allowed.)
1054: Thanks to Cory Benfield for help with this.
1055:
1056: Add --dhcp-hostsdir. This allows addition of new host
1057: configurations to a running dnsmasq instance much more
1058: cheaply than having dnsmasq re-read all its existing
1059: configuration each time.
1060:
1061: Don't reply to DHCPv6 SOLICIT messages if we're not
1062: configured to do stateful DHCPv6. Thanks to Win King Wan
1063: for the patch.
1064:
1065: Fix broken DNSSEC validation of ECDSA signatures.
1066:
1067: Add --dnssec-timestamp option, which provides an automatic
1068: way to detect when the system time becomes valid after
1069: boot on systems without an RTC, whilst allowing DNS
1070: queries before the clock is valid so that NTP can run.
1071: Thanks to Kevin Darbyshire-Bryant for developing this idea.
1072:
1073: Add --tftp-no-fail option. Thanks to Stefan Tomanek for
1074: the patch.
1075:
1076: Fix crash caused by looking up servers.bind, CHAOS text
1077: record, when more than about five --servers= lines are
1078: in the dnsmasq config. This causes memory corruption
1079: which causes a crash later. Thanks to Matt Coddington for
1080: sterling work chasing this down.
1081:
1082: Fix crash on receipt of certain malformed DNS requests.
1083: Thanks to Nick Sampanis for spotting the problem.
1084: Note that this is could allow the dnsmasq process's
1085: memory to be read by an attacker under certain
1086: circumstances, so it has a CVE, CVE-2015-3294
1087:
1088: Fix crash in authoritative DNS code, if a .arpa zone
1089: is declared as authoritative, and then a PTR query which
1090: is not to be treated as authoritative arrived. Normally,
1091: directly declaring .arpa zone as authoritative is not
1092: done, so this crash wouldn't be seen. Instead the
1093: relevant .arpa zone should be specified as a subnet
1094: in the auth-zone declaration. Thanks to Johnny S. Lee
1095: for the bugreport and initial patch.
1096:
1097: Fix authoritative DNS code to correctly reply to NS
1098: and SOA queries for .arpa zones for which we are
1099: declared authoritative by means of a subnet in auth-zone.
1100: Previously we provided correct answers to PTR queries
1101: in such zones (including NS and SOA) but not direct
1102: NS and SOA queries. Thanks to Johnny S. Lee for
1103: pointing out the problem.
1104:
1105: Fix logging of DHCPREPLY which should be suppressed
1106: by quiet-dhcp6. Thanks to J. Pablo Abonia for
1107: spotting the problem.
1108:
1109: Try and handle net connections with broken fragmentation
1110: that lose large UDP packets. If a server times out,
1111: reduce the maximum UDP packet size field in the EDNS0
1112: header to 1280 bytes. If it then answers, make that
1113: change permanent.
1114:
1115: Check IPv4-mapped IPv6 addresses when --stop-rebind
1116: is active. Thanks to Jordan Milne for spotting this.
1117:
1118: Allow DHCPv4 options T1 and T2 to be set using --dhcp-option.
1119: Thanks to Kevin Benton for patches and work on this.
1120:
1121: Fix code for DHCPCONFIRM DHCPv6 messages to confirm addresses
1122: in the correct subnet, even of not in dynamic address
1123: allocation range. Thanks to Steve Hirsch for spotting
1124: the problem.
1125:
1126: Add AddDhcpLease and DeleteDhcpLease DBus methods. Thanks
1127: to Nicolas Cavallari for the patch.
1128:
1129: Allow configuration of router advertisements without the
1130: "on-link" bit set. Thanks to Neil Jerram for the patch.
1131:
1132: Extend --bridge-interface to DHCPv6 and router
1133: advertisements. Thanks to Neil Jerram for the patch.
1134:
1135:
1.1.1.3 misho 1136: version 2.72
1.1.1.4 misho 1137: Add ra-advrouter mode, for RFC-3775 mobile IPv6 support.
1.1.1.3 misho 1138:
1.1.1.4 misho 1139: Add support for "ipsets" in *BSD, using pf. Thanks to
1140: Sven Falempin for the patch.
1141:
1142: Fix race condition which could lock up dnsmasq when an
1143: interface goes down and up rapidly. Thanks to Conrad
1144: Kostecki for helping to chase this down.
1145:
1146: Add DBus methods SetFilterWin2KOption and SetBogusPrivOption
1147: Thanks to the Smoothwall project for the patch.
1148:
1149: Fix failure to build against Nettle-3.0. Thanks to Steven
1150: Barth for spotting this and finding the fix.
1151:
1152: When assigning existing DHCP leases to interfaces by comparing
1153: networks, handle the case that two or more interfaces have the
1154: same network part, but different prefix lengths (favour the
1155: longer prefix length.) Thanks to Lung-Pin Chang for the
1156: patch.
1157:
1158: Add a mode which detects and removes DNS forwarding loops, ie
1159: a query sent to an upstream server returns as a new query to
1160: dnsmasq, and would therefore be forwarded again, resulting in
1161: a query which loops many times before being dropped. Upstream
1162: servers which loop back are disabled and this event is logged.
1163: Thanks to Smoothwall for their sponsorship of this feature.
1164:
1165: Extend --conf-dir to allow filtering of files. So
1166: --conf-dir=/etc/dnsmasq.d,\*.conf
1167: will load all the files in /etc/dnsmasq.d which end in .conf
1168:
1169: Fix bug when resulted in NXDOMAIN answers instead of NODATA in
1170: some circumstances.
1171:
1172: Fix bug which caused dnsmasq to become unresponsive if it
1173: failed to send packets due to a network interface disappearing.
1174: Thanks to Niels Peen for spotting this.
1175:
1176: Fix problem with --local-service option on big-endian platforms
1177: Thanks to Richard Genoud for the patch.
1.1.1.3 misho 1178:
1179:
1.1.1.2 misho 1180: version 2.71
1.1.1.4 misho 1181: Subtle change to error handling to help DNSSEC validation
1182: when servers fail to provide NODATA answers for
1183: non-existent DS records.
1184:
1185: Tweak code which removes DNSSEC records from answers when
1186: not required. Fixes broken answers when additional section
1187: has real records in it. Thanks to Marco Davids for the bug
1188: report.
1189:
1190: Fix DNSSEC validation of ANY queries. Thanks to Marco Davids
1191: for spotting that too.
1192:
1193: Fix total DNS failure and 100% CPU use if cachesize set to zero,
1194: regression introduced in 2.69. Thanks to James Hunt and
1195: the Ubuntu crowd for assistance in fixing this.
1.1.1.2 misho 1196:
1197:
1198: version 2.70
1.1.1.4 misho 1199: Fix crash, introduced in 2.69, on TCP request when dnsmasq
1200: compiled with DNSSEC support, but running without DNSSEC
1201: enabled. Thanks to Manish Sing for spotting that one.
1.1.1.2 misho 1202:
1.1.1.4 misho 1203: Fix regression which broke ipset functionality. Thanks to
1204: Wang Jian for the bug report.
1.1.1.2 misho 1205:
1206:
1207: version 2.69
1.1.1.4 misho 1208: Implement dynamic interface discovery on *BSD. This allows
1209: the constructor: syntax to be used in dhcp-range for DHCPv6
1210: on the BSD platform. Thanks to Matthias Andree for
1211: valuable research on how to implement this.
1212:
1213: Fix infinite loop associated with some --bogus-nxdomain
1214: configs. Thanks fogobogo for the bug report.
1215:
1216: Fix missing RA RDNS option with configuration like
1217: --dhcp-option=option6:23,[::] Thanks to Tsachi Kimeldorfer
1218: for spotting the problem.
1219:
1220: Add [fd00::] and [fe80::] as special addresses in DHCPv6
1221: options, analogous to [::]. [fd00::] is replaced with the
1222: actual ULA of the interface on the machine running
1223: dnsmasq, [fe80::] with the link-local address.
1224: Thanks to Tsachi Kimeldorfer for championing this.
1225:
1226: DNSSEC validation and caching. Dnsmasq needs to be
1227: compiled with this enabled, with
1228:
1229: make dnsmasq COPTS=-DHAVE_DNSSEC
1230:
1231: this adds dependencies on the nettle crypto library and the
1232: gmp maths library. It's possible to have these linked
1233: statically with
1234:
1235: make dnsmasq COPTS='-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC'
1236:
1237: which bloats the dnsmasq binary, but saves the size of
1238: the shared libraries which are much bigger.
1239:
1240: To enable, DNSSEC, you will need a set of
1241: trust-anchors. Now that the TLDs are signed, this can be
1242: the keys for the root zone, and for convenience they are
1243: included in trust-anchors.conf in the dnsmasq
1244: distribution. You should of course check that these are
1245: legitimate and up-to-date. So, adding
1246:
1247: conf-file=/path/to/trust-anchors.conf
1248: dnssec
1249:
1250: to your config is all that's needed to get things
1251: working. The upstream nameservers have to be DNSSEC-capable
1252: too, of course. Many ISP nameservers aren't, but the
1253: Google public nameservers (8.8.8.8 and 8.8.4.4) are.
1254: When DNSSEC is configured, dnsmasq validates any queries
1255: for domains which are signed. Query results which are
1256: bogus are replaced with SERVFAIL replies, and results
1257: which are correctly signed have the AD bit set. In
1258: addition, and just as importantly, dnsmasq supplies
1259: correct DNSSEC information to clients which are doing
1260: their own validation, and caches DNSKEY, DS and RRSIG
1261: records, which significantly improve the performance of
1262: downstream validators. Setting --log-queries will show
1263: DNSSEC in action.
1264:
1265: If a domain is returned from an upstream nameserver without
1266: DNSSEC signature, dnsmasq by default trusts this. This
1267: means that for unsigned zone (still the majority) there
1268: is effectively no cost for having DNSSEC enabled. Of course
1269: this allows an attacker to replace a signed record with a
1270: false unsigned record. This is addressed by the
1271: --dnssec-check-unsigned flag, which instructs dnsmasq
1272: to prove that an unsigned record is legitimate, by finding
1273: a secure proof that the zone containing the record is not
1274: signed. Doing this has costs (typically one or two extra
1275: upstream queries). It also has a nasty failure mode if
1276: dnsmasq's upstream nameservers are not DNSSEC capable.
1277: Without --dnssec-check-unsigned using such an upstream
1278: server will simply result in not queries being validated;
1279: with --dnssec-check-unsigned enabled and a
1280: DNSSEC-ignorant upstream server, _all_ queries will fail.
1281:
1282: Note that DNSSEC requires that the local time is valid and
1283: accurate, if not then DNSSEC validation will fail. NTP
1284: should be running. This presents a problem for routers
1285: without a battery-backed clock. To set the time needs NTP
1286: to do DNS lookups, but lookups will fail until NTP has run.
1287: To address this, there's a flag, --dnssec-no-timecheck
1288: which disables the time checks (only) in DNSSEC. When dnsmasq
1289: is started and the clock is not synced, this flag should
1290: be used. As soon as the clock is synced, SIGHUP dnsmasq.
1291: The SIGHUP clears the cache of partially-validated data and
1292: resets the no-timecheck flag, so that all DNSSEC checks
1293: henceforward will be complete.
1294:
1295: The development of DNSSEC in dnsmasq was started by
1296: Giovanni Bajo, to whom huge thanks are owed. It has been
1297: supported by Comcast, whose techfund grant has allowed for
1298: an invaluable period of full-time work to get it to
1299: a workable state.
1300:
1301: Add --rev-server. Thanks to Dave Taht for suggesting this.
1302:
1303: Add --servers-file. Allows dynamic update of upstream servers
1304: full access to configuration.
1305:
1306: Add --local-service. Accept DNS queries only from hosts
1307: whose address is on a local subnet, ie a subnet for which
1308: an interface exists on the server. This option
1309: only has effect if there are no --interface --except-interface,
1310: --listen-address or --auth-server options. It is intended
1311: to be set as a default on installation, to allow
1312: unconfigured installations to be useful but also safe from
1313: being used for DNS amplification attacks.
1314:
1315: Fix crashes in cache_get_cname_target() when dangling CNAMEs
1316: encountered. Thanks to Andy and the rt-n56u project for
1317: find this and helping to chase it down.
1318:
1319: Fix wrong RCODE in authoritative DNS replies to PTR queries. The
1320: correct answer was included, but the RCODE was set to NXDOMAIN.
1321: Thanks to Craig McQueen for spotting this.
1.1.1.2 misho 1322:
1.1.1.4 misho 1323: Make statistics available as DNS queries in the .bind TLD as
1324: well as logging them.
1.1.1.2 misho 1325:
1326:
1327: version 2.68
1.1.1.4 misho 1328: Use random addresses for DHCPv6 temporary address
1329: allocations, instead of algorithmically determined stable
1330: addresses.
1331:
1332: Fix bug which meant that the DHCPv6 DUID was not available
1333: in DHCP script runs during the lifetime of the dnsmasq
1334: process which created the DUID de-novo. Once the DUID was
1335: created and stored in the lease file and dnsmasq
1336: restarted, this bug disappeared.
1337:
1338: Fix bug introduced in 2.67 which could result in erroneous
1339: NXDOMAIN returns to CNAME queries.
1340:
1341: Fix build failures on MacOS X and openBSD.
1342:
1343: Allow subnet specifications in --auth-zone to be interface
1344: names as well as address literals. This makes it possible
1345: to configure authoritative DNS when local address ranges
1346: are dynamic and works much better than the previous
1347: work-around which exempted constructed DHCP ranges from the
1348: IP address filtering. As a consequence, that work-around
1349: is removed. Under certain circumstances, this change wil
1350: break existing configuration: if you're relying on the
1351: constructed-range exception, you need to change --auth-zone
1352: to specify the same interface as is used to construct your
1353: DHCP ranges, probably with a trailing "/6" like this:
1354: --auth-zone=example.com,eth0/6 to limit the addresses to
1355: IPv6 addresses of eth0.
1356:
1357: Fix problems when advertising deleted IPv6 prefixes. If
1358: the prefix is deleted (rather than replaced), it doesn't
1359: get advertised with zero preferred time. Thanks to Tsachi
1360: for the bug report.
1361:
1362: Fix segfault with some locally configured CNAMEs. Thanks
1363: to Andrew Childs for spotting the problem.
1364:
1365: Fix memory leak on re-reading /etc/hosts and friends,
1366: introduced in 2.67.
1367:
1368: Check the arrival interface of incoming DNS and TFTP
1369: requests via IPv6, even in --bind-interfaces mode. This
1370: isn't possible for IPv4 and can generate scary warnings,
1371: but as it's always possible for IPv6 (the API always
1372: exists) then we should do it always.
1373:
1374: Tweak the rules on prefix-lengths in --dhcp-range for
1375: IPv6. The new rule is that the specified prefix length
1376: must be larger than or equal to the prefix length of the
1377: corresponding address on the local interface.
1.1.1.2 misho 1378:
1379:
1380: version 2.67
1.1.1.4 misho 1381: Fix crash if upstream server returns SERVFAIL when
1382: --conntrack in use. Thanks to Giacomo Tazzari for finding
1383: this and supplying the patch.
1384:
1385: Repair regression in 2.64. That release stopped sending
1386: lease-time information in the reply to DHCPINFORM
1387: requests, on the correct grounds that it was a standards
1388: violation. However, this broke the dnsmasq-specific
1389: dhcp_lease_time utility. Now, DHCPINFORM returns
1390: lease-time only if it's specifically requested
1391: (maintaining standards) and the dhcp_lease_time utility
1392: has been taught to ask for it (restoring functionality).
1393:
1394: Fix --dhcp-match, --dhcp-vendorclass and --dhcp-userclass
1395: to work with BOOTP and well as DHCP. Thanks to Peter
1396: Korsgaard for spotting the problem.
1397:
1398: Add --synth-domain. Thanks to Vishvananda Ishaya for
1399: suggesting this.
1400:
1401: Fix failure to compile ipset.c if old kernel headers are
1402: in use. Thanks to Eugene Rudoy for pointing this out.
1403:
1404: Handle IPv4 interface-address labels in Linux. These are
1405: often used to emulate the old IP-alias addresses. Before,
1406: using --interface=eth0 would service all the addresses of
1407: eth0, including ones configured as aliases, which appear
1408: in ifconfig as eth0:0. Now, only addresses with the label
1409: eth0 are active. This is not backwards compatible: if you
1410: want to continue to bind the aliases too, you need to add
1411: eg. --interface=eth0:0 to the config.
1412:
1413: Fix "failed to set SO_BINDTODEVICE on DHCP socket: Socket
1414: operation on non-socket" error on startup with
1415: configurations which have exactly one --interface option
1416: and do RA but _not_ DHCPv6. Thanks to Trever Adams for the
1417: bug report.
1418:
1419: Generalise --interface-name to cope with IPv6 addresses
1420: and multiple addresses per interface per address family.
1421:
1422: Fix option parsing for --dhcp-host, which was generating a
1423: spurious error when all seven possible items were
1424: included. Thanks to Zhiqiang Wang for the bug report.
1425:
1426: Remove restriction on prefix-length in --auth-zone. Thanks
1427: to Toke Hoiland-Jorgensen for suggesting this.
1428:
1429: Log when the maximum number of concurrent DNS queries is
1430: reached. Thanks to Marcelo Salhab Brogliato for the patch.
1431:
1432: If wildcards are used in --interface, don't assume that
1433: there will only ever be one available interface for DHCP
1434: just because there is one at start-up. More may appear, so
1435: we can't use SO_BINDTODEVICE. Thanks to Natrio for the bug
1436: report.
1437:
1438: Increase timeout/number of retries in TFTP to accommodate
1439: AudioCodes Voice Gateways doing streaming writes to flash.
1440: Thanks to Damian Kaczkowski for spotting the problem.
1441:
1442: Fix crash with empty DHCP string options when adding zero
1443: terminator. Thanks to Patrick McLean for the bug report.
1444:
1445: Allow hostnames to start with a number, as allowed in
1446: RFC-1123. Thanks to Kyle Mestery for the patch.
1447:
1448: Fixes to DHCP FQDN option handling: don't terminate FQDN
1449: if domain not known and allow a FQDN option with blank
1450: name to request that a FQDN option is returned in the
1451: reply. Thanks to Roy Marples for the patch.
1452:
1453: Make --clear-on-reload apply to setting upstream servers
1454: via DBus too.
1455:
1456: When the address which triggered the construction of an
1457: advertised IPv6 prefix disappears, continue to advertise
1458: the prefix for up to 2 hours, with the preferred lifetime
1459: set to zero. This satisfies RFC 6204 4.3 L-13 and makes
1460: things work better if a prefix disappears without being
1461: deprecated first. Thanks to Uwe Schindler for persuasively
1462: arguing for this.
1463:
1464: Fix MAC address enumeration on *BSD. Thanks to Brad Smith
1465: for the bug report.
1466:
1467: Support RFC-4242 information-refresh-time options in the
1468: reply to DHCPv6 information-request. The lease time of the
1469: smallest valid dhcp-range is sent. Thanks to Uwe Schindler
1470: for suggesting this.
1471:
1472: Make --listen-address higher priority than --except-interface
1473: in all circumstances. Thanks to Thomas Hood for the bugreport.
1474:
1475: Provide independent control over which interfaces get TFTP
1476: service. If enable-tftp is given a list of interfaces, then TFTP
1477: is provided on those. Without the list, the previous behaviour
1478: (provide TFTP to the same interfaces we provide DHCP to)
1479: is retained. Thanks to Lonnie Abelbeck for the suggestion.
1480:
1481: Add --dhcp-relay config option. Many thanks to vtsl.net
1482: for sponsoring this development.
1483:
1484: Fix crash with empty tag: in --dhcp-range. Thanks to
1485: Kaspar Schleiser for the bug report.
1486:
1487: Add "baseline" and "bloatcheck" makefile targets, for
1488: revealing size changes during development. Thanks to
1489: Vladislav Grishenko for the patch.
1490:
1491: Cope with DHCPv6 clients which send REQUESTs without
1492: address options - treat them as SOLICIT with rapid commit.
1493:
1494: Support identification of clients by MAC address in
1495: DHCPv6. When using a relay, the relay must support RFC
1496: 6939 for this to work. It always works for directly
1497: connected clients. Thanks to Vladislav Grishenko
1498: for prompting this feature.
1499:
1500: Remove the rule for constructed DHCP ranges that the local
1501: address must be either the first or last address in the
1502: range. This was originally to avoid SLAAC addresses, but
1503: we now explicitly autoconfig and privacy addresses instead.
1504:
1505: Update Polish translation. Thanks to Jan Psota.
1506:
1507: Fix problem in DHCPv6 vendorclass/userclass matching
1508: code. Thanks to Tanguy Bouzeloc for the patch.
1509:
1510: Update Spanish translation. Thanks to Vicente Soriano.
1511:
1512: Add --ra-param option. Thanks to Vladislav Grishenko for
1513: inspiration on this.
1514:
1515: Add --add-subnet configuration, to tell upstream DNS
1516: servers where the original client is. Thanks to DNSthingy
1517: for sponsoring this feature.
1518:
1519: Add --quiet-dhcp, --quiet-dhcp6 and --quiet-ra. Thanks to
1520: Kevin Darbyshire-Bryant for the initial patch.
1521:
1522: Allow A/AAAA records created by --interface-name to be the
1523: target of --cname. Thanks to Hadmut Danisch for the
1524: suggestion.
1525:
1526: Avoid treating a --dhcp-host which has an IPv6 address
1527: as eligible for use with DHCPv4 on the grounds that it has
1528: no address, and vice-versa. Thanks to Yury Konovalov for
1529: spotting the problem.
1530:
1531: Do a better job caching dangling CNAMEs. Thanks to Yves
1532: Dorfsman for spotting the problem.
1.1.1.2 misho 1533:
1534:
1.1 misho 1535: version 2.66
1.1.1.4 misho 1536: Add the ability to act as an authoritative DNS
1537: server. Dnsmasq can now answer queries from the wider 'net
1538: with local data, as long as the correct NS records are set
1539: up. Only local data is provided, to avoid creating an open
1540: DNS relay. Zone transfer is supported, to allow secondary
1541: servers to be configured.
1542:
1543: Add "constructed DHCP ranges" for DHCPv6. This is intended
1544: for IPv6 routers which get prefixes dynamically via prefix
1545: delegation. With suitable configuration, stateful DHCPv6
1546: and RA can happen automatically as prefixes are delegated
1547: and then deprecated, without having to re-write the
1548: dnsmasq configuration file or restart the daemon. Thanks to
1549: Steven Barth for extensive testing and development work on
1550: this idea.
1551:
1552: Fix crash on startup on Solaris 11. Regression probably
1553: introduced in 2.61. Thanks to Geoff Johnstone for the
1554: patch.
1555:
1556: Add code to make behaviour for TCP DNS requests that same
1557: as for UDP requests, when a request arrives for an allowed
1558: address, but via a banned interface. This change is only
1559: active on Linux, since the relevant API is missing (AFAIK)
1560: on other platforms. Many thanks to Tomas Hozza for
1561: spotting the problem, and doing invaluable discovery of
1562: the obscure and undocumented API required for the solution.
1563:
1564: Don't send the default DHCP option advertising dnsmasq as
1565: the local DNS server if dnsmasq is configured to not act
1566: as DNS server, or it's configured to a non-standard port.
1567:
1568: Add DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBSCRIBER_ID,
1569: DNSMASQ_REMOTE_ID variables to the environment of the
1570: lease-change script (and the corresponding Lua). These hold
1571: information inserted into the DHCP request by a DHCP relay
1572: agent. Thanks to Lakefield Communications for providing a
1573: bounty for this addition.
1574:
1575: Fixed crash, introduced in 2.64, whilst handling DHCPv6
1576: information-requests with some common configurations.
1577: Thanks to Robert M. Albrecht for the bug report and
1578: chasing the problem.
1579:
1580: Add --ipset option. Thanks to Jason A. Donenfeld for the
1581: patch.
1582:
1583: Don't erroneously reject some option names in --dhcp-match
1584: options. Thanks to Benedikt Hochstrasser for the bug report.
1585:
1586: Allow a trailing '*' wildcard in all interface-name
1587: configurations. Thanks to Christian Parpart for the patch.
1588:
1589: Handle the situation where libc headers define
1590: SO_REUSEPORT, but the kernel in use doesn't, to cope with
1591: the introduction of this option to Linux. Thanks to Rich
1592: Felker for the bug report.
1593:
1594: Update Polish translation. Thanks to Jan Psota.
1595:
1596: Fix crash if the configured DHCP lease limit is
1597: reached. Regression occurred in 2.61. Thanks to Tsachi for
1598: the bug report.
1599:
1600: Update the French translation. Thanks to Gildas le Nadan.
1601:
1.1 misho 1602:
1603: version 2.65
1.1.1.4 misho 1604: Fix regression which broke forwarding of queries sent via
1605: TCP which are not for A and AAAA and which were directed to
1606: non-default servers. Thanks to Niax for the bug report.
1607:
1608: Fix failure to build with DHCP support excluded. Thanks to
1609: Gustavo Zacarias for the patch.
1610:
1611: Fix nasty regression in 2.64 which completely broke caching.
1.1 misho 1612:
1613:
1614: version 2.64
1.1.1.4 misho 1615: Handle DHCP FQDN options with all flag bits zero and
1616: --dhcp-client-update set. Thanks to Bernd Krumbroeck for
1617: spotting the problem.
1618:
1619: Finesse the check for /etc/hosts names which conflict with
1620: DHCP names. Previously a name/address pair in /etc/hosts
1621: which didn't match the name/address of a DHCP lease would
1622: generate a warning. Now that only happens if there is not
1623: also a match. This allows multiple addresses for a name in
1624: /etc/hosts with one of them assigned via DHCP.
1625:
1626: Fix broken vendor-option processing for BOOTP. Thanks to
1627: Hans-Joachim Baader for the bug report.
1628:
1629: Don't report spurious netlink errors, regression in
1630: 2.63. Thanks to Vladislav Grishenko for the patch.
1631:
1632: Flag DHCP or DHCPv6 in startup logging. Thanks to
1633: Vladislav Grishenko for the patch.
1634:
1635: Add SetServersEx method in DBus interface. Thanks to Dan
1636: Williams for the patch.
1637:
1638: Add SetDomainServers method in DBus interface. Thanks to
1639: Roy Marples for the patch.
1640:
1641: Fix build with later Lua libraries. Thanks to Cristian
1642: Rodriguez for the patch.
1643:
1644: Add --max-cache-ttl option. Thanks to Dennis Kaarsemaker
1645: for the patch.
1646:
1647: Fix breakage of --host-record parsing, resulting in
1648: infinite loop at startup. Regression in 2.63. Thanks to
1649: Haim Gelfenbeyn for spotting this.
1650:
1651: Set SO_REUSEADDRESS and SO_V6ONLY options on the DHCPv6
1652: socket, this allows multiple instances of dnsmasq on a
1653: single machine, in the same way as for DHCPv4. Thanks to
1654: Gene Czarcinski and Vladislav Grishenko for work on this.
1655:
1656: Fix DHCPv6 to do access control correctly when it's
1657: configured with --listen-address. Thanks to
1658: Gene Czarcinski for sorting this out.
1659:
1660: Add a "wildcard" dhcp-range which works for any IPv6
1661: subnet, --dhcp-range=::,static Useful for Stateless
1662: DHCPv6. Thanks to Vladislav Grishenko for the patch.
1663:
1664: Don't include lease-time in DHCPACK replies to DHCPINFORM
1665: queries, since RFC-2131 says we shouldn't. Thanks to
1666: Wouter Ibens for pointing this out.
1667:
1668: Makefile tweak to do dependency checking on header files.
1669: Thanks to Johan Peeters for the patch.
1670:
1671: Check interface for outgoing unsolicited router
1672: advertisements, rather than relying on interface address
1673: configuration. Thanks to Gene Czarinski for the patch.
1674:
1675: Handle better attempts to transmit on interfaces which are
1676: still doing DAD, and specifically do not just transmit
1677: without setting source address and interface, since this
1678: can cause very puzzling effects when a router
1679: advertisement goes astray. Thanks again to Gene Czarinski.
1680:
1681: Get RA timers right when there is more than one
1682: dhcp-range on a subnet.
1683:
1.1 misho 1684:
1685: version 2.63
1.1.1.4 misho 1686: Do duplicate dhcp-host address check in --test mode.
1687:
1688: Check that tftp-root directories are accessible before
1689: start-up. Thanks to Daniel Veillard for the initial patch.
1690:
1691: Allow more than one --tfp-root flag. The per-interface
1692: stuff is pointless without that.
1693:
1694: Add --bind-dynamic. A hybrid mode between the default and
1695: --bind-interfaces which copes with dynamically created
1696: interfaces.
1.1 misho 1697:
1.1.1.4 misho 1698: A couple of fixes to the build system for Android. Thanks
1699: to Metin Kaya for the patches.
1.1 misho 1700:
1.1.1.4 misho 1701: Remove the interface:<interface> argument in --dhcp-range, and
1702: the interface argument to --enable-tftp. These were a
1703: still-born attempt to allow automatic isolated
1704: configuration by libvirt, but have never (to my knowledge)
1705: been used, had very strange semantics, and have been
1706: superseded by other mechanisms.
1.1 misho 1707:
1.1.1.4 misho 1708: Fixed bug logging filenames when duplicate dhcp-host
1709: addresses are found. Thanks to John Hanks for the patch.
1.1 misho 1710:
1.1.1.4 misho 1711: Fix regression in 2.61 which broke caching of CNAME
1712: chains. Thanks to Atul Gupta for the bug report.
1713:
1714: Allow the target of a --cname flag to be another --cname.
1715:
1716: Teach DHCPv6 about the RFC 4242 information-refresh-time
1717: option, and add parsing if the minutes, hours and days
1718: format for options. Thanks to Francois-Xavier Le Bail for
1719: the suggestion.
1720:
1721: Allow "w" (for week) as multiplier in lease times, as well
1722: as seconds, minutes, hours and days. Álvaro Gámez Machado
1723: spotted the omission.
1724:
1725: Update French translation. Thanks to Gildas Le Nadan.
1726:
1727: Allow a DBus service name to be given with --enable-dbus
1728: which overrides the default,
1729: uk.org.thekelleys.dnsmasq. Thanks to Mathieu
1730: Trudel-Lapierre for the patch.
1731:
1732: Set the "prefix on-link" bit in Router
1733: Advertisements. Thanks to Gui Iribarren for the patch.
1.1 misho 1734:
1735:
1736: version 2.62
1.1.1.4 misho 1737: Update German translation. Thanks to Conrad Kostecki.
1.1 misho 1738:
1.1.1.4 misho 1739: Cope with router-solict packets which don't have a valid
1740: source address. Thanks to Vladislav Grishenko for the patch.
1.1 misho 1741:
1.1.1.4 misho 1742: Fixed bug which caused missing periodic router
1743: advertisements with some configurations. Thanks to
1744: Vladislav Grishenko for the patch.
1.1 misho 1745:
1.1.1.4 misho 1746: Fixed bug which broke DHCPv6/RA with prefix lengths
1747: which are not divisible by 8. Thanks to Andre Coetzee
1748: for spotting this.
1.1 misho 1749:
1.1.1.4 misho 1750: Fix non-response to router-solicitations when
1751: router-advertisement configured, but DHCPv6 not
1752: configured. Thanks to Marien Zwart for the patch.
1.1 misho 1753:
1.1.1.4 misho 1754: Add --dns-rr, to allow arbitrary DNS resource records.
1.1 misho 1755:
1.1.1.4 misho 1756: Fixed bug which broke RA scheduling when an interface had
1757: two addresses in the same network. Thanks to Jim Bos for
1758: his help nailing this.
1.1 misho 1759:
1760: version 2.61
1.1.1.4 misho 1761: Re-write interface discovery code on *BSD to use
1762: getifaddrs. This is more portable, more straightforward,
1763: and allows us to find the prefix length for IPv6
1764: addresses.
1765:
1766: Add ra-names, ra-stateless and slaac keywords for DHCPv6.
1767: Dnsmasq can now synthesise AAAA records for dual-stack
1768: hosts which get IPv6 addresses via SLAAC. It is also now
1769: possible to use SLAAC and stateless DHCPv6, and to
1770: tell clients to use SLAAC addresses as well as DHCP ones.
1771: Thanks to Dave Taht for help with this.
1772:
1773: Add --dhcp-duid to allow DUID-EN uids to be used.
1774:
1775: Explicitly send DHCPv6 replies to the correct port, instead
1776: of relying on clients to send requests with the correct
1777: source address, since at least one client in the wild gets
1778: this wrong. Thanks to Conrad Kostecki for help tracking
1779: this down.
1780:
1781: Send a preference value of 255 in DHCPv6 replies when
1782: --dhcp-authoritative is in effect. This tells clients not
1783: to wait around for other DHCP servers.
1784:
1785: Better logging of DHCPv6 options.
1786:
1787: Add --host-record. Thanks to Rob Zwissler for the
1788: suggestion.
1789:
1790: Invoke the DHCP script with action "tftp" when a TFTP file
1791: transfer completes. The size of the file, address to which
1792: it was sent and complete pathname are supplied. Note that
1793: version 2.60 introduced some script incompatibilities
1794: associated with DHCPv6, and this is a further change. To
1795: be safe, scripts should ignore unknown actions, and if
1796: not IPv6-aware, should exit if the environment
1797: variable DNSMASQ_IAID is set. The use-case for this is
1798: to track netboot/install. Suggestion from Shantanu
1799: Gadgil.
1800:
1801: Update contrib/port-forward/dnsmasq-portforward to reflect
1802: the above.
1803:
1804: Set the environment variable DNSMASQ_LOG_DHCP when running
1805: the script id --log-dhcp is in effect, so that script can
1806: taylor their logging verbosity. Suggestion from Malte
1807: Forkel.
1808:
1809: Arrange that addresses specified with --listen-address
1810: work even if there is no interface carrying the
1811: address. This is chiefly useful for IPv4 loopback
1812: addresses, where any address in 127.0.0.0/8 is a valid
1813: loopback address, but normally only 127.0.0.1 appears on
1814: the lo interface. Thanks to Mathieu Trudel-Lapierre for
1815: the idea and initial patch.
1816:
1817: Fix crash, introduced in 2.60, when a DHCPINFORM is
1818: received from a network which has no valid dhcp-range.
1819: Thanks to Stephane Glondu for the bug report.
1820:
1821: Add a new DHCP lease time keyword, "deprecated" for
1822: --dhcp-range. This is only valid for IPv6, and sets the
1823: preferred lease time for both DHCP and RA to zero. The
1824: effect is that clients can continue to use the address
1825: for existing connections, but new connections will use
1826: other addresses, if they exist. This makes hitless
1827: renumbering at least possible.
1828:
1829: Fix bug in address6_available() which caused DHCPv6 lease
1830: acquisition to fail if more than one dhcp-range in use.
1831:
1832: Provide RDNSS and DNSSL data in router advertisements,
1833: using the settings provided for DHCP options
1834: option6:domain-search and option6:dns-server.
1835:
1836: Tweak logo/favicon.ico to add some transparency. Thanks to
1837: SamLT for work on this.
1838:
1839: Don't cache data from non-recursive nameservers, since it
1840: may erroneously look like a valid CNAME to a non-existent
1841: name. Thanks to Ben Winslow for finding this.
1842:
1843: Call SO_BINDTODEVICE on the DHCP socket(s) when doing DHCP
1844: on exactly one interface and --bind-interfaces is set. This
1845: makes the OpenStack use-case of one dnsmasq per virtual
1846: interface work. This is only available on Linux; it's not
1847: supported on other platforms. Thanks to Vishvananda Ishaya
1848: and the OpenStack team for the suggestion.
1849:
1850: Updated French translation. Thanks to Gildas Le Nadan.
1851:
1852: Give correct from-cache answers to explicit CNAME queries.
1853: Thanks to Rob Zwissler for spotting this.
1854:
1855: Add --tftp-lowercase option. Thanks to Oliver Rath for the
1856: patch.
1857:
1858: Ensure that the DBus DhcpLeaseUpdated events are generated
1859: when a lease goes through INIT_REBOOT state, even if the
1860: dhcp-script is not in use. Thanks to Antoaneta-Ecaterina
1861: Ene for the patch.
1862:
1863: Fix failure of TFTP over IPv4 on OpenBSD platform. Thanks
1864: to Brad Smith for spotting this.
1865:
1.1 misho 1866:
1867: version 2.60
1.1.1.4 misho 1868: Fix compilation problem in Mac OS X Lion. Thanks to Olaf
1869: Flebbe for the patch.
1870:
1871: Fix DHCP when using --listen-address with an IP address
1872: which is not the primary address of an interface.
1.1 misho 1873:
1.1.1.4 misho 1874: Add --dhcp-client-update option.
1.1 misho 1875:
1.1.1.4 misho 1876: Add Lua integration. Dnsmasq can now execute a DHCP
1877: lease-change script written in Lua. This needs to be
1878: enabled at compile time by setting HAVE_LUASCRIPT in
1879: src/config.h or running "make COPTS=-DHAVE_LUASCRIPT"
1880: Thanks to Jan-Piet Mens for the idea and proof-of-concept
1881: implementation.
1882:
1883: Tidied src/config.h to distinguish between
1884: platform-dependent compile-time options which are selected
1885: automatically, and builder-selectable compile time
1886: options. Document the latter better, and describe how to
1887: set them from the make command line.
1888:
1889: Tidied up IPPROTO_IP/SOL_IP (and IPv6 equivalent)
1890: confusion. IPPROTO_IP works everywhere now.
1891:
1892: Set TOS on DHCP sockets, this improves things on busy
1893: wireless networks. Thanks to Dave Taht for the patch.
1894:
1895: Determine VERSION automatically based on git magic:
1896: release tags or hash values.
1897:
1898: Improve start-up speed when reading large hosts files
1899: containing many distinct addresses.
1900:
1901: Fix problem if dnsmasq is started without the stdin,
1902: stdout and stderr file descriptors open. This can manifest
1903: itself as 100% CPU use. Thanks to Chris Moore for finding
1904: this.
1905:
1906: Fix shell-scripting bug in bld/pkg-wrapper. Thanks to
1907: Mark Mitchell for the patch.
1908:
1909: Allow the TFP server or boot server in --pxe-service, to
1910: be a domain name instead of an IP address. This allows for
1911: round-robin to multiple servers, in the same way as
1912: --dhcp-boot. A good suggestion from Cristiano Cumer.
1913:
1914: Support BUILDDIR variable in the Makefile. Allows builds
1915: for multiple archs from the same source tree with eg.
1916: make BUILDDIR=linux (relative to dnsmasq tree)
1917: make BUILDDIR=/tmp/openbsd (absolute path)
1918: If BUILDDIR is not set, compilation happens in the src
1919: directory, as before. Suggestion from Mark Mitchell.
1920:
1921: Support DHCPv6. Support is there for the sort of things
1922: the existing v4 server does, including tags, options,
1923: static addresses and relay support. Missing is prefix
1924: delegation, which is probably not required in the dnsmasq
1925: niche, and an easy way to accept prefix delegations from
1926: an upstream DHCPv6 server, which is. Future plans include
1927: support for DHCPv6 router option and MAC address option
1928: (to make selecting clients by MAC address work like IPv4).
1929: These will be added as the standards mature.
1930: This code has been tested, but this is the first release,
1931: so don't bet the farm on it just yet. Many thanks to all
1932: testers who have got it this far.
1933:
1934: Support IPv6 router advertisements. This is a
1935: simple-minded implementation, aimed at providing the
1936: vestigial RA needed to go alongside IPv6. Is picks up
1937: configuration from the DHCPv6 conf, and should just need
1938: enabling with --enable-ra.
1939:
1940: Fix long-standing wrinkle with --localise-queries that
1941: could result in wrong answers when DNS packets arrive
1942: via an interface other than the expected one. Thanks to
1943: Lorenzo Milesi and John Hanks for spotting this one.
1.1 misho 1944:
1.1.1.4 misho 1945: Update French translation. Thanks to Gildas Le Nadan.
1.1 misho 1946:
1.1.1.4 misho 1947: Update Polish translation. Thanks to Jan Psota.
1.1 misho 1948:
1949:
1950: version 2.59
1.1.1.4 misho 1951: Fix regression in 2.58 which caused failure to start up
1952: with some combinations of dnsmasq config and IPv6 kernel
1953: network config. Thanks to Brielle Bruns for the bug
1954: report.
1955:
1956: Improve dnsmasq's behaviour when network interfaces are
1957: still doing duplicate address detection (DAD). Previously,
1958: dnsmasq would wait up to 20 seconds at start-up for the
1959: DAD state to terminate. This is broken for bridge
1960: interfaces on recent Linux kernels, which don't start DAD
1961: until the bridge comes up, and so can take arbitrary
1962: time. The new behaviour lets dnsmasq poll for an arbitrary
1963: time whilst providing service on other interfaces. Thanks
1964: to Stephen Hemminger for pointing out the problem.
1.1 misho 1965:
1966:
1967: version 2.58
1.1.1.4 misho 1968: Provide a definition of the SA_SIZE macro where it's
1969: missing. Fixes build failure on openBSD.
1.1 misho 1970:
1.1.1.4 misho 1971: Don't include a zero terminator at the end of messages
1972: sent to /dev/log when /dev/log is a datagram socket.
1973: Thanks to Didier Rabound for spotting the problem.
1974:
1975: Add --dhcp-sequential-ip flag, to force allocation of IP
1976: addresses in ascending order. Note that the default
1977: pseudo-random mode is in general better but some
1978: server-deployment applications need this.
1979:
1980: Fix problem where a server-id of 0.0.0.0 is sent to a
1981: client when a dhcp-relay is in use if a client renews a
1982: lease after dnsmasq restart and before any clients on the
1983: subnet get a new lease. Thanks to Mike Ruiz for assistance
1984: in chasing this one down.
1985:
1986: Don't return NXDOMAIN to an AAAA query if we have CNAME
1987: which points to an A record only: NODATA is the correct
1988: reply in this case. Thanks to Tom Fernandes for spotting
1989: the problem.
1990:
1991: Relax the need to supply a netmask in --dhcp-range for
1992: networks which use a DHCP relay. Whilst this is still
1993: desirable, in the absence of a netmask dnsmasq will use
1994: a default based on the class (A, B, or C) of the address.
1995: This should at least remove a cause of mysterious failure
1996: for people using RFC1918 addresses and relays.
1997:
1998: Add support for Linux conntrack connection marking. If
1999: enabled with --conntrack, the connection mark for incoming
2000: DNS queries will be copied to the outgoing connections
2001: used to answer those queries. This allows clever firewall
2002: and accounting stuff. Only available if dnsmasq is
2003: compiled with HAVE_CONNTRACK and adds a dependency on
2004: libnetfilter-conntrack. Thanks to Ed Wildgoose for the
2005: initial idea, testing and sponsorship of this function.
2006:
2007: Provide a sane error message when someone attempts to
2008: match a tag in --dhcp-host.
2009:
2010: Tweak the behaviour of --domain-needed, to avoid problems
2011: with recursive nameservers downstream of dnsmasq. The new
2012: behaviour only stops A and AAAA queries, and returns
2013: NODATA rather than NXDOMAIN replies.
2014:
2015: Efficiency fix for very large DHCP configurations, thanks
2016: to James Gartrell and Mike Ruiz for help with this.
2017:
2018: Allow the TFTP-server address in --dhcp-boot to be a
2019: domain-name which is looked up in /etc/hosts. This can
2020: give multiple IP addresses which are used round-robin,
2021: thus doing TFTP server load-balancing. Thanks to Sushil
2022: Agrawal for the patch.
2023:
2024: When two tagged dhcp-options for a particular option
2025: number are both valid, use the one which is valid without
2026: a tag from the dhcp-range. Allows overriding of the value
2027: of a DHCP option for a particular host as well as
2028: per-network values. So
2029: --dhcp-range=set:interface1,......
2030: --dhcp-host=set:myhost,.....
2031: --dhcp-option=tag:interface1,option:nis-domain,"domain1"
2032: --dhcp-option=tag:myhost,option:nis-domain,"domain2"
2033: will set the NIS-domain to domain1 for hosts in the range, but
2034: override that to domain2 for a particular host.
2035:
2036: Fix bug which resulted in truncated files and timeouts for
2037: some TFTP transfers. The bug only occurs with netascii
2038: transfers and needs an unfortunate relationship between
2039: file size, blocksize and the number of newlines in the
2040: last block before it manifests itself. Many thanks to
2041: Alkis Georgopoulos for spotting the problem and providing
2042: a comprehensive test-case.
2043:
2044: Fix regression in TFTP server on *BSD platforms introduced
2045: in version 2.56, due to confusion with sockaddr
2046: length. Many thanks to Loic Pefferkorn for finding this.
2047:
2048: Support scope-ids in IPv6 addresses of nameservers from
2049: /etc/resolv.conf and in --server options. Eg
2050: nameserver fe80::202:a412:4512:7bbf%eth0 or
2051: server=fe80::202:a412:4512:7bbf%eth0. Thanks to
2052: Michael Stapelberg for the suggestion.
1.1 misho 2053:
1.1.1.4 misho 2054: Update Polish translation, thanks to Jan Psota.
1.1 misho 2055:
1.1.1.4 misho 2056: Update French translation. Thanks to Gildas Le Nadan.
1.1 misho 2057:
2058:
2059: version 2.57
1.1.1.4 misho 2060: Add patches to allow build under Android.
1.1 misho 2061:
1.1.1.4 misho 2062: Provide our own header for the DNS protocol, rather than
2063: relying on arpa/nameser.h. This has proved more or less
2064: defective over the years and the final straw is that it's
2065: effectively empty on Android.
2066:
2067: Fix regression in 2.56 which caused hex constants in
2068: configuration to be rejected if they contain the '*'
2069: wildcard.
2070:
2071: Correct wrong casts of arguments to ctype.h functions,
2072: isdigit(), isxdigit() etc. Thanks to Matthias Andree for
2073: spotting this.
2074:
2075: Allow build with IDN support independently from i18n.
2076: IDN support continues to be included automatically
2077: when i18n is included.
2078: 'make COPTS=-DHAVE_IDN' is the magic incantation.
2079:
2080: Modify check on extraneous command line junk (added in
2081: 2.56) so that it doesn't complain about extra _empty_
2082: arguments. Otherwise this breaks libvirt.
1.1 misho 2083:
2084:
2085: version 2.56
1.1.1.4 misho 2086: Add a patch to allow dnsmasq to get interface names right in a
2087: Solaris zone. Thanks to Dj Padzensky for this.
1.1 misho 2088:
1.1.1.4 misho 2089: Improve data-type parsing heuristics so that
2090: --dhcp-option=option:domain-search,.
2091: treats the value as a string and not an IP address.
2092: Thanks to Clemens Fischer for spotting that.
2093:
2094: Add IPv6 support to the TFTP server. Many thanks to Jan
2095: 'RedBully' Seiffert for the patches.
2096:
2097: Log DNS queries at level LOG_INFO, rather then
2098: LOG_DEBUG. This makes things consistent with DHCP
2099: logging. Thanks to Adam Pribyl for spotting the problem.
2100:
2101: Ensure that dnsmasq terminates cleanly when using
2102: --syslog-async even if it cannot make a connection to the
2103: syslogd.
2104:
2105: Add --add-mac option. This is to support currently
2106: experimental DNS filtering facilities. Thanks to Benjamin
2107: Petrin for the original patch.
2108:
2109: Fix bug which meant that tags were ignored in dhcp-range
2110: configuration specifying PXE-proxy service. Thanks to
2111: Cristiano Cumer for spotting this.
2112:
2113: Raise an error if there is extra junk, not part of an
2114: option, on the command line.
2115:
2116: Flag a couple of log messages in cache.c as coming from
2117: the DHCP subsystem. Thanks to Olaf Westrik for the patch.
2118:
2119: Omit timestamps from logs when a) logging to stderr and
2120: b) --keep-in-foreground is set. The logging facility on the
2121: other end of stderr can be assumed to supply them. Thanks
2122: to John Hallam for the patch.
2123:
2124: Don't complain about strings longer than 255 characters in
2125: --txt-record, just split the long strings into 255
2126: character chunks instead.
2127:
2128: Fix crash on double-free. This bug can only happen when
2129: dhcp-script is in use and then only in rare circumstances
2130: triggered by high DHCP transaction rate and a slow
2131: script. Thanks to Ferenc Wagner for finding the problem.
2132:
2133: Only log that a file has been sent by TFTP after the
2134: transfer has completed successfully.
2135:
2136: A good suggestion from Ferenc Wagner: extend
2137: the --domain option to allow this sort of thing:
2138: --domain=thekelleys.org.uk,192.168.0.0/24,local
2139: which automatically creates
2140: --local=/thekelleys.org.uk/
2141: --local=/0.168.192.in-addr.arpa/
2142:
2143: Tighten up syntax checking of hex constants in the config
2144: file. Thanks to Fred Damen for spotting this.
2145:
2146: Add dnsmasq logo/icon, contributed by Justin Swift. Many
2147: thanks for that.
2148:
2149: Never cache DNS replies which have the 'cd' bit set, or
2150: which result from queries forwarded with the 'cd' bit
2151: set. The 'cd' bit instructs a DNSSEC validating server
2152: upstream to ignore signature failures and return replies
2153: anyway. Without this change it's possible to pollute the
2154: dnsmasq cache with bad data by making a query with the
2155: 'cd' bit set and subsequent queries would return this data
2156: without its being marked as suspect. Thanks to Anders
2157: Kaseorg for pointing out this problem.
2158:
2159: Add --proxy-dnssec flag, for compliance with RFC
2160: 4035. Dnsmasq will now clear the 'ad' bit in answers returned
2161: from upstream validating nameservers unless this option is
2162: set.
2163:
2164: Allow a filename of "-" for --conf-file to read
2165: stdin. Suggestion from Timothy Redaelli.
2166:
2167: Rotate the order of SRV records in replies, to provide
2168: round-robin load balancing when all the priorities are
2169: equal. Thanks to Peter McKinney for the suggestion.
2170:
2171: Edit
2172: contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist
2173: so that it doesn't log all queries to a file by
2174: default. Thanks again to Peter McKinney.
2175:
2176: By default, setting an IPv4 address for a domain but not
2177: an IPv6 address causes dnsmasq to return
2178: a NODATA reply for IPv6 (or vice-versa). So
2179: --address=/google.com/1.2.3.4 stops IPv6 queries for
2180: *google.com from being forwarded. Make it possible to
2181: override this behaviour by defining the semantics if the
2182: same domain appears in both --server and --address.
2183: In that case, the --address has priority for the address
2184: family in which is appears, but the --server has priority
2185: of the address family which doesn't appear in --address
2186: So:
2187: --address=/google.com/1.2.3.4
2188: --server=/google.com/#
2189: will return 1.2.3.4 for IPv4 queries for *.google.com but
2190: forward IPv6 queries to the normal upstream nameserver.
2191: Similarly when setting an IPv6 address
2192: only this will allow forwarding of IPv4 queries. Thanks to
2193: William for pointing out the need for this.
2194:
2195: Allow more than one --dhcp-optsfile and --dhcp-hostsfile
2196: and make them understand directories as arguments in the
2197: same way as --addn-hosts. Suggestion from John Hanks.
2198:
2199: Ignore rebinding requests for leases we don't know
2200: about. Rebind is broadcast, so we might get to overhear a
2201: request meant for another DHCP server. NAKing this is
2202: wrong. Thanks to Brad D'Hondt for assistance with this.
2203:
2204: Fix cosmetic bug which produced strange output when
2205: dumping cache statistics with some configurations. Thanks
2206: to Fedor Kozhevnikov for spotting this.
1.1 misho 2207:
2208:
2209: version 2.55
1.1.1.4 misho 2210: Fix crash when /etc/ethers is in use. Thanks to
2211: Gianluigi Tiesi for finding this.
1.1 misho 2212:
1.1.1.4 misho 2213: Fix crash in netlink_multicast(). Thanks to Arno Wald for
2214: finding this one.
1.1 misho 2215:
1.1.1.4 misho 2216: Allow the empty domain "." in dhcp domain-search (119)
2217: options.
1.1 misho 2218:
2219:
2220: version 2.54
1.1.1.4 misho 2221: There is no version 2.54 to avoid confusion with 2.53,
2222: which incorrectly identifies itself as 2.54.
1.1 misho 2223:
2224:
2225: version 2.53
1.1.1.4 misho 2226: Fix failure to compile on Debian/kFreeBSD. Thanks to
2227: Axel Beckert and Petr Salinger.
1.1 misho 2228:
1.1.1.4 misho 2229: Fix code to avoid scary strict-aliasing warnings
2230: generated by gcc 4.4.
2231:
2232: Added FAQ entry warning about DHCP failures with Vista
2233: when firewalls block 255.255.255.255.
2234:
2235: Fixed bug which caused bad things to happen if a
2236: resolv.conf file which exists is subsequently removed.
2237: Thanks to Nikolai Saoukh for the patch.
2238:
2239: Rationalised the DHCP tag system. Every configuration item
2240: which can set a tag does so by adding "set:<tag>" and
2241: every configuration item which is conditional on a tag is
2242: made so by "tag:<tag>". The NOT operator changes to '!',
2243: which is a bit more intuitive too. Dhcp-host directives
2244: can set more than one tag now. The old '#' NOT,
2245: "net:" prefix and no-prefixes are still honoured, so
2246: no existing config file needs to be changed, but
2247: the documentation and new-style config files should be
2248: much less confusing.
2249:
2250: Added --tag-if to allow boolean operations on tags.
2251: This allows complicated logic to be clearer and more
2252: general. A great suggestion from Richard Voigt.
2253:
2254: Add broadcast/unicast information to DHCP logging.
2255:
2256: Allow --dhcp-broadcast to be unconditional.
2257:
2258: Fixed incorrect behaviour with NOT <tag> conditionals in
2259: dhcp-options. Thanks to Max Turkewitz for assistance
2260: finding this.
2261:
2262: If we send vendor-class encapsulated options based on the
2263: vendor-class supplied by the client, and no explicit
2264: vendor-class option is given, echo back the vendor-class
2265: from the client.
2266:
2267: Fix bug which stopped dnsmasq from matching both a
2268: circuitid and a remoteid. Thanks to Ignacio Bravo for
2269: finding this.
2270:
2271: Add --dhcp-proxy, which makes it possible to configure
2272: dnsmasq to use a DHCP relay agent as a full proxy, with
2273: all DHCP messages passing through the proxy. This is
2274: useful if the relay adds extra information to the packets
2275: it forwards, but cannot be configured with the RFC 5107
2276: server-override option.
2277:
2278: Added interface:<iface name> part to dhcp-range. The
2279: semantics of this are very odd at first sight, but it
2280: allows a single line of the form
2281: dhcp-range=interface:virt0,192.168.0.4,192.168.0.200
2282: to be added to dnsmasq configuration which then supplies
2283: DHCP and DNS services to that interface, without affecting
2284: what services are supplied to other interfaces and
2285: irrespective of the existence or lack of
2286: interface=<interface>
2287: lines elsewhere in the dnsmasq configuration. The idea is
2288: that such a line can be added automatically by libvirt
2289: or equivalent systems, without disturbing any manual
2290: configuration.
2291:
2292: Similarly to the above, allow --enable-tftp=<interface>
2293:
2294: Allow a TFTP root to be set separately for requests via
2295: different interfaces, --tftp-root=<path>,<interface>
2296:
2297: Correctly handle and log clashes between CNAMES and
2298: DNS names being given to DHCP leases. This fixes a bug
2299: which caused nonsense IP addresses to be logged. Thanks to
2300: Sergei Zhirikov for finding and analysing the problem.
2301:
2302: Tweak flush_log so as to avoid leaving the log
2303: file in non-blocking mode. O_NONBLOCK is a property of the
2304: file, not the process/descriptor.
2305:
2306: Fix contrib/Solaris10/create_package
2307: (/usr/man -> /usr/share/man) Thanks to Vita Batrla.
2308:
2309: Fix a problem where, if a client got a lease, then went
2310: to another subnet and got another lease, then moved back,
2311: it couldn't resume the old lease, but would instead get
2312: a new address. Thanks to Leonardo Rodrigues for spotting
2313: this and testing the fix.
2314:
2315: Fix weird bug which sometimes omitted certain characters
2316: from the start of quoted strings in dhcp-options. Thanks
2317: to Dayton Turner for spotting the problem.
2318:
2319: Add facility to redirect some domains to the standard
2320: upstream servers: this allows something like
2321: --server=/google.com/1.2.3.4 --server=/www.google.com/#
2322: which will send queries for *.google.com to 1.2.3.4,
2323: except *www.google.com which will be forwarded as usual.
2324: Thanks to AJ Weber for prompting this addition.
2325:
2326: Improve the hash-algorithm used to generate IP addresses
2327: from MAC addresses during initial DHCP address
2328: allocation. This improves performance when large numbers
2329: of hosts with similar MAC addresses all try and get an IP
2330: address at the same time. Thanks to Paul Smith for his
2331: work on this.
2332:
2333: Tweak DHCP code so that --bridge-interface can be used to
2334: select which IP alias of an interface should be used for
2335: DHCP purposes on Linux. If eth0 has an alias eth0:dhcp
2336: then adding --bridge-interface=eth0:dhcp,eth0 will use
2337: the address of eth0:dhcp to determine the correct subnet
2338: for DHCP address allocation. Thanks to Pawel Golaszewski
2339: for prompting this and Eric Cooper for further testing.
2340:
2341: Add --dhcp-generate-names. Suggestion by Ferenc Wagner.
2342:
2343: Tweak DNS server selection algorithm when there is more
2344: than one server available for a domain, eg.
2345: --server=/mydomain/1.1.1.1
2346: --server=/mydomain/2.2.2.2
2347: Thanks to Alberto Cuesta-Canada for spotting a weakness
2348: here.
2349:
2350: Add --max-ttl. Thanks to Fredrik Ringertz for the patch.
2351:
2352: Allow --log-facility=- to force all logging to
2353: stderr. Suggestion from Clemens Fischer.
2354:
2355: Fix regression which caused configuration like
2356: --address=/.domain.com/1.2.3.4 to be rejected. The dot to the
2357: left of the domain has been implied and not required for a
2358: long time, but it should be accepted for backward
2359: compatibility. Thanks to Andrew Burcin for spotting this.
2360:
2361: Add --rebind-domain-ok and --rebind-localhost-ok.
2362: Suggestion from Clemens Fischer.
2363:
2364: Log replies to queries of type TXT, when --log-queries
2365: is set.
2366:
2367: Fix compiler warnings when compiled with -DNO_DHCP. Thanks
2368: to Shantanu Gadgil for the patch.
2369:
2370: Updated French translation. Thanks to Gildas Le Nadan.
2371:
2372: Updated Polish translation. Thanks to Jan Psota.
2373:
2374: Updated German translation. Thanks to Matthias Andree.
2375:
2376: Added contrib/static-arp, thanks to Darren Hoo.
2377:
2378: Fix corruption of the domain when a name from /etc/hosts
2379: overrides one supplied by a DHCP client. Thanks to Fedor
2380: Kozhevnikov for spotting the problem.
1.1 misho 2381:
1.1.1.4 misho 2382: Updated Spanish translation. Thanks to Chris Chatham.
1.1 misho 2383:
2384:
2385: version 2.52
1.1.1.4 misho 2386: Work around a Linux kernel bug which insists that the
2387: length of the option passed to setsockopt must be at least
2388: sizeof(int) bytes, even if we're calling SO_BINDTODEVICE
2389: and the device name is "lo". Note that this is fixed
2390: in kernel 2.6.31, but the workaround is harmless and
2391: allows earlier kernels to be used. Also fix dnsmasq
2392: bug which reported the wrong address when this failed.
2393: Thanks to Fedor for finding this.
2394:
2395: The API for IPv6 PKTINFO changed around Linux kernel
2396: 2.6.14. Workaround the case where dnsmasq is compiled
2397: against newer headers, but then run on an old kernel:
2398: necessary for some *WRT distros.
2399:
2400: Re-read the set of network interfaces when re-loading
2401: /etc/resolv.conf if --bind-interfaces is not set. This
2402: handles the case that loopback interfaces do not exist
2403: when dnsmasq is first started.
2404:
2405: Tweak the PXE code to support port 4011. This should
2406: reduce broadcasts and make things more reliable when other
2407: servers are around. It also improves inter-operability
2408: with certain clients.
2409:
2410: Make a pxe-service configuration with no filename or boot
2411: service type legal: this does a local boot. eg.
2412: pxe-service=x86PC, "Local boot"
2413:
2414: Be more conservative in detecting "A for A"
2415: queries. Dnsmasq checks if the name in a type=A query looks
2416: like a dotted-quad IP address and answers the query itself
2417: if so, rather than forwarding it. Previously dnsmasq
2418: relied in the library function inet_addr() to convert
2419: addresses, and that will accept some things which are
2420: confusing in this context, like 1.2.3 or even just
2421: 1234. Now we only do A for A processing for four decimal
2422: numbers delimited by dots.
2423:
2424: A couple of tweaks to fix compilation on Solaris. Thanks
2425: to Joel Macklow for help with this.
2426:
2427: Another Solaris compilation tweak, needed for Solaris
2428: 2009.06. Thanks to Lee Essen for that.
2429:
2430: Added extract packaging stuff from Lee Essen to
2431: contrib/Solaris10.
2432:
2433: Increased the default limit on number of leases to 1000
2434: (from 150). This is mainly a defence against DoS attacks,
2435: and for the average "one for two class C networks"
2436: installation, IP address exhaustion does that just as
2437: well. Making the limit greater than the number of IP
2438: addresses available in such an installation removes a
2439: surprise which otherwise can catch people out.
2440:
2441: Removed extraneous trailing space in the value of the
2442: DNSMASQ_TIME_REMAINING DNSMASQ_LEASE_LENGTH and
2443: DNSMASQ_LEASE_EXPIRES environment variables. Thanks to
2444: Gildas Le Nadan for spotting this.
2445:
2446: Provide the network-id tags for a DHCP transaction to
2447: the lease-change script in the environment variable
2448: DNSMASQ_TAGS. A good suggestion from Gildas Le Nadan.
2449:
2450: Add support for RFC3925 "Vendor-Identifying Vendor
2451: Options". The syntax looks like this:
2452: --dhcp-option=vi-encap:<enterprise number>, .........
2453:
2454: Add support to --dhcp-match to allow matching against
2455: RFC3925 "Vendor-Identifying Vendor Classes". The syntax
2456: looks like this:
2457: --dhcp-match=tag,vi-encap<enterprise number>, <value>
2458:
2459: Add some application specific code to assist in
2460: implementing the Broadband forum TR069 CPE-WAN
2461: specification. The details are in contrib/CPE-WAN/README
2462:
2463: Increase the default DNS packet size limit to 4096, as
2464: recommended by RFC5625 section 4.4.3. This can be
2465: reconfigured using --edns-packet-max if needed. Thanks to
2466: Francis Dupont for pointing this out.
2467:
2468: Rewrite query-ids even for TSIG signed packets, since
2469: this is allowed by RFC5625 section 4.5.
2470:
2471: Use getopt_long by default on OS X. It has been supported
2472: since version 10.3.0. Thanks to Arek Dreyer for spotting
2473: this.
2474:
2475: Added up-to-date startup configuration for MacOSX/launchd
2476: in contrib/MacOSX-launchd. Thanks to Arek Dreyer for
2477: providing this.
2478:
2479: Fix link error when including Dbus but excluding DHCP.
2480: Thanks to Oschtan for the bug report.
2481:
2482: Updated French translation. Thanks to Gildas Le Nadan.
2483:
2484: Updated Polish translation. Thanks to Jan Psota.
2485:
2486: Updated Spanish translation. Thanks to Chris Chatham.
2487:
2488: Fixed confusion about domains, when looking up DHCP hosts
2489: in /etc/hosts. This could cause spurious "Ignoring
2490: domain..." messages. Thanks to Fedor Kozhevnikov for
2491: finding and analysing the problem.
2492:
1.1 misho 2493:
2494: version 2.51
1.1.1.4 misho 2495: Add support for internationalised DNS. Non-ASCII characters
2496: in domain names found in /etc/hosts, /etc/ethers and
2497: /etc/dnsmasq.conf will be correctly handled by translation to
2498: punycode, as specified in RFC3490. This function is only
2499: available if dnsmasq is compiled with internationalisation
2500: support, and adds a dependency on GNU libidn. Without i18n
2501: support, dnsmasq continues to be compilable with just
2502: standard tools. Thanks to Yves Dorfsman for the
2503: suggestion.
2504:
2505: Add two more environment variables for lease-change scripts:
2506: First, DNSMASQ_SUPPLIED_HOSTNAME; this is set to the hostname
2507: supplied by a client, even if the actual hostname used is
2508: over-ridden by dhcp-host or dhcp-ignore-names directives.
2509: Also DNSMASQ_RELAY_ADDRESS which gives the address of
2510: a DHCP relay, if used.
2511: Suggestions from Michael Rack.
2512:
2513: Fix regression which broke echo of relay-agent
2514: options. Thanks to Michael Rack for spotting this.
2515:
2516: Don't treat option 67 as being interchangeable with
2517: dhcp-boot parameters if it's specified as
2518: dhcp-option-force.
2519:
2520: Make the code to call scripts on lease-change compile-time
2521: optional. It can be switched off by editing src/config.h
2522: or building with "make COPTS=-DNO_SCRIPT".
2523:
2524: Make the TFTP server cope with filenames from Windows/DOS
2525: which use '\' as pathname separator. Thanks to Ralf for
2526: the patch.
2527:
2528: Updated Polish translation. Thanks to Jan Psota.
2529:
2530: Warn if an IP address is duplicated in /etc/ethers. Thanks
2531: to Felix Schwarz for pointing this out.
2532:
2533: Teach --conf-dir to take an option list of file suffices
2534: which will be ignored when scanning the directory. Useful
2535: for backup files etc. Thanks to Helmut Hullen for the
2536: suggestion.
2537:
2538: Add new DHCP option named tftpserver-address, which
2539: corresponds to the third argument of dhcp-boot. This
2540: allows the complete functionality of dhcp-boot to be
2541: replicated with dhcp-option. Useful when using
2542: dhcp-optsfile.
2543:
2544: Test which upstream nameserver to use every 10 seconds
2545: or 50 queries and not just when a query times out and
2546: is retried. This should improve performance when there
2547: is a slow nameserver in the list. Thanks to Joe for the
2548: suggestion.
2549:
2550: Don't do any PXE processing, even for clients with the
2551: correct vendorclass, unless at least one pxe-prompt or
2552: pxe-service option is given. This stops dnsmasq
2553: interfering with proxy PXE subsystems when it is just
2554: the DHCP server. Thanks to Spencer Clark for spotting this.
2555:
2556: Limit the blocksize used for TFTP transfers to a value
2557: which avoids packet fragmentation, based on the MTU of the
2558: local interface. Many netboot ROMs can't cope with
2559: fragmented packets.
1.1 misho 2560:
1.1.1.4 misho 2561: Honour dhcp-ignore configuration for PXE and proxy-PXE
2562: requests. Thanks to Niels Basjes for the bug report.
1.1 misho 2563:
1.1.1.4 misho 2564: Updated French translation. Thanks to Gildas Le Nadan.
1.1 misho 2565:
2566:
2567: version 2.50
1.1.1.4 misho 2568: Fix security problem which allowed any host permitted to
2569: do TFTP to possibly compromise dnsmasq by remote buffer
2570: overflow when TFTP enabled. Thanks to Core Security
2571: Technologies and Iván Arce, Pablo Hernán Jorge, Alejandro
2572: Pablo Rodriguez, Martín Coco, Alberto Soliño Testa and
2573: Pablo Annetta. This problem has Bugtraq id: 36121
2574: and CVE: 2009-2957
2575:
2576: Fix a problem which allowed a malicious TFTP client to
2577: crash dnsmasq. Thanks to Steve Grubb at Red Hat for
2578: spotting this. This problem has Bugtraq id: 36120 and
2579: CVE: 2009-2958
1.1 misho 2580:
2581:
2582: version 2.49
1.1.1.4 misho 2583: Fix regression in 2.48 which disables the lease-change
2584: script. Thanks to Jose Luis Duran for spotting this.
2585:
2586: Log TFTP "file not found" errors. These were not logged,
2587: since a normal PXELinux boot generates many of them, but
2588: the lack of the messages seems to be more confusing than
2589: routinely seeing them when there is no real error.
1.1 misho 2590:
1.1.1.4 misho 2591: Update Spanish translation. Thanks to Chris Chatham.
1.1 misho 2592:
2593:
2594: version 2.48
1.1.1.4 misho 2595: Archived the extensive, backwards, changelog to
2596: CHANGELOG.archive. The current changelog now runs from
2597: version 2.43 and runs conventionally.
2598:
2599: Fixed bug which broke binding of servers to physical
2600: interfaces when interface names were longer than four
2601: characters. Thanks to MURASE Katsunori for the patch.
2602:
2603: Fixed netlink code to check that messages come from the
2604: correct source, and not another userspace process. Thanks
2605: to Steve Grubb for the patch.
2606:
2607: Maintainability drive: removed bug and missing feature
2608: workarounds for some old platforms. Solaris 9, OpenBSD
2609: older than 4.1, Glibc older than 2.2, Linux 2.2.x and
2610: DBus older than 1.1.x are no longer supported.
2611:
2612: Don't read included configuration files more than once:
2613: allows complex configuration structures without problems.
2614:
2615: Mark log messages from the various subsystems in dnsmasq:
2616: messages from the DHCP subsystem now have the ident string
2617: "dnsmasq-dhcp" and messages from TFTP have ident
2618: "dnsmasq-tftp". Thanks to Olaf Westrik for the patch.
2619:
2620: Fix possible infinite DHCP protocol loop when an IP
2621: address nailed to a hostname (not a MAC address) and a
2622: host sometimes provides the name, sometimes not.
2623:
2624: Allow --addn-hosts to take a directory: all the files
2625: in the directory are read. Thanks to Phil Cornelius for
2626: the suggestion.
2627:
2628: Support --bridge-interface on all platforms, not just BSD.
2629:
2630: Added support for advanced PXE functions. It's now
2631: possible to define a prompt and menu options which will
2632: be displayed when a client PXE boots. It's also possible to
2633: hand-off booting to other boot servers. Proxy-DHCP, where
2634: dnsmasq just supplies the PXE information and another DHCP
2635: server does address allocation, is also allowed. See the
2636: --pxe-prompt and --pxe-service keywords. Thanks to
2637: Alkis Georgopoulos for the suggestion and Guilherme Moro
2638: and Michael Brown for assistance.
2639:
2640: Improvements to DHCP logging. Thanks to Tom Metro for
2641: useful suggestions.
2642:
2643: Add ability to build dnsmasq without DHCP support. To do
2644: this, edit src/config.h or build with
2645: "make COPTS=-DNO_DHCP". Thanks to Mahavir Jain for the patch.
2646:
2647: Added --test command-line switch - syntax check
2648: configuration files only.
2649:
2650: Updated French translation. Thanks to Gildas Le Nadan.
1.1 misho 2651:
2652:
2653: version 2.47
1.1.1.4 misho 2654: Updated French translation. Thanks to Gildas Le Nadan.
1.1 misho 2655:
1.1.1.4 misho 2656: Fixed interface enumeration code to work on NetBSD
2657: 5.0. Thanks to Roy Marples for the patch.
1.1 misho 2658:
1.1.1.4 misho 2659: Updated config.h to use the same location for the lease
2660: file on NetBSD as the other *BSD variants. Also allow
2661: LEASEFILE and CONFFILE symbols to be overridden in CFLAGS.
2662:
2663: Handle duplicate address detection on IPv6 more
2664: intelligently. In IPv6, an interface can have an address
2665: which is not usable, because it is still undergoing DAD
2666: (such addresses are marked "tentative"). Attempting to
2667: bind to an address in this state returns an error,
2668: EADDRNOTAVAIL. Previously, on getting such an error,
2669: dnsmasq would silently abandon the address, and never
2670: listen on it. Now, it retries once per second for 20
2671: seconds before generating a fatal error. 20 seconds should
2672: be long enough for any DAD process to complete, but can be
2673: adjusted in src/config.h if necessary. Thanks to Martin
2674: Krafft for the bug report.
2675:
2676: Add DBus introspection. Patch from Jeremy Laine.
2677:
2678: Update Dbus configuration file. Patch from Colin Walters.
2679: Fix for this bug:
2680: http://bugs.freedesktop.org/show_bug.cgi?id=18961
2681:
2682: Support arbitrarily encapsulated DHCP options, suggestion
2683: and initial patch from Samium Gromoff. This is useful for
2684: (eg) iPXE, which expect all its private options to be
2685: encapsulated inside a single option 175. So, eg,
2686:
2687: dhcp-option = encap:175, 190, "iscsi-client0"
2688: dhcp-option = encap:175, 191, "iscsi-client0-secret"
2689:
2690: will provide iSCSI parameters to iPXE.
2691:
2692: Enhance --dhcp-match to allow testing of the contents of a
2693: client-sent option, as well as its presence. This
2694: application in mind for this is RFC 4578
2695: client-architecture specifiers, but it's generally useful.
2696: Joey Korkames suggested the enhancement.
2697:
2698: Move from using the IP_XMIT_IF ioctl to IP_BOUND_IF on
2699: OpenSolaris. Thanks to Bastian Machek for the heads-up.
2700:
2701: No longer complain about blank lines in
2702: /etc/ethers. Thanks to Jon Nelson for the patch.
2703:
2704: Fix binding of servers to physical devices, eg
2705: --server=/domain/1.2.3.4@eth0 which was broken from 2.43
2706: onwards unless --query-port=0 set. Thanks to Peter Naulls
2707: for the bug report.
2708:
2709: Reply to DHCPINFORM requests even when the supplied ciaddr
2710: doesn't fall in any dhcp-range. In this case it's not
2711: possible to supply a complete configuration, but
2712: individually-configured options (eg PAC) may be useful.
2713:
2714: Allow the source address of an alias to be a range:
2715: --alias=192.168.0.0,10.0.0.0,255.255.255.0 maps the whole
2716: subnet 192.168.0.0->192.168.0.255 to 10.0.0.0->10.0.0.255,
2717: as before.
2718: --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
2719: maps only the 192.168.0.10->192.168.0.40 region. Thanks to
2720: Ib Uhrskov for the suggestion.
2721:
2722: Don't dynamically allocate DHCP addresses which may break
2723: Windows. Addresses which end in .255 or .0 are broken in
2724: Windows even when using supernetting.
2725: --dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0 means
2726: 192.168.0.255 is a valid IP address, but not for Windows.
2727: See Microsoft KB281579. We therefore no longer allocate
2728: these addresses to avoid hard-to-diagnose problems.
2729:
2730: Update Polish translation. Thanks to Jan Psota.
2731:
2732: Delete the PID-file when dnsmasq shuts down. Note that by
2733: this time, dnsmasq is normally not running as root, so
2734: this will fail if the PID-file is stored in a root-owned
2735: directory; such failure is silently ignored. To take
2736: advantage of this feature, the PID-file must be stored in a
2737: directory owned and write-able by the user running
2738: dnsmasq.
1.1 misho 2739:
2740:
2741: version 2.46
1.1.1.4 misho 2742: Allow --bootp-dynamic to take a netid tag, so that it may
2743: be selectively enabled. Thanks to Olaf Westrik for the
2744: suggestion.
2745:
2746: Remove ISC-leasefile reading code. This has been
2747: deprecated for a long time, and last time I removed it, it
2748: ended up going back by request of one user. This time,
2749: it's gone for good; otherwise it would need to be
2750: re-worked to support multiple domains (see below).
2751:
2752: Support DHCP clients in multiple DNS domains. This is a
2753: long-standing request. Clients are assigned to a domain
2754: based in their IP address.
2755:
2756: Add --dhcp-fqdn flag, which changes behaviour if DNS names
2757: assigned to DHCP clients. When this is set, there must be
2758: a domain associated with each client, and only
2759: fully-qualified domain names are added to the DNS. The
2760: advantage is that the only the FQDN needs to be unique,
2761: so that two or more DHCP clients can share a hostname, as
2762: long as they are in different domains.
2763:
2764: Set environment variable DNSMASQ_DOMAIN when invoking
2765: lease-change script. This may be useful information to
2766: have now that it's variable.
2767:
2768: Tighten up data-checking code for DNS packet
2769: handling. Thanks to Steve Dodd who found certain illegal
2770: packets which could crash dnsmasq. No memory overwrite was
2771: possible, so this is not a security issue beyond the DoS
2772: potential.
2773:
2774: Update example config dhcp option 47, the previous
2775: suggestion generated an illegal, zero-length,
2776: option. Thanks to Matthias Andree for finding this.
2777:
2778: Rewrite hosts-file reading code to remove the limit of
2779: 1024 characters per line. John C Meuser found this.
2780:
2781: Create a net-id tag with the name of the interface on
2782: which the DHCP request was received.
2783:
2784: Fixed minor memory leak in DBus code, thanks to Jeremy
2785: Laine for the patch.
2786:
2787: Emit DBus signals as the DHCP lease database
2788: changes. Thanks to Jeremy Laine for the patch.
2789:
2790: Allow for more that one MAC address in a dhcp-host
2791: line. This configuration tells dnsmasq that it's OK to
2792: abandon a DHCP lease of the fixed address to one MAC
2793: address, if another MAC address in the dhcp-host statement
2794: asks for an address. This is useful to give a fixed
2795: address to a host which has two network interfaces
2796: (say, a laptop with wired and wireless interfaces.)
2797: It's very important to ensure that only one interface
2798: at a time is up, since dnsmasq abandons the first lease
2799: and re-uses the address before the leased time has
2800: elapsed. John Gray suggested this.
2801:
2802: Tweak the response to a DHCP request packet with a wrong
2803: server-id when --dhcp-authoritative is set; dnsmasq now
2804: returns a DHCPNAK, rather than silently ignoring the
2805: packet. Thanks to Chris Marget for spotting this
2806: improvement.
2807:
2808: Add --cname option. This provides a limited alias
2809: function, usable for DHCP names. Thanks to AJ Weber for
2810: suggestions on this.
2811:
2812: Updated contrib/webmin with latest version from Neil
2813: Fisher.
2814:
2815: Updated Polish translation. Thanks to Jan Psota.
1.1 misho 2816:
1.1.1.4 misho 2817: Correct the text names for DHCP options 64 and 65 to be
2818: "nis+-domain" and "nis+-servers".
1.1 misho 2819:
1.1.1.4 misho 2820: Updated Spanish translation. Thanks to Chris Chatham.
2821:
2822: Force re-reading of /etc/resolv.conf when an "interface
2823: up" event occurs.
1.1 misho 2824:
2825:
2826: version 2.45
1.1.1.4 misho 2827: Fix total DNS failure in release 2.44 unless --min-port
2828: specified. Thanks to Steven Barth and Grant Coady for
2829: bugreport. Also reject out-of-range port spec, which could
2830: break things too: suggestion from Gilles Espinasse.
2831:
1.1 misho 2832:
2833: version 2.44
1.1.1.4 misho 2834: Fix crash when unknown client attempts to renew a DHCP
2835: lease, problem introduced in version 2.43. Thanks to
2836: Carlos Carvalho for help chasing this down.
1.1 misho 2837:
1.1.1.4 misho 2838: Fix potential crash when a host which doesn't have a lease
2839: does DHCPINFORM. Again introduced in 2.43. This bug has
2840: never been reported in the wild.
1.1 misho 2841:
1.1.1.4 misho 2842: Fix crash in netlink code introduced in 2.43. Thanks to
2843: Jean Wolter for finding this.
1.1 misho 2844:
1.1.1.4 misho 2845: Change implementation of min_port to work even if min-port
2846: is large.
1.1 misho 2847:
1.1.1.4 misho 2848: Patch to enable compilation of latest Mac OS X. Thanks to
2849: David Gilman.
1.1 misho 2850:
1.1.1.4 misho 2851: Update Spanish translation. Thanks to Christopher Chatham.
1.1 misho 2852:
2853:
2854: version 2.43
1.1.1.4 misho 2855: Updated Polish translation. Thanks to Jan Psota.
1.1 misho 2856:
1.1.1.4 misho 2857: Flag errors when configuration options are repeated
2858: illegally.
1.1 misho 2859:
1.1.1.4 misho 2860: Further tweaks for GNU/kFreeBSD
1.1 misho 2861:
1.1.1.4 misho 2862: Add --no-wrap to msgmerge call - provides nicer .po file
2863: format.
2864:
2865: Honour lease-time spec in dhcp-host lines even for
2866: BOOTP. The user is assumed to known what they are doing in
2867: this case. (Hosts without the time spec still get infinite
2868: leases for BOOTP, over-riding the default in the
2869: dhcp-range.) Thanks to Peter Katzmann for uncovering this.
2870:
2871: Fix problem matching relay-agent ids. Thanks to Michael
2872: Rack for the bug report.
2873:
2874: Add --naptr-record option. Suggestion from Johan
2875: Bergquist.
2876:
2877: Implement RFC 5107 server-id-override DHCP relay agent
2878: option.
2879:
2880: Apply patches from Stefan Kruger for compilation on
2881: Solaris 10 under Sun studio.
2882:
2883: Yet more tweaking of Linux capability code, to suppress
2884: pointless wingeing from kernel 2.6.25 and above.
2885:
2886: Improve error checking during startup. Previously, some
2887: errors which occurred during startup would be worked
2888: around, with dnsmasq still starting up. Some were logged,
2889: some silent. Now, they all cause a fatal error and dnsmasq
2890: terminates with a non-zero exit code. The errors are those
2891: associated with changing uid and gid, setting process
2892: capabilities and writing the pidfile. Thanks to Uwe
2893: Gansert and the Suse security team for pointing out
2894: this improvement, and Bill Reimers for good implementation
2895: suggestions.
2896:
2897: Provide NO_LARGEFILE compile option to switch off largefile
2898: support when compiling against versions of uclibc which
2899: don't support it. Thanks to Stephane Billiart for the patch.
2900:
2901: Implement random source ports for interactions with
2902: upstream nameservers. New spoofing attacks have been found
2903: against nameservers which do not do this, though it is not
2904: clear if dnsmasq is vulnerable, since to doesn't implement
2905: recursion. By default dnsmasq will now use a different
2906: source port (and socket) for each query it sends
2907: upstream. This behaviour can suppressed using the
2908: --query-port option, and the old default behaviour
2909: restored using --query-port=0. Explicit source-port
2910: specifications in --server configs are still honoured.
2911:
2912: Replace the random number generator, for better
2913: security. On most BSD systems, dnsmasq uses the
2914: arc4random() RNG, which is secure, but on other platforms,
2915: it relied on the C-library RNG, which may be
2916: guessable and therefore allow spoofing. This release
2917: replaces the libc RNG with the SURF RNG, from Daniel
2918: J. Berstein's DJBDNS package.
2919:
2920: Don't attempt to change user or group or set capabilities
2921: if dnsmasq is run as a non-root user. Without this, the
2922: change from soft to hard errors when these fail causes
2923: problems for non-root daemons listening on high
2924: ports. Thanks to Patrick McLean for spotting this.
1.1 misho 2925:
1.1.1.4 misho 2926: Updated French translation. Thanks to Gildas Le Nadan.
1.1 misho 2927:
2928:
2929: version 2.42
1.1.1.4 misho 2930: The changelog for version 2.42 and earlier is
2931: available in CHANGELOG.archive.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>