Linux getaddrinfo not working with .local domains

domain-name-systemgetaddrinfo

I'm connected by PPTP VPN to another network, mainly a windows network. Running Ubuntu 16.04.1, freshly installed.

Most of the things I would like to connect to are on a .local domain. I find that any application that does a getaddrinfo during the connection phase to the .local domain will fail:

Remmina, for example, gives this error:

tcp_connect: getaddrinfo (Name or service not known)
Error: protocol security negotiation or connection failure

I set up one workstation in DNS on both a .local and a .com domain and they both resolve fine:

rduz@henry:~$ nslookup bidsk0127.redacted.local
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   bidsk0127.redacted.local
Address: 172.16.5.155

rduz@henry:~$ nslookup bidsk0127.redacted.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   bidsk0127.redacted.com
Address: 172.16.5.155

I can connect fine to the .com name, no getaddrinfo error. I cannot connect to the .local, it shows the getaddrinfo error.

In the old days, on SLES as I recall, we would update /etc/host.conf to have a line that said 'mdns off' to get .local resolution to work. man host.conf doesn't show that as a valid option anymore.

Is there some way to fix things up so that the getaddrinfo call can correctly resolve a .local name?

Thank you.

Regards,
Rich

Best Answer

More googling and I found the answer. In my case, I don't want mdns, so I updated /etc/nsswitch.conf as follows:

root@henry:/etc# diff nsswitch.conf.orig nsswitch.conf
12c12
< hosts:          files mdns4_minimal [NOTFOUND=return] dns
---
> hosts:          files dns
Related Topic