Linux – dnsmasq reading /etc/hosts, but not using it

dnsmasqhosts-filelinux

I've done a default install of dnsmasq. When I run dig, it seems to be using dnsmasq (127.0.0.1), but the results don't include the hostnames included in /etc/hosts.

/etc/hosts:

192.168.1.13 sun

in a terminal:

$ dig sun

; <<>> DiG 9.6-ESV-R4 <<>> sun
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32131
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;sun.               IN  A

;; AUTHORITY SECTION:
.           9699    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041100 1800 900 604800 86400

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 12 05:20:56 2011
;; MSG SIZE  rcvd: 96

in a terminal:

$ dig @localhost sun

; <<>> DiG 9.6-ESV-R4 <<>> @localhost sun
; (2 servers found)
;; global options: +cmd
;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43763
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;sun.               IN  A

;; AUTHORITY SECTION:
.           10800   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041800 1800 900 604800 86400

;; Query time: 40 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr 18 17:15:23 2011
;; MSG SIZE  rcvd: 96

I've tried using local and expand-hosts/domain, but can't seem to get either of those working either. My primary goal is to be able to use one machine to host LAN DNS, I don't care if the names wind up being sun or sun.domain, whatever works.

Here is my /etc/resolv.conf

nameserver 127.0.0.1
domain members.linode.com
search members.linode.com
nameserver 72.14.188.5
nameserver 72.14.179.5

and /etc/dnsmasq.conf

domain-needed
bogus-priv

This is all on an ubuntu 10.04 machine if it makes a difference. I have been following this guide: http://www.mythicalbeast.co.uk/linux/dnsmasq_howto.html (though not verbatim since that also sets up DHCP)

Best Answer

I know this is from 2011, but since it still has no accepted answer:

Today, I had a similar problem. Curl worked to get the expected response from a haproxy lxc with the respective header, but somehow my local dnsmasq did not provide resolution for container.test (confirmed with nslookup).

Google found me this post by Hugo Heden, who said that is might be an issue with /etc/hosts formatting.

What solved the problem for me was:

  1. Uncommenting no-hosts in /etc/dnsmasq.conf
  2. Putting 123.123.123.12 container.test into a new file, e.g. /etc/dnsmasq.hosts
  3. Pointed dnsmasq to the new file by adding addn-hosts=/etc/dnsmasq.hosts to /etc/dnsmasq.conf