version 1.1, 2013/07/29 19:37:40
|
version 1.1.1.2, 2014/06/15 16:31:38
|
Line 1
|
Line 1
|
|
version 2.71 |
|
Subtle change to error handling to help DNSSEC validation |
|
when servers fail to provide NODATA answers for |
|
non-existent DS records. |
|
|
|
Tweak code which removes DNSSEC records from answers when |
|
not required. Fixes broken answers when additional section |
|
has real records in it. Thanks to Marco Davids for the bug |
|
report. |
|
|
|
Fix DNSSEC validation of ANY queries. Thanks to Marco Davids |
|
for spotting that too. |
|
|
|
Fix total DNS failure and 100% CPU use if cachesize set to zero, |
|
regression introduced in 2.69. Thanks to James Hunt and |
|
the Ubuntu crowd for assistance in fixing this. |
|
|
|
|
|
version 2.70 |
|
Fix crash, introduced in 2.69, on TCP request when dnsmasq |
|
compiled with DNSSEC support, but running without DNSSEC |
|
enabled. Thanks to Manish Sing for spotting that one. |
|
|
|
Fix regression which broke ipset functionality. Thanks to |
|
Wang Jian for the bug report. |
|
|
|
|
|
version 2.69 |
|
Implement dynamic interface discovery on *BSD. This allows |
|
the contructor: syntax to be used in dhcp-range for DHCPv6 |
|
on the BSD platform. Thanks to Matthias Andree for |
|
valuable research on how to implement this. |
|
|
|
Fix infinite loop associated with some --bogus-nxdomain |
|
configs. Thanks fogobogo for the bug report. |
|
|
|
Fix missing RA RDNS option with configuration like |
|
--dhcp-option=option6:23,[::] Thanks to Tsachi Kimeldorfer |
|
for spotting the problem. |
|
|
|
Add [fd00::] and [fe80::] as special addresses in DHCPv6 |
|
options, analogous to [::]. [fd00::] is replaced with the |
|
actual ULA of the interface on the machine running |
|
dnsmasq, [fe80::] with the link-local address. |
|
Thanks to Tsachi Kimeldorfer for championing this. |
|
|
|
DNSSEC validation and caching. Dnsmasq needs to be |
|
compiled with this enabled, with |
|
|
|
make dnsmasq COPTS=-DHAVE_DNSSEC |
|
|
|
this add dependencies on the nettle crypto library and the |
|
gmp maths library. It's possible to have these linked |
|
statically with |
|
|
|
make dnsmasq COPTS='-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC' |
|
|
|
which bloats the dnsmasq binary, but saves the size of |
|
the shared libraries which are much bigger. |
|
|
|
To enable, DNSSEC, you will need a set of |
|
trust-anchors. Now that the TLDs are signed, this can be |
|
the keys for the root zone, and for convenience they are |
|
included in trust-anchors.conf in the dnsmasq |
|
distribution. You should of course check that these are |
|
legitimate and up-to-date. So, adding |
|
|
|
conf-file=/path/to/trust-anchors.conf |
|
dnssec |
|
|
|
to your config is all thats needed to get things |
|
working. The upstream nameservers have to be DNSSEC-capable |
|
too, of course. Many ISP nameservers aren't, but the |
|
Google public nameservers (8.8.8.8 and 8.8.4.4) are. |
|
When DNSSEC is configured, dnsmasq validates any queries |
|
for domains which are signed. Query results which are |
|
bogus are replaced with SERVFAIL replies, and results |
|
which are correctly signed have the AD bit set. In |
|
addition, and just as importantly, dnsmasq supplies |
|
correct DNSSEC information to clients which are doing |
|
their own validation, and caches DNSKEY, DS and RRSIG |
|
records, which significantly improve the performance of |
|
downstream validators. Setting --log-queries will show |
|
DNSSEC in action. |
|
|
|
If a domain is returned from an upstream nameserver without |
|
DNSSEC signature, dnsmasq by default trusts this. This |
|
means that for unsigned zone (still the majority) there |
|
is effectively no cost for having DNSSEC enabled. Of course |
|
this allows an attacker to replace a signed record with a |
|
false unsigned record. This is addressed by the |
|
--dnssec-check-unsigned flag, which instructs dnsmasq |
|
to prove that an unsigned record is legitimate, by finding |
|
a secure proof that the zone containing the record is not |
|
signed. Doing this has costs (typically one or two extra |
|
upstream queries). It also has a nasty failure mode if |
|
dnsmasq's upstream nameservers are not DNSSEC capable. |
|
Without --dnssec-check-unsigned using such an upstream |
|
server will simply result in not queries being validated; |
|
with --dnssec-check-unsigned enabled and a |
|
DNSSEC-ignorant upstream server, _all_ queries will fail. |
|
|
|
Note that DNSSEC requires that the local time is valid and |
|
accurate, if not then DNSSEC validation will fail. NTP |
|
should be running. This presents a problem for routers |
|
without a battery-backed clock. To set the time needs NTP |
|
to do DNS lookups, but lookups will fail until NTP has run. |
|
To address this, there's a flag, --dnssec-no-timecheck |
|
which disables the time checks (only) in DNSSEC. When dnsmasq |
|
is started and the clock is not synced, this flag should |
|
be used. As soon as the clock is synced, SIGHUP dnsmasq. |
|
The SIGHUP clears the cache of partially-validated data and |
|
resets the no-timecheck flag, so that all DNSSEC checks |
|
henceforward will be complete. |
|
|
|
The development of DNSSEC in dnsmasq was started by |
|
Giovanni Bajo, to whom huge thanks are owed. It has been |
|
supported by Comcast, whose techfund grant has allowed for |
|
an invaluable period of full-time work to get it to |
|
a workable state. |
|
|
|
Add --rev-server. Thanks to Dave Taht for suggesting this. |
|
|
|
Add --servers-file. Allows dynamic update of upstream servers |
|
full access to configuration. |
|
|
|
Add --local-service. Accept DNS queries only from hosts |
|
whose address is on a local subnet, ie a subnet for which |
|
an interface exists on the server. This option |
|
only has effect if there are no --interface --except-interface, |
|
--listen-address or --auth-server options. It is intended |
|
to be set as a default on installation, to allow |
|
unconfigured installations to be useful but also safe from |
|
being used for DNS amplification attacks. |
|
|
|
Fix crashes in cache_get_cname_target() when dangling CNAMEs |
|
encountered. Thanks to Andy and the rt-n56u project for |
|
find this and helping to chase it down. |
|
|
|
Fix wrong RCODE in authoritative DNS replies to PTR queries. The |
|
correct answer was included, but the RCODE was set to NXDOMAIN. |
|
Thanks to Craig McQueen for spotting this. |
|
|
|
Make statistics available as DNS queries in the .bind TLD as |
|
well as logging them. |
|
|
|
|
|
version 2.68 |
|
Use random addresses for DHCPv6 temporary address |
|
allocations, instead of algorithmically determined stable |
|
addresses. |
|
|
|
Fix bug which meant that the DHCPv6 DUID was not available |
|
in DHCP script runs during the lifetime of the dnsmasq |
|
process which created the DUID de-novo. Once the DUID was |
|
created and stored in the lease file and dnsmasq |
|
restarted, this bug disappeared. |
|
|
|
Fix bug introduced in 2.67 which could result in erroneous |
|
NXDOMAIN returns to CNAME queries. |
|
|
|
Fix build failures on MacOS X and openBSD. |
|
|
|
Allow subnet specifications in --auth-zone to be interface |
|
names as well as address literals. This makes it possible |
|
to configure authoritative DNS when local address ranges |
|
are dynamic and works much better than the previous |
|
work-around which exempted contructed DHCP ranges from the |
|
IP address filtering. As a consequence, that work-around |
|
is removed. Under certain circumstances, this change wil |
|
break existing configuration: if you're relying on the |
|
contructed-range exception, you need to change --auth-zone |
|
to specify the same interface as is used to construct your |
|
DHCP ranges, probably with a trailing "/6" like this: |
|
--auth-zone=example.com,eth0/6 to limit the addresses to |
|
IPv6 addresses of eth0. |
|
|
|
Fix problems when advertising deleted IPv6 prefixes. If |
|
the prefix is deleted (rather than replaced), it doesn't |
|
get advertised with zero preferred time. Thanks to Tsachi |
|
for the bug report. |
|
|
|
Fix segfault with some locally configured CNAMEs. Thanks |
|
to Andrew Childs for spotting the problem. |
|
|
|
Fix memory leak on re-reading /etc/hosts and friends, |
|
introduced in 2.67. |
|
|
|
Check the arrival interface of incoming DNS and TFTP |
|
requests via IPv6, even in --bind-interfaces mode. This |
|
isn't possible for IPv4 and can generate scary warnings, |
|
but as it's always possible for IPv6 (the API always |
|
exists) then we should do it always. |
|
|
|
Tweak the rules on prefix-lengths in --dhcp-range for |
|
IPv6. The new rule is that the specified prefix length |
|
must be larger than or equal to the prefix length of the |
|
corresponding address on the local interface. |
|
|
|
|
|
version 2.67 |
|
Fix crash if upstream server returns SERVFAIL when |
|
--conntrack in use. Thanks to Giacomo Tazzari for finding |
|
this and supplying the patch. |
|
|
|
Repair regression in 2.64. That release stopped sending |
|
lease-time information in the reply to DHCPINFORM |
|
requests, on the correct grounds that it was a standards |
|
violation. However, this broke the dnsmasq-specific |
|
dhcp_lease_time utility. Now, DHCPINFORM returns |
|
lease-time only if it's specifically requested |
|
(maintaining standards) and the dhcp_lease_time utility |
|
has been taught to ask for it (restoring functionality). |
|
|
|
Fix --dhcp-match, --dhcp-vendorclass and --dhcp-userclass |
|
to work with BOOTP and well as DHCP. Thanks to Peter |
|
Korsgaard for spotting the problem. |
|
|
|
Add --synth-domain. Thanks to Vishvananda Ishaya for |
|
suggesting this. |
|
|
|
Fix failure to compile ipset.c if old kernel headers are |
|
in use. Thanks to Eugene Rudoy for pointing this out. |
|
|
|
Handle IPv4 interface-address labels in Linux. These are |
|
often used to emulate the old IP-alias addresses. Before, |
|
using --interface=eth0 would service all the addresses of |
|
eth0, including ones configured as aliases, which appear |
|
in ifconfig as eth0:0. Now, only addresses with the label |
|
eth0 are active. This is not backwards compatible: if you |
|
want to continue to bind the aliases too, you need to add |
|
eg. --interface=eth0:0 to the config. |
|
|
|
Fix "failed to set SO_BINDTODEVICE on DHCP socket: Socket |
|
operation on non-socket" error on startup with |
|
configurations which have exactly one --interface option |
|
and do RA but _not_ DHCPv6. Thanks to Trever Adams for the |
|
bug report. |
|
|
|
Generalise --interface-name to cope with IPv6 addresses |
|
and multiple addresses per interface per address family. |
|
|
|
Fix option parsing for --dhcp-host, which was generating a |
|
spurious error when all seven possible items were |
|
included. Thanks to Zhiqiang Wang for the bug report. |
|
|
|
Remove restriction on prefix-length in --auth-zone. Thanks |
|
to Toke Hoiland-Jorgensen for suggesting this. |
|
|
|
Log when the maximum number of concurrent DNS queries is |
|
reached. Thanks to Marcelo Salhab Brogliato for the patch. |
|
|
|
If wildcards are used in --interface, don't assume that |
|
there will only ever be one available interface for DHCP |
|
just because there is one at start-up. More may appear, so |
|
we can't use SO_BINDTODEVICE. Thanks to Natrio for the bug |
|
report. |
|
|
|
Increase timeout/number of retries in TFTP to accomodate |
|
AudioCodes Voice Gateways doing streaming writes to flash. |
|
Thanks to Damian Kaczkowski for spotting the problem. |
|
|
|
Fix crash with empty DHCP string options when adding zero |
|
terminator. Thanks to Patrick McLean for the bug report. |
|
|
|
Allow hostnames to start with a number, as allowed in |
|
RFC-1123. Thanks to Kyle Mestery for the patch. |
|
|
|
Fixes to DHCP FQDN option handling: don't terminate FQDN |
|
if domain not known and allow a FQDN option with blank |
|
name to request that a FQDN option is returned in the |
|
reply. Thanks to Roy Marples for the patch. |
|
|
|
Make --clear-on-reload apply to setting upstream servers |
|
via DBus too. |
|
|
|
When the address which triggered the construction of an |
|
advertised IPv6 prefix disappears, continue to advertise |
|
the prefix for up to 2 hours, with the preferred lifetime |
|
set to zero. This satisfies RFC 6204 4.3 L-13 and makes |
|
things work better if a prefix disappears without being |
|
deprecated first. Thanks to Uwe Schindler for persuasively |
|
arguing for this. |
|
|
|
Fix MAC address enumeration on *BSD. Thanks to Brad Smith |
|
for the bug report. |
|
|
|
Support RFC-4242 information-refresh-time options in the |
|
reply to DHCPv6 information-request. The lease time of the |
|
smallest valid dhcp-range is sent. Thanks to Uwe Schindler |
|
for suggesting this. |
|
|
|
Make --listen-address higher priority than --except-interface |
|
in all circumstances. Thanks to Thomas Hood for the bugreport. |
|
|
|
Provide independent control over which interfaces get TFTP |
|
service. If enable-tftp is given a list of interfaces, then TFTP |
|
is provided on those. Without the list, the previous behaviour |
|
(provide TFTP to the same interfaces we provide DHCP to) |
|
is retained. Thanks to Lonnie Abelbeck for the suggestion. |
|
|
|
Add --dhcp-relay config option. Many thanks to vtsl.net |
|
for sponsoring this development. |
|
|
|
Fix crash with empty tag: in --dhcp-range. Thanks to |
|
Kaspar Schleiser for the bug report. |
|
|
|
Add "baseline" and "bloatcheck" makefile targets, for |
|
revealing size changes during development. Thanks to |
|
Vladislav Grishenko for the patch. |
|
|
|
Cope with DHCPv6 clients which send REQUESTs without |
|
address options - treat them as SOLICIT with rapid commit. |
|
|
|
Support identification of clients by MAC address in |
|
DHCPv6. When using a relay, the relay must support RFC |
|
6939 for this to work. It always works for directly |
|
connected clients. Thanks to Vladislav Grishenko |
|
for prompting this feature. |
|
|
|
Remove the rule for constructed DHCP ranges that the local |
|
address must be either the first or last address in the |
|
range. This was originally to avoid SLAAC addresses, but |
|
we now explicitly autoconfig and privacy addresses instead. |
|
|
|
Update Polish translation. Thanks to Jan Psota. |
|
|
|
Fix problem in DHCPv6 vendorclass/userclass matching |
|
code. Thanks to Tanguy Bouzeloc for the patch. |
|
|
|
Update Spanish transalation. Thanks to Vicente Soriano. |
|
|
|
Add --ra-param option. Thanks to Vladislav Grishenko for |
|
inspiration on this. |
|
|
|
Add --add-subnet configuration, to tell upstream DNS |
|
servers where the original client is. Thanks to DNSthingy |
|
for sponsoring this feature. |
|
|
|
Add --quiet-dhcp, --quiet-dhcp6 and --quiet-ra. Thanks to |
|
Kevin Darbyshire-Bryant for the initial patch. |
|
|
|
Allow A/AAAA records created by --interface-name to be the |
|
target of --cname. Thanks to Hadmut Danisch for the |
|
suggestion. |
|
|
|
Avoid treating a --dhcp-host which has an IPv6 address |
|
as eligable for use with DHCPv4 on the grounds that it has |
|
no address, and vice-versa. Thanks to Yury Konovalov for |
|
spotting the problem. |
|
|
|
Do a better job caching dangling CNAMEs. Thanks to Yves |
|
Dorfsman for spotting the problem. |
|
|
|
|
version 2.66 |
version 2.66 |
Add the ability to act as an authoritative DNS |
Add the ability to act as an authoritative DNS |
server. Dnsmasq can now answer queries from the wider 'net |
server. Dnsmasq can now answer queries from the wider 'net |