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

Re: host hostname not found



Podrigal, Aron wrote:
> ok, a fresh install of debian 7.6, here is my settings, I don't have
> libnss-myhostname
> installed yet

It shouldn't be *required*.  It is one of those optional features that
some people want and others do not want.  It is useful.  But for
example I don't have it installed either.  Because it creates an
emulation layer it can cause problems.  The answer is, "It depends."

> root@test1:~# cat /etc/hosts
> 127.0.0.1 localhost
> 127.0.1.1 test1.test.com test1
> 
> # The following lines are desirable for IPv6 capable hosts
> ::1     localhost ip6-localhost ip6-loopback
> ff02::1 ip6-allnodes
> ff02::2 ip6-allrouters

Hmm...  You are actually the owner of test.com?  Or did you just
double up using their domain?  People often type in random domains
there thinking they can do that but really they shouldn't because
someone else owns that domain.  If you own test.com then that is all
good.  If you don't then you shouldn't use it.

> root@test1:~# getent hosts $(hostname)
> 127.0.1.1       test1.test.com test1

Good.

> root@test1:~# cat /etc/nsswitch.conf
> ...
> hosts:          files dns

Good.  Look for data from local files first.  Fall through and ask DNS
for the name if not found locally.

That is what "normal" things will do.  Normal things like "ping foo"
and "ssh foo" and http://foo/ and so forth.  Not DNS specific things
such as host or dig.

> root@test1:~# host -v $(hostname)
> Trying "test1"
> Host test1 not found: 3(NXDOMAIN)
> Received 98 bytes from 8.8.8.8#53 in 14 ms

The host, dig and nslookup and those commands are DNS commands.  As
Reco and Brian noted DNS is a network service and separate from the
local file configuration.  Your local files are fine.  When you try to
do a DNS lookup from your DNS nameserver it is failing to respond with
an appropriate localhost entry.

> Clearly, it skips /etc/hosts entries.

Right.  That is what it is supposed to do.  DNS doesn't use
/etc/hosts.  DNS is a network service.  The nsswitch is used to
indicate that normal system processes that use libc will look through
files first and then dns.  But 'host' is a dns specific lookup.  It by
design of being a dns lookup tool only looks in dns.

> After digging around, I noticed, that I had always setup DNS records for my
> hosts prior to doing the installations, which caused me the confusion on
> what was happening. I thought that the looking up my hostname resolves
> correctly by getting the ip from /etc/hosts, which I was wrong.
> 
> So yes, host does not look in /etc/hosts by default.

That is correct.

But there is a problem.  There is a problem with your network DNS
configuration.  Every domain zone should have a localhost configured
for it.  Therefore when you do a host lookup of localhost in DNS it
should return the zone's localhost record.

  $ host localhost
  localhost.proulx.com has address 127.0.0.1

That is because my proulx.com zone has a localhost record in it.

  localhost	IN	A	127.0.0.1

If you are searching test.com for localhost.test.com then you should
be returning a record from that domain.  Which is currently
misconfigured to be something other than 127.* so you shouldn't use it
either.

In summary, use your real domain name and not test.com.  In your DNS
zone ensure you have a localhost record.  If you squat on someone
else's domain then you are at the mercy of their configuration which
you don't want.

Bob

Attachment: signature.asc
Description: Digital signature


Reply to: