Why do two Ubuntu systems in the same network behave differently in DNS resolution?
EDIT (tl;dr)
I seem to have identified part of the problem here, as at least the differences in /etc/resolv.conf
and related files are gone.
But I still cannot connect via WiFi, so other difference probably persist.
I mean to identify these, and act upon them.
I intentionally selected the same title as this OP.
I have two Ubuntu systems, server1
and server2
, very similar in all respects.
Both are connected to the same router, via WiFi.
I worked by comparing the two systems to help tracking the problem.
In server2
, I just started having DNS name resolution problems. I was connected to a VPN, and the server was rebooted, so I guess this PostScriptum may describe the case.
server2
did not have resolvconf
and I installed it as an outcome.
At that time /etc/resolv.conf
started pointing at /run/resolvconf/resolv.conf
(note the modification date below), instead of /run/systemd/resolve/stub-resolv.conf
.
To do that, I had to manually add nameserver 8.8.8.8 at the top in /etc/resolv.conf
, plug a wired internet connection, and I could immediately sudo apt update
, etc.
Note:
As of now, the problem with file permissions quoted in the link above is not present. If it shows up next time I connect to/disconnect from a VPN, I will deal with it.
I am listing below: 1) what is different in server1
and server2
,
2) what is the same in both (with any
replacing the server name),
and 3) what is almost the same (with irrelevant differences, in my understanding).
Why DIFFERENCE #3
below? (nameserver ::1
).
How to fix server2
, if possible, by leaving it with the same configuration as server1
?
I could try modifying /etc/resolvconf/resolv.conf.d/tail
in server2
, but since that file is empty in server1
this action would possibly mask other problems, even if successful.
I guess if I could only have DIFFERENCES #1-4 below fixed, that will solve the problem. But all 4 files are quoted as dynamically created. I could not locate who is/was responsible for "creating" the differences, and how to fix that.
Different
dig
:
[server1]$ dig google.com
; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64202
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 94 IN A 216.58.202.46
;; Query time: 36 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: mar ago 10 03:44:51 -03 2021
;; MSG SIZE rcvd: 55
vs.
[server2]$ dig google.com
; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; connection timed out; no servers could be reached
/etc/resolv.conf
and related files:
[server1]$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
search fibertel.com.ar <--- DIFFERENCE #1
[server1]$ cat /run/systemd/resolve/stub-resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0 trust-ad
search fibertel.com.ar <--- DIFFERENCE #2
[server1]$ cat /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 192.168.0.1 <--- DIFFERENCE #3
search fibertel.com.ar <--- DIFFERENCE #3
[server1]$ cat /run/resolvconf/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
search fibertel.com.ar <--- DIFFERENCE #4
[server1]$ ll /etc/resolv.conf
lrwxrwxrwx 1 root root 29 feb 1 2021 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
[server1]$ ll /run/resolvconf/resolv.conf
-rw-r--r-- 1 root root 327 ago 9 20:59 /run/resolvconf/resolv.conf
vs.
[server2]$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
[server2]$ cat /run/systemd/resolve/stub-resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0 trust-ad
[server2]$ cat /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver ::1 <--- DIFFERENCE #3
[server2]$ cat /run/resolvconf/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
[server2]$ ll /etc/resolv.conf
lrwxrwxrwx 1 root root 29 ago 9 22:38 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
[server2]$ ll /run/resolvconf/resolv.conf
-rw-r--r-- 1 root root 304 ago 10 03:13 /run/resolvconf/resolv.conf
Same
[any]$ uname -a
Linux <serverN> 5.11.0-25-generic #27~20.04.1-Ubuntu SMP Tue Jul 13 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[any]$ dpkg -l | grep resolvconf
ii resolvconf 1.82 all name server information handler
[any]$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
[any]$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
[any]$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 <serverN>
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
[any]$ cat /etc/nsswitch.conf
...
[any]$ cat /etc/systemd/networkd.conf
...
[any]$ ss -plnt | grep ':53'
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
[any]$ sudo systemctl status resolvconf.service
...
[any]$ /lib/systemd/network/
...
Almost the same
[server1]$ lsb_release -a
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
[server2]$ lsb_release -a
LSB Version: core-11.1.0ubuntu2-noarch:printing-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
Related:
- DNS set to systemd's 127.0.0.53 - how to change permanently?
The file /etc/resolv.conf is intended to be a symbolic link to /run/systemd/resolve/stub-resolv.conf Check:
ls -al /etc/resolv.conf
If it is not, correct it:
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Your netplan yaml file indicates that you are running Network Manager. That is the place to make your changes to DNS nameservers.