Sorry if it's a little after-the-fact, but I've been wondering about the need 
to have a separate "config domain" section at all.

Why not just have something like:

config host
    ...
    option wants-dns-rr on

Yes, "config domain" is still useful for external sites or for resources with 
static addresses that aren't served by dnsmasq, buy why not reduce the amount 
of configuration for a host to have a A/PTR pair to a single line?

For that matter, in the "config dnsmasq" section, why not have an option like 
"option publish-dns-rr on" and enable it globally for all host blocks?

Am I missing something?

-Philip


On 06/04/2013 10:44 PM, Adam Gensler wrote:
> Hi all,
>
> TL;DR - using "--address" for individual host A records is broken, use 
> "--host-record" instead.
>
> The following patch changes dnsmasq.init to build individual host records 
> using "--host-record" instead of "--address". Using "--address" in this 
> context is incorrect. For example, the current init script will create the 
> following two entries in /var/etc/dnsmasq.conf:
>
> address=/OpenWrt.lan/192.168.1.1
> ptr-record=1.1.168.192.in-addr.arpa,OpenWrt.lan
>
> At first glance this has the desired effect, "OpenWrt.lan" resolves to 
> 192.168.1.1. However, what it really says is "for anything that ends with 
> "OpenWrt.lan," that I don't have a record for, return 192.168.1.1". For 
> example:
>
> fakeaddress.OpenWrt.lan would return 192.168.1.1.
> adsfasdfsdfsd.OpenWrt.lan would return 192.168.1.1.
>
> That's wrong and it causes problems when using a real domain name, such as 
> domain.com. Often it's desirable to have "domain.com" resolve to an address 
> so users can hit the http service at http://domain.com. By using the existing 
> "config domain" option, you would configure this as follows:
>
> config domain
>       option name 'domain.com'
>       option ip '192.168.1.100'
>
> This would create these config items:
>
> address=/domain.com/192.168.1.100
> ptr-record=100.1.168.192.in-addr.arpa,domain.com
>
> Now, as a result, anything that doesn't have its own, preexisting record, 
> will also resolve to 192.168.1.100. That's no good because things like 
> Windows do proxy requests by default for wpad.domain.com and instead of 
> getting back an NXDOMAIN, it gets 192.168.1.100 and goes hunting for a pac 
> file that doesn't exist.
>
> The solution for this is to use "--host-record". This is actually a lot 
> easier to configure because dnsmasq will create the PTR records 
> automatically, so there's no need to manual calculate it like is done today. 
> This means that IPv6 addresses can be supported as well. The attached patch 
> makes this adjustment and accomplishes the following:
>
> 1. By default, the router's hostname is now added to the configuration using 
> "--host-record" instead of "--address". If there's a domain configured, the 
> default host-record entry looks like this:
>
> host-record=OpenWrt.lan,OpenWrt,192.168.1.1
>
> With this, now both "OpenWrt.lan" and "OpenWrt" will both resolve to 
> 192.168.1.1. In the reverse, 192.168.1.1 will resolve to only "OpenWrt.lan".
>
> 2. It introduces a new configuration structure to define additional host 
> records. For example:
>
> config hostrecord
>       list name 'mail.domain.com'
>       list name 'www.domain.com'
>       list name 'domain.com'
>       list ip '192.168.1.100'
>
> It uses lists here because dnsmasq can accept multiple hostnames and IP 
> addresses in a single host-record. This generates the following config:
>
> host-record=mail.domain.com,www.domain.com,domain.com,192.168.1.100
>
> All of those hostnames will resolve to 192.168.1.100 in the forward 
> direction. 192.168.1.100 will resolve to "mail.domain.com" in the reverse.
>
> 3. It restructures "dhcp_domain_add()" to remove the manual PTR record 
> calculation and configuration. This only supported IPv4 and isn't the proper 
> use of the "--address" option. Now it will build a proper "--address" config 
> that can support multiple domain names to a single IP address as per the 
> dnsmasq MAN page.
>
> Note, the domain name is no longer automatically appended to the end of 
> either "config hostrecord" or "config domain" entries as was previously the 
> case. To define a specific fqdn, one needs to manually configure it as such. 
> This makes the configuration more consistent; only what's configured is what 
> is generated for dnsmasq.
>
> Sorry for the long email. I hope it all made sense. If not, please let me 
> know.
>
> Thanks,
> Adam
>
>
> Signed-off-by: Adam Gensler <openwrt at gnslr.us>
> ---
> [snip]
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to