[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: how to change default nameserver?



On 09 Apr 2023 14:14, gene heskett wrote:

I'm not sure, and my methods have been heavily denegrated by the dhcp fans, but in my case with a many machine local net, and no dhcpd running on the system, and the changes with each new release, I find the one repeatable method to solve dns problem, is to compose an /etc/resolv.conf with 2 lines:

mameserver ipv4 address of router
search hosts, nameserver

And sudo chattr +i /etc/resolv.conf

quickly so NM can't change it. It will remove the search line, killing your local network, in which case you can ping yahoo.com, but not another machine on your local net. Your ISP's dns has no knowledge of your local net which is as it should be.

My router runs something like dnsmasq as its running dd-wrt, and theoretically a dns request then searchs the host file for a matching name, failing that my whole local system then query's the router, which if not cached by dnsmasq, sends the query on to my ISP's dns server, and I get answers in around 30 milliseconds. And it all just works. With the router NAT-ing, all machines here can browse the whole planet, as transparently as border facilities allow.

It seems you misconfigured a few things.
- Either you use DHCP, and the DNS will be provided by the DHCP server, so don't touch resolv.conf (the DHCP server CAN provide 127.0.0.1 as DNS server) - or you use static addressing, and you can simply remove the dhcp-client package, so resolv.conf will be left alone.

Also, the line "search hosts, nameserver" is wrong. The place to put such settings is "/etc/nsswitch.conf".
"search" is used to resolve hostnames to FQDN.
So if you put "search example.com", and you try to connect to a machine with for example "ssh hostname", the DNS client will try to append example.com to hostname, and try to resolve "hostname.example.com".

Finally, if using static addressing, I can't see why NetworkManager is useful.

So to recap, if your LOCAL domain is example.com, and your DNS server is 192.168.1.1, a resolv.conf would look like:
# /etc/resolv.conf
nameserver 192.168.1.1
search example.com
#

Man pages:
man resolv.conf
man nsswitch.conf


Reply to: