0

I'm running a Windows 2008r2 server in a non-Domain (workgroup) role. It is a DNS server and DHCP server for the LAN.

DNS services work fine for external Internet addresses, but local hostnames do not resolve (mostly - see below for specifics).

The DHCP server lists the correct hostname for all the devices on the LAN in its list of leases, but the DNS server seems to be unaware.

I have configured the DHCP scope settings to get the clients to register their DNS. The DNS tab in DHCP Scope properties has check marks for

  • "Enable DNS dynamic updates"
  • "Always dynanmically update DNS A and PTR records".
  • "Discard A and PTR records when lease is deleted",
  • "Dynamically update DNS A and PTR records for clients that do not request updates..."

As an example I'll show name resolution results for 4 hosts

  1. sun -- Windows 2008r2 server (DNS, DHCP)
  2. mars -- Windows 10 client
  3. uranus -- Linux Ubuntu 16.04 client
  4. PiZeroW -- Raspberry Pi Zero, Raspbian

I try host names with and without .local suffix.

From Sun:

Ping mars           works (mars.local also works)
Ping Uranus         works
Ping Uranus.local   host not found      
Ping PiZeroW        host not found (same result for .local)

From Mars:

ping sun             works     (sun.local also works)
ping uranus          works     (uranus.local also works)
Ping PiZeroW         host not found (same result for .local)

From Uranus:

ping sun          unknown host (same result for .local)
ping mars         unknown host (same result for .local)
Ping PiZeroW      unknown host
Ping PiZeroW.local  works

From PiZeroW:

ping sun             unknown host   (same result for .local)
ping mars            unknown host   (same result for .local)
ping uranus          unknown host   
ping uranus.local    works 

Can anyone shed light on why I'm getting inconsistent results? Is there a pattern here that gives a clue? Is there a good tutorial on local LAN DNS configuration?

0

Your computers implement Link-Local Multicast Name Resolution (LLMNR) to a varying degree. This mechanism works peer-to-peer without a central server, so that hosts report their names in response to queries that are sent as multicast datagrams on the local LAN. The host with a matching name sends a response to the querying host. The names are single label names like "mars" without any suffix. As a convenience, Windows clients accept a .local suffix, which is stripped before doing the query.

For this mechanism to work, both querying hosts and responding hosts must have LLMNR enabled. If the querying computer does not have LLMNR implemented, it will rely only on other mechanisms, like DNS or static host entries in /etc/hosts. The queried host must have a responder enabled.

Multicast DNS (mDNS) is a similar mechanism, but it is more seldom used on Windows computers.

| improve this answer | |
  • Interesting - I was unaware of LLMNR. A quick search brought up a number of articles on security concerns. One comment "... if you have a functional DNS, you should not need LLMNR at all..." So rather than try to fix LLMNR that is working "to a varying degree", I'd prefer to fix DNS, and my reason for posting it so see if anyone can offer suggestions on how to do that. Maybe if I disable LLMNR I would have a clearer picture of how DNS is (or isn't) working... – tim11g Dec 26 '17 at 18:07
  • You will have to set up a zone on your DNS server, and list the names you want the server to return resource records for. I'm not very familiar with the Windows side of this. There's a lot of documentation on this on technet.microsoft.com. – Johan Myréen Dec 26 '17 at 18:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.