I know there are other posts here asking this, but those suggestions do not help, the configuration keeps changing and I simply cannot get my own changes to persist.
I have the Google 8.8.8.8
and 8.8.4.4
servers in my Network Manager configuration in the GUI, and
systemd-resolv --status
returns
Link 2 (enp38s0f1)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8
8.8.4.4
DNS Domain: ~.
Nevertheless, dig google.com
shows
;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Oct 05 11:08:26 EDT 2020
;; MSG SIZE rcvd: 83
so my default route 192.168.1.1
as DNS
. Furthermore, /etc/resolv.conf
is a symlink to /run/systemd/resolve/resolv.conf
, which in turn reads
# Generated by dhcpcd from enp38s0f1.dhcp, wlp0s20f3.dhcp
# /etc/resolv.conf.head can replace this line
domain fios-router.home
nameserver 192.168.1.1
# /etc/resolv.conf.tail can replace this line
The only enp38s0f1.dhcp
file on this system (I've searched /
) is /run/dhcpcd/resolv.conf/enp38s0f1.dhcp
, which reads
# Generated by dhcpcd from enp38s0f1.dhcp
domain fios-router.home
search fios-router.home
nameserver 192.168.1.1
I have tried to write in other nameservers there, but they do not persist. In the past I've made the changes persistent by making the file immutable with chattr +i
, but
lsattr /run/dhcpcd/resolv.conf/enp38s0f1.dhcp
returns
lsattr: Inappropriate ioctl for device While reading flags on /run/dhcpcd/resolv.conf/enp38s0f1.dhcp
so that attribute is not available here. And besides, I shouldn't have to make the file immutable anyway: there should presumably be some way I can control the DNS server..
Edit:
In response to comments below:
$ dpkg -l *dnsmasq*
---
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-================-===============-============-============================================
un dnsmasq <none> <none> (no description available)
ii dnsmasq-base 2.80-1.1ubuntu1 amd64 Small caching DNS proxy and DHCP/TFTP server
un dnsmasq-base-lua <none> <none> (no description available)
If your current DNS server is still your router (i.e. 192.168.1.1), although you have declared the desired nameservers in /etc/netplan/[network-mager].yaml or via the GUI of NetworkManager, there are at least two solutions to try:
You may configure these settings using the already mentioned GUI:
a) Choose a connection (from the Wired or Wireless tab) and click Edit. b) Click on the IPv4 Settings tab c) Choose 'Automatic (DHCP) addresses only' instead of just 'Automatic (DHCP)'. d) Enter the DNS servers in the “DNS servers” field, separated by spaces (e.g. 208.67.222.222 for OpenDNS). e) Click “Apply.”
Please, note that 'Automatic (DHCP) addresses only' means that the network you are connecting to uses a DHCP server to assign IP addresses but you want to assign DNS servers manually.
then, edit /etc/resolvconf/resolv.conf.d/head and insert your desired nameservers as:
Finally, to update /etc/resolv.conf run:
I believe I know how to resolve this.
dhcpcd
has a--nohook
flag that instructs it to leave certain parts of your configuration alone. From mydhcpcd(8)
man page:So I altered my
/lib/systemd/system/dhcpcd.service
, changing the lineto
Afterwards, the nameservers
8.8.8.8
and8.8.4.4
in/etc/resolv.conf
survive the reboot.