On 27/07/2014 12:30, Grand Duet wrote:
2014-07-27 13:39 GMT+03:00 Walter Dnes <[email protected]>:
On Sun, Jul 27, 2014 at 12:21:23PM +0300, Grand Duet wrote
This is a continuation of the thread:
"Something went wrong with DNS, plz help!"
Now, the issue became clearer, so I decided to start
a new thread with more descriptive Subject.
In short: the contents of the file /etc/resolv.conf
is unpredictably different from one reboot to another.
It is either
# Generated by net-scripts for interface lo
domain mynetwork
or
# Generated by net-scripts for interface "eth0"
nameserver My.First.DNS-Server.IP
nameserver My.Second.DNS-Server.IP
nameserver 8.8.8.8
I tried to chmod this file to be unwrittable even for root
but after a reboot it have been overwritten anyway.
A similar problem was noted at...
https://forums.gentoo.org/viewtopic-t-816332-start-0.html
Like in the thread above, I also have a line
dns_domain_lo="mynetwork"
in my /etc/conf.d/net file. It says nothing to me
and I do not remember how it got there.
But somewhere on Gentoo forum I have found the following
explanation: "If you only specify dns_domain_lo="foo" and
restart the lo interface it will put "domain foo" in /etc/resolv.conf
and remove everything else."
You can specify dns_domain - without an interface suffix - which ought
to prevent this behaviour. However, you'd be better off getting rid of
it altogether. All the option does is define the suffix(es) that are
appended by the resolver under certain conditions. These conditions are
as follows:
a) the initial name isn't qualified (contains no dots) [1]
b) the initial name could not be resolved (NXDOMAIN response)
Making up fake domains for this setting, as many Gentoo users are
induced into doing, serves no purpose. Let's assume that I have
"fakedomain" as a search domain in resolv.conf.
Let's see what happens for a short name:
$ host -t A -v shorthost | grep -e Trying -e NX
Trying "shorthost.fakedomain"
Trying "shorthost"
Host shorthost not found: 3(NXDOMAIN)
Result: two spurious DNS lookups, each resulting in NXDOMAIN. You may
use tcpdump to confirm that there are indeed two.
Now, let's try looking up a fully qualified hostname that happens not to
exist:
$ host -t A -v nonexistent.google.com | grep -e Trying -e NX
Trying "nonexistent.google.com"
Trying "nonexistent.google.com.fakedomain"
Host nonexistent.google.com not found: 3(NXDOMAIN)
Result: The first lookup fails and is immediately followed by an another
lookup that is completely and utterly useless. Had a search domain _not_
been defined, then the resolver could have concluded its efforts after
the first NXDOMAIN response.
The bottom line is that it only makes sense to define search domain(s)
if the following two conditions hold true.
1) You want to be able to resolve hostnames in their short form
2) Records for said names will exist in a known, *valid* domain
Otherwise, don't bother and leave it to the DHCP server to decide [2].
While I haven't looked at the handbook lately, it has had a history of
prescribing dns/domain related options without adequate explanation and,
in some cases, with outright misleading information [3].
On a related note, some people prefer to manage resolv.conf themselves
and it is not initially obvious as to how to do this while also using
DHCP. Trying to make the file immutable is not a proper approach. The
trick is as follows:
* Specify dhcpd_eth0="nodns" (do this for any dhcp-using interfaces)
* Do not specify any dns or nameserver related settings in conf.d/net
The netifrc scripts will then leave resolv.conf alone.
--Kerin
[1] Check out the ndots option in the resolv.conf(5) manpage
[2] DHCP servers may specify a search domain for clients with option 15
[3] https://bugs.gentoo.org/show_bug.cgi?id=341349