Ubuntu 18.04 not recognizing hostnames from router
Solution 1
This seems to related to this issue:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624320
On a fresh install, /etc/resolv.conf
is linked to /run/systemd/resolve/stub-resolv.conf
instead of /run/systemd/resolve/resolv.conf
.
Updating it per https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624320/comments/8 fixed it.
Solution 2
Here is what happen: systemd-resolved do not resolve local domain names if the names are not fully qualified names like mate.local
As told in a doc about Systemd-networkd, a good fix is to trim the /etc/nsswitch.conf
file
sudo nano /etc/nsswitch.conf
Modify the hosts line
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
# ---- MODIFY THIS LINE ------------------------------------------------
# hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
# ---- TO --------------------------------------------------------------
hosts: files mdns4_minimal dns myhostname
# ---- THATS ALL -------------------------------------------------------
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Explanation:
Hostname resolving search first in files (/etc/hosts
), then with avahi (zeroconf), then ask to dns server. And do not more stop if avahi does not find a local name as [NOTFOUND=return]
forced. Hope its clear.
restart service
sudo systemctl restart systemd-resolved
Solution 3
A workaround given in this bug report comment solved it for my Ubuntu 18.04 LTS installation.
Disable and stop the systemd-resolved service:
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved
Then put the following line in the [main] section of your /etc/NetworkManager/NetworkManager.conf:
dns=default
Delete the symlink /etc/resolv.conf
rm /etc/resolv.conf
Restart network-manager
sudo service network-manager restart
Sarke
Updated on September 18, 2022Comments
-
Sarke over 1 year
I previously had Xubuntu 16.04 installed, and it did recognize the hostnames set by my router (Tomato).
For example, I have a computer with the name
mate
on the network with a static IP of192.168.2.202
, and previously I could do this:$ host mate mate has address 192.168.2.202
But now I get this:
$ host mate Host mate not found: 2(SERVFAIL)
This time around I did a minimal desktop install, so I wonder if there is a certain package I am missing.
EDIT:
$ cat /var/run/systemd/resolve/resolv.conf: nameserver 192.168.2.1
$ cat /var/run/NetworkManager/resolv.conf nameserver 127.0.0.53
$ netstat -antup Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3421/VBoxHeadless tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 663/systemd-resolve tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 950/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 737/cupsd tcp6 0 0 :::5900 :::* LISTEN 3421/VBoxHeadless tcp6 0 0 :::22 :::* LISTEN 950/sshd tcp6 0 0 ::1:631 :::* LISTEN 737/cupsd udp 14784 0 0.0.0.0:52712 0.0.0.0:* 2092/VirtualBox udp 8704 0 0.0.0.0:53789 0.0.0.0:* 2092/VirtualBox udp 9536 0 0.0.0.0:5353 0.0.0.0:* 730/avahi-daemon: r udp 19648 0 0.0.0.0:55126 0.0.0.0:* 2092/VirtualBox udp 8704 0 0.0.0.0:39114 0.0.0.0:* 2092/VirtualBox udp 13248 0 0.0.0.0:41109 0.0.0.0:* 2092/VirtualBox udp 0 0 0.0.0.0:57555 0.0.0.0:* 730/avahi-daemon: r udp 3648 0 0.0.0.0:59213 0.0.0.0:* 2092/VirtualBox udp 8064 0 0.0.0.0:59519 0.0.0.0:* 2092/VirtualBox udp 3648 0 0.0.0.0:48795 0.0.0.0:* 2092/VirtualBox udp 3648 0 0.0.0.0:48900 0.0.0.0:* 2092/VirtualBox udp 36096 0 127.0.0.53:53 0.0.0.0:* 663/systemd-resolve udp 37120 0 0.0.0.0:68 0.0.0.0:* 1066/dhclient udp 15424 0 0.0.0.0:33008 0.0.0.0:* 2092/VirtualBox udp 3648 0 0.0.0.0:49597 0.0.0.0:* 2092/VirtualBox udp 14464 0 0.0.0.0:33395 0.0.0.0:* 2092/VirtualBox udp 0 0 0.0.0.0:631 0.0.0.0:* 828/cups-browsed udp 19840 0 0.0.0.0:49883 0.0.0.0:* 2092/VirtualBox udp 14592 0 0.0.0.0:33614 0.0.0.0:* 2092/VirtualBox udp6 0 0 :::51356 :::* 730/avahi-daemon: r udp6 49344 0 :::5353 :::* 730/avahi-daemon: r
$ systemd-resolve --status Global DNSSEC NTA: 10.in-addr.arpa 16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp d.f.ip6.arpa home internal intranet lan local private test Link 6 (vboxnet2) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no Link 5 (vboxnet1) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no Link 4 (vboxnet0) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no Link 3 (wlp4s1) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no Link 2 (eno1) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 192.168.2.1
My router is 192.168.2.1
EDIT 2:
Using
dig
shows that the router does correctly report the hostname.$ dig @192.168.2.1 mate ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> @192.168.2.1 mate ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47046 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;mate. IN A ;; ANSWER SECTION: mate. 0 IN A 192.168.2.202 ;; Query time: 0 msec ;; SERVER: 192.168.2.1#53(192.168.2.1) ;; WHEN: Mon Jun 18 18:53:26 PDT 2018 ;; MSG SIZE rcvd: 38
But if I don't specifically mention the router's DNS IP, I don't find it.
$ dig mate ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> mate ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 65394 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;mate. IN A ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Mon Jun 18 19:06:13 PDT 2018 ;; MSG SIZE rcvd: 33
So it seems that even though it is listed in
/var/run/systemd/resolve/resolv.conf
it is not being used. How do I fix this? -
cmak.fr almost 6 yearsSorry, the story with
/etc/resolv.conf
and/run/systemd/resolve/stub-resolv.conf
is not the issue of the bug report #1624320 -- The workaround found by some user is not a fix -
Charles Boling over 5 yearsThis sounds good, but it didn't fix it for me, even after executing "systemd-resolve --flush-caches". (Mine broke after upgrade from 16.04 to 18.04)
-
Beef Eater over 4 yearsIMO symlinking /etc/resolv.conf to /run/systemd/resolve/resolv.conf is the correct way to force systemd-resolved to use the DNS server, thus neutering any possible issues in /etc/nsswitch.conf. See comments on four modes of handling /etc/resolv.conf at freedesktop.org/software/systemd/man/….
-
Steve Shipway about 4 yearsThis has also happened to me on upgrade from xenial to bionic; the /etc/resolv.conf softlink was incorrect. Fixed as above and all now works.
-
yoyoma2 over 3 yearsAlso works with Ubuntu 20.04 LTS.