M
Massimo
I'm having some troubles with the Windows DNS resolver (the behaviour is the
same in Windows 2000, XP and 2003).
As stated in the document available at
http://www.microsoft.com/windows2000/techinfo/howitworks/communications/nameadrmgmt/w2kdns.asp
(section "Caching resolver", subsection "Unqualified Multi-Label Query"),
when a computer having a domain suffix of "domain.com" is trying to resolve
a name such as "anotherdomain.com", the resolver should first query the DNS
for "anotherdomain.com" and, if this fails, it should then resort to quering
"anotherdomain.com.domain.com".
Well, it seems to be not exactly like this. I ran some network traces using
Network Monitor, and I just watched Windows querying
"www.anotherdomain.com.domain.com" and, only when this failed, trying the
simpler (and correct) query "anotherdomain.com".
Let me explain the problem, and why do I care about this.
I'm the network administrator for a small italian I.T. company, where an
Exchange 2003 mailserver is running. The company LAN is a private network
(192.168.42.0/24), connected to the Internet through a NAT router. Inside
this LAN, I have two DCs which also are the LAN's DNS servers; they are
configured to resolve Internet names too. Everything works fine.
Let's assume the domain suffix for all LAN machines is "mydomain.com"
(sorry, I can't tell the true domain suffix).
When my Exchange server wanted to send e-mails to recipients at a popular
italian ISP called "Libero", whose domain suffix is "libero.it", it kept
logging errors about not being able to contact the recipient's mailserver.
So I tried manually running a MX query for the domain "libero.it", and I got
a very stange reply: a listing of the authoritative DNSs for "mydomain.com";
no wonder Exchange couldn't send e-mails to a domain whose MX record was
unreadable...
I tried many network configurations and DNS queries, trying to narrow down
the problem, and finally I discovered the two problems which, when combined,
cause the strange behaviour I witnessed.
The first problem is, Libero's DNS reacts very strangely when queried about
non-existant hosts or domains. Instead of replying with a "this host/domain
doesn't exist" answer, it lists the authoritative DNSs for the TLD of the
query text; I'm quite sure this is a very irregular behaviour for a public
DNS server.
The second problem, the one I'm addressing by writing here, is this: when
running on a machine with a configured domain suffix, Windows tries
resolving DNS queries first by appending the suffix to the query, and only
when this fails it re-runs the query "as is", without additional suffixes.
So, this is the result: when looking for Libero's mailserver, my Exchange
server queries my Windows 2003 DNS, which sends to Libero's DNS a MX query
for "libero.it.mydomain.com.". Libero's DNS, instead of replying "wrong
query, try again", lists the authoritative DNSs for "mydomain.com.". Having
got an answer (even if totally wrong), my DNS stops querying and retuns this
answer to the Exchange server... which, obviously, can't do much with it and
so stops sending that e-mail.
Now, I can't do anything about Libero's wrongly-behaving DNSs (although it's
a quite popular ISP here, their network administrators are quite known to be
a bunch of idiots). But I want to know why Windows resolves DNS queries this
way, even if this is in contrast with what is stated in that white paper.
Can anyone please help?
Thanks
Massimo
same in Windows 2000, XP and 2003).
As stated in the document available at
http://www.microsoft.com/windows2000/techinfo/howitworks/communications/nameadrmgmt/w2kdns.asp
(section "Caching resolver", subsection "Unqualified Multi-Label Query"),
when a computer having a domain suffix of "domain.com" is trying to resolve
a name such as "anotherdomain.com", the resolver should first query the DNS
for "anotherdomain.com" and, if this fails, it should then resort to quering
"anotherdomain.com.domain.com".
Well, it seems to be not exactly like this. I ran some network traces using
Network Monitor, and I just watched Windows querying
"www.anotherdomain.com.domain.com" and, only when this failed, trying the
simpler (and correct) query "anotherdomain.com".
Let me explain the problem, and why do I care about this.
I'm the network administrator for a small italian I.T. company, where an
Exchange 2003 mailserver is running. The company LAN is a private network
(192.168.42.0/24), connected to the Internet through a NAT router. Inside
this LAN, I have two DCs which also are the LAN's DNS servers; they are
configured to resolve Internet names too. Everything works fine.
Let's assume the domain suffix for all LAN machines is "mydomain.com"
(sorry, I can't tell the true domain suffix).
When my Exchange server wanted to send e-mails to recipients at a popular
italian ISP called "Libero", whose domain suffix is "libero.it", it kept
logging errors about not being able to contact the recipient's mailserver.
So I tried manually running a MX query for the domain "libero.it", and I got
a very stange reply: a listing of the authoritative DNSs for "mydomain.com";
no wonder Exchange couldn't send e-mails to a domain whose MX record was
unreadable...
I tried many network configurations and DNS queries, trying to narrow down
the problem, and finally I discovered the two problems which, when combined,
cause the strange behaviour I witnessed.
The first problem is, Libero's DNS reacts very strangely when queried about
non-existant hosts or domains. Instead of replying with a "this host/domain
doesn't exist" answer, it lists the authoritative DNSs for the TLD of the
query text; I'm quite sure this is a very irregular behaviour for a public
DNS server.
The second problem, the one I'm addressing by writing here, is this: when
running on a machine with a configured domain suffix, Windows tries
resolving DNS queries first by appending the suffix to the query, and only
when this fails it re-runs the query "as is", without additional suffixes.
So, this is the result: when looking for Libero's mailserver, my Exchange
server queries my Windows 2003 DNS, which sends to Libero's DNS a MX query
for "libero.it.mydomain.com.". Libero's DNS, instead of replying "wrong
query, try again", lists the authoritative DNSs for "mydomain.com.". Having
got an answer (even if totally wrong), my DNS stops querying and retuns this
answer to the Exchange server... which, obviously, can't do much with it and
so stops sending that e-mail.
Now, I can't do anything about Libero's wrongly-behaving DNSs (although it's
a quite popular ISP here, their network administrators are quite known to be
a bunch of idiots). But I want to know why Windows resolves DNS queries this
way, even if this is in contrast with what is stated in that white paper.
Can anyone please help?
Thanks
Massimo