Hi Fairly sure this is true, welcome anybody to repeat the setup and if I am correct.
On commissioning in the most excellent and highly recommended Technitium DNS/DHCP Server ( https://technitium.com/dns/ https://github.com/TechnitiumSoftware/DnsServer ) I started to get a problem where some services seemed to vanish. At first I assumed I’d made a mistake with the DNS configuration or the hosts were missing (or failing to use) a DNS suffix.
Then I realised this:
Setup:
If the DNS in ROS is configured to be caching only, i.e. has no static addresses.
And there is another proper DNS in the system, e.g. ROS may be a gateway and hence must have DNS turned on as the external DNS address can change, the real DNS does not know that.
And (possibly) IPV6 is enabled, but not used. I.e. link local IPV6 only. Though IPV6 AAAA requests are completely valid on an IPv4 only network.
Then this happens:
Sequence:
An app on client1 does a query www.domain.local AAAA (i.e. IPV6 address for an internal host. Likely because it’s host has an IPV6 address)
The query arrives at ROS
ROS forwards this to DNS as it does not know the answer, as there is no answer.
DNS answers correctly www.domain.local AAAA NXDOMAIN as our internal services are IPV4 only, this service is not on IPV6.
DNS sends this reply to ROS
ROS forwards the reply onto the client, caching it as it does. There is no setting for NXDOMAIN timeout, so it’s set to 1 day.
This would prompt the client’s app to retry with another new query for www.domain.local A (ipv4) and expect to get a valid answer.
But though the first query is forwarded from ROS, it is not true that ROS always sees this 2nd query, and even if it did it would not matter…
because:
ROS caches the first response as www.domain.local NXDOMAIN 0.0.0.0 (note the lack of AAAA) for 24 hours.
Client does another request either directly to ROS, or because it’s in an list of possible resolvers, no matter, it will answer incorrectly as it thinks it knows the answer and does not forward.
e.g. Client2 (or client1) queries www.domain.local A
ROS answers from it’s cached record of www.domain.local NXDOMAIN. !!!
Client goes “WTF”?
Technitium has some great tools for DNS manipulation so, I am now trying to prevent it replying to ROS when the forwarded query is AAAA…
It has plugin apps for that sort of thing.
Another work-round or bug-fix suggested?
I.e. ROS should cache the query type, in this case AAAA (including TXT, SRV, etc) not just the address even for NXDOMAIN replies otherwise it poisons it’s own DNS.



