Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have a Linksys router running DD-WRT (Firmware: DD-WRT v24-sp2 (09/08/09) mini). I have it successfully resolving the DNS names for my DHCP-assigned systems, but only when I fully-qualify those domains. This is despite using the "expand-hosts" DNSMasq additional option, which is supposed to activate this precise function.

Here's my dnsmasq.conf:

interface=br0
resolv-file=/tmp/resolv.dnsmasq
domain=example.com
dhcp-leasefile=/tmp/dnsmasq.leases
dhcp-lease-max=51
dhcp-option=lan,3,10.77.0.5
dhcp-authoritative
dhcp-range=lan,10.77.0.100,10.77.0.149,255.255.0.0,1440m
dhcp-host=00:1A:A0:1D:82:5A,astatichostname,10.77.1.40,infinite
expand-hosts

(FYI: example.com and astatichostname are placeholders for the real-deal names I use. My network uses 10.77.0.0/16; my router is on 10.77.0.5.)

Results:

> nslookup astatichostname 10.77.0.5
Server:     10.77.0.5
Address:    10.77.0.5#53

** server can't find astatichostname: NXDOMAIN

> nslookup astatichostname.example.com 10.77.0.5
Server:     10.77.0.5
Address:    10.77.0.5#53

Name:   astatichostname.example.com
Address: 10.77.1.40

Is there something else that could be tripping up expand-host in DNSMasq?

share|improve this question
add comment

2 Answers 2

This question is old, but it's one of the top google results for the issue, and I finally figured it out.

The problem is that's not what expand-hosts does. The documentation on it is very fuzzy, but what expand-hosts does is adds the domain to host entries in /etc/hosts, not to dns queries. So for example

/etc/hosts:

10.77.0.5 astatichostname

dnsmasq.conf:

expand-hosts
domain=example.com

Then dns queries for astatichostname.example.com will resolve to 10.77.0.5 (in addition to DNS queries for just astatichostname).



Solution:

So, the solution is to get dd-wrt to add the create the entries /etc/hosts without the domain on them, and then tell dnsmasq to consider those host entries as part of the example.com domain when a fully qualified A record DNS query comes in.
To do this you have to:

  1. Put the example.com domain in the Domain Name field on the Setup -> Basic Setup page under Optional Settings.
  2. Blank the LAN Domain setting on the Services page under DHCP Server.
  3. Add expand-hosts to Additional DNSMasq Options on the Services page under DNSMasq

Step #1 controls the domain= setting that gets put in the dnsmasq.conf file. Step #2 removes the domain from the entries that get put in /etc/hosts. Step #3 tacks the domain onto the entries in /etc/hosts when a fully qualified DNS query comes in.


I'm so glad dd-wrt made this nice and simple...

share|improve this answer
add comment

The following works for me on my DD-WRT:

expand-hosts
local=/lan/
domain=lan

I think it's because you're missing the local setting. I also have lan set as my "LAN Domain" in the GUI.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.