[Dnsmasq-discuss] With auth-zone enabled, DNS response only provides DHCPv6 IP and ignores IPv4 address/host-record entries

Simon Kelley simon at thekelleys.org.uk
Sat Jul 23 15:59:44 UTC 2022


This is a bug, for sure.

I can see exactly why this would happen with

address=/Computer1.example.org/10.0.0.10

but not with

host-record=Computer1.example.org,10.0.0.10,3600

Please could you recheck that you are seeing the problem with 
--host-record? If you are, I've gone down the wrong track, but if you're 
not, then the fix for this is fairly simple.


Cheers,

Simon.


On 22/07/2022 20:37, ryt 51V wrote:
> Hi,
> 
> I am setting up dnsmasq as a local DHCPv6 server and DNS server.  (I am 
> keeping my existing DHCPv4 server running on a separate appliance).
> 
> I am running into an issue in the following circumstances:
> 
>   * auth-zone is enabled
>   * For a given device, there is a dhcp-host entry with the device's
>     DUID for an IPv6 address.
>   * The device is successfully obtaining this IPv6 address.
>   * There is an address or host-record entry for the same device's IPv4
>     address.
> 
> When querying the DNS server for the hostname, only the DHCPv6 IPv6 
> address is provided, not the IPv4 address from the address or 
> host-record entry.
> 
> This is problematic as I am trying to run a dual-stack network, and so 
> need both IPv4 and IPv6 addresses readily resolvable.  That said, I am 
> not in any immediate need of help as using dynamic-host instead of 
> address or host-record is a suitable workaround.  But it would be 
> helpful to find out whether I am missing some nuance in the 
> configuration, or whether this is a bug.
> 
> In more detail: Consider the following dnsmasq configuration (private 
> details have of course been modified)
> 
>     no-resolv
>     domain=example.org <http://example.org>
>     #auth-zone=example.org <http://example.org>
>     #auth-server=server.example.org <http://server.example.org>,
>     dhcp-range=fd00::1000,fd00::ffff,64,1h
>     dhcp-host=id:00:00:00:01:23:45:67:89:AB:CD:EF:00:00:00, [fd00::10],
>     Computer1
>     address=/Computer1.example.org/10.0.0.10
>     <http://Computer1.example.org/10.0.0.10>
>     #host-record=Computer1.example.org
>     <http://Computer1.example.org>,10.0.0.10,3600
>     #dynamic-host=Computer1.example.org <http://Computer1.example.org>,
>     10.0.0.10,eth0
> 
> 
> And assume:
> 
>   * The server running dnsmasq has IPv4 10.0.0.1
>   * Computer1 has IPv4 10.0.0.10 (either static, or obtained from a
>     separate DHCPv4 server)
>   * Computer1 is successfully obtaining its IPv6 lease for fd00::10 from
>     dnsmasq
> 
> 
> (1) In the state above, providing Computer1 has obtained its IPv6 lease 
> from dnsmasq, dnsmasq will provide both A and AAAA records for Computer1.
> For example, using dig:
> 
>     $ dig @10.0.0.1 <http://10.0.0.1> +short Computer1.example.org
>     <http://Computer1.example.org> A Computer1.example.org
>     <http://Computer1.example.org> AAAA
>     10.0.0.10
>     fd00::10
> 
> 
>  From my perspective this is expected behaviour.
> 
> (2) Now if you uncomment the auth-zone and auth-server lines, a DNS 
> query will *only* provide an AAAA record for the IPv6 address, and no A 
> record for the IPv4 address.
> Again, using dig:
> 
>     $ dig @10.0.0.1 <http://10.0.0.1> +short Computer1.example.org
>     <http://Computer1.example.org> A Computer1.example.org
>     <http://Computer1.example.org> AAAA
>     fd00::10
> 
> 
>  From my perspective this is unexpected behaviour.  The address line 
> with the IPv4 address is for the authoritative domain, so I am unsure 
> why it would not be included.
> 
> (3) If you comment out the address line and uncomment the host-record 
> line, then DNS provides the same result as (2).
> Again, this is unexpected behaviour.  The host-record line is for the 
> authoritative domain.
> 
> (4) If you comment out the host-record line and uncomment the 
> dynamic-host line, then DNS provides the same result as (1).
> This is expected behaviour and a suitable workaround to case (2)/(3).  
> Although it is odd that it's inconsistent with address and host-record 
> behaviour.
> 
> (5) I have also noticed that instead of using dig, one uses a Windows 
> nslookup, Windows will declare the response as non-authoritative for 
> case (4), but won't for case (2)/(3).  Additionally if you remove the 
> dhcp-range and dhcp-host entries, nslookup will receive the IPv4 address 
> but again it will be marked as non-authoritative.
> 
>  From my perspective, the behaviour in (2)/(3) is not correct (nor (5), 
> though I don't think that will really affect me that much).  The 
> address/host-record entries are for the domain listed in auth-zone, and 
> so should be included as authoritative records.
> Indeed the dnsmasq man page more explicitly suggests that (3) is 
> incorrect behaviour for host-record entries.  It says that the 
> authoritative zone is populated with "IPv4 and IPv6 addresses from 
> /etc/hosts (and --addn-hosts ) and --host-record and --interface-name 
> and ---dynamic-host provided the address falls into one of the subnets 
> specified in the --auth-zone."  (Explicitly adding a subnet to the 
> auth-zone line makes no difference to the above tests)
> 
> I have tested this with the same results with the following OS and 
> dnsmasq versions:
> 
>   * Raspberry Pi OS Bullseye - dnsmasq 2.85-1 from RPi OS Repo
>   * Debian Bullseye - dnsmasq 2.85-1 from Debian Repo
>   * Debian Sid - dnsmasq 2.86-1.1 from Debian Repo
>   * Debain Sid - Latest dnsmasq from the Git repo as of 2022-07-22
> 
> 
> Any help appreciated!
> 
> Kind regards,
> 
> ryt51v
> 
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss



More information about the Dnsmasq-discuss mailing list