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 of 192.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?
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.
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
fileModify the hosts line
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
A workaround given in this bug report comment solved it for my Ubuntu 18.04 LTS installation.