Preserving changed in resolv.conf across reboots with resolvconf
Solution 1
Short Answer
I think the most reliable way to do that is by setting your resolv.conf
to be immutable. Once you set it the way you want, you simply run
sudo chattr +i /etc/resolv.conf
To edit it again, you need to remove the immutable flag:
sudo chattr -i /etc/resolv.conf
Alternate Answer
The application that puts that message in /etc/resolv.conf
is called resolvconf
. You can remove your resolvconf
package with (I'm assuming debian or ubuntu here, but I think resolvconf
is a debian thing):
sudo apt-get remove resolvconf
I remove it on my computers because I have found that I am more likely to be able to connect with proper /etc/resolv.conf
settings in strange situations (hotel or airport wifi, specifically) when I do not have the resolvconf
package installed. resolvconf
also does other things like DNS caching, and probably some other things I feel I can live without. You might look into what all it does before you remove it.
Important notes
Removing resolvconf
will not guarantee that your /etc/resolv.conf
remains unchanged. Other programs, like dhclient
will make edits to /etc/resolv.conf
. If you run a network manager, that might also edit /etc/resolv.conf
. I don't have much experience with network managers.
The chattr
solution should prevent those other programs from making edits, and is probably right for your server situation. If you were using it on a laptop, situations may arise where important changes to your /etc/resolv.conf
would be blocked. An example would be when accessing hotel wifi, where a modification to your /etc/resolv.conf
is needed for access to a certain locally hosted url before gain access to the proper internet). If you can remember in those situations to chattr -i /etc/resolv.conf
and reconnect to the wifi, then it shouldn't be a problem.
Solution 2
You use entries in /etc/resolvconf/resolv.conf.d/
named head
, base
or tail
(depending on where in resolv.conf
you want your entries to come). From man resolvconf
:
The dynamically generated resolver configuration file always starts
with the contents of /etc/resolvconf/resolv.conf.d/head and ends with
the contents of /etc/resolvconf/resolv.conf.d/tail. Between head and
tail the libc script inserts dynamic nameserver information compiled
from, first, information provided for configured interfaces; second,
static information from /etc/resolvconf/resolv.conf.d/base.
Just put your entries in base
and run resolvconf -u
.
Related videos on Youtube
sisko
Professional web developer making the transition into Robotics
Updated on September 18, 2022Comments
-
sisko over 1 year
What is the best way to edit the resolv.conf file?
I wasn't familiar with setting proxies until a task to configure a server came along. I manually edited my /etc/resolv.conf file and included the following input:
nameserver 192.168.115.147,192.178.116.168
Any attempt to download was met with errors. After much googling, I came across a post which led me to reformat the file - directly as follows:
nameserver 192.168.115.147 nameserver 192.178.116.168
That worked and file downloads were no longer interrupted with errors.
However, when I had to reboot the server the file reverted back to the single line format which again stopped my downloads. That's when I noticed the
DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
at the top of resolv.conf.So, how should resolv.conf be edited so the changes persist through server reboots?
-
Admin over 8 yearsThis will depend on the specific vendor, and how their scripts mangle the network configuration. Without knowing the vendor, I'd
fgrep -r 192.168.115.147,192.178.116.168 /etc
to try to find where that specific comma-joined string came from, or look for the vendor's network configuration files (/etc/network/*
,/etc/sysconfig/network*
, etc.) to see if DHCP is set, etc.
-