[Dnsmasq-discuss] CNAMEs

Simon Kelley simon at thekelleys.org.uk
Sun Feb 6 22:43:36 UTC 2022


What you want to do isn't possible with the current dnsmasq. There's an 
"expand-hosts" option which adds the domain the bare names in 
/etc/hosts, but it doesn't apply to CNAMES or anything else.

On most unix systems there's an option in /etc/resolv.conf called ndots, 
which is set to zero avoids a query for a bare name being expanded with 
the host's domain. I don't know if that option or its equivalent exists 
in MacOS.


Simon.


On 06/02/2022 18:03, Ken Gillett via Dnsmasq-discuss wrote:
> The problem is that I have set up several CNAMEs that work when I simply use the 'host' command, but fail when I use 'ping' to that same name. The actual responses I outlined in my original question.
> 
> To be clear I understand what the manual page is stating, but it does NOT mention (that I can find) how to deal with domains. I was able to set this up using bind (as used in MacOS server), but not in dnsmasq.
> 
> This is all just on the local network. Various hosts have their A record which works whether simply testing to resolve the name (I use 'host' as it's simple) or actually addressing that dns name with an application/program (e.g. 'ping'). I just want to be able to use alternate names for that host. Alias if you like, or CNAME in dnsland.
> 
> I have in fact been able to make it work in dnsmasq by adding the domain name to every cname entry (but not the target), but that makes little sense to me and requires that domain name to be 'hard coded' in the dnsmasq set up, multiple times for every cname entry (i.e. for every actual cname being declared). This is quite the opposite of how bind is configured and in any case, I would really like to be able to configure dnsmasq cnames without reference to the domain. If I have a host called e.g. host1 and I set up cnames to that as e.g. host2 and host3 etc, I would like that to operate in any domain name I choose. So if I try and access host2, it will always mean i access host1, no matter what overall domain I decide to use for this subnet.
> 
> So anywhere host2 (or host3 etc) is used, just swap that with host1. Irrespective of any domain name in current use.
> 
> 
> Ken  G i l l e t t
> 
> _/_/_/_/_/_/_/_/
> 
> 
> 
>> On 6 Feb 2022, at 16:51, Geert Stappers via Dnsmasq-discuss <dnsmasq-discuss at lists.thekelleys.org.uk> wrote:
>>
>> On Sun, Feb 06, 2022 at 04:02:40PM +0000, Ken Gillett wrote:
>>> On 4 Feb 2022, at 20:46, Ken Gillett wrote:
>>>>
>>>> I have several CNAMEs set up in DNSmasq on my Mac server that I
>>>> thought were working. If I use the 'host' command to check a CNAME
>>>> e.g :-
>>>>
>>>> 	host thecname
>>>>
>>>> it returns:-
>>>>
>>>> 	thecname is an alias for thetarget.
>>>> 	thetarget has address xx.xx.xx.xxx
>>>>
>>>> So looks good, but…
>>>>
>>>> I now realise that all is not well. If I instead:-
>>>>
>>>> 	ping thecname
>>>>
>>>> it returns:-
>>>>
>>>> 	ping: cannot resolve thecname: Unknown host
>>>>
>>>> Which is apparent nonsense as it has just resolved that exact CNAME.
>>>> The problem appears to be that the client Mac performing the query
>>>> adds the domain name, so DNSmasq needs to resolve thecname.thedomain
>>>> (which is not cofigured), as if I use:-
>>>>
>>>> 	ping thecname.
>>>>
>>>> It works.
>>>>
>>>> Previously I used MacOS Server's DNS (BIND) and a CNAME is listed as:-
>>>>
>>>> 	thecname IN  CNAME thetarget.thedomain.
>>>>
>>>> Which works perfectly. However, if I try something similar in DNSmasq, it simply fails.
>>>>
>>>> If instead I create the DNSmasq cname as:-
>>>>
>>>> 	cname=thecname.thedomain,thetarget
>>>>
>>>> That seems to work. But
>>>>
>>>> Apart from being the inverse of how BIND configures CNAMEs, how can
>>>> I configure DNSmasq CNAMEs to work without having to add thedomain
>>>> to every cname in every CNAME record in DNSmasq? I don't like to
>>>> hard code things like that as it could change. Is there any way to
>>>> make DNSmasq deal with this appropriately?
>>>>
>>
>> Quote from https://dnsmasq.org/docs/dnsmasq-man.html
>>
>> --cname=<cname>,[<cname>,]<target>[,<TTL>]
>>      Return a CNAME record which indicates that <cname> is really
>>      <target>. There is a significant limitation on the target; it must
>>      be a DNS record which is known to dnsmasq and NOT a DNS record
>>      which comes from an upstream server. The cname must be unique,
>>      but it is permissible to have more than one cname pointing to the
>>      same target. Indeed it's possible to declare multiple cnames to a
>>      target in a single line, like so: --cname=cname1,cname2,target
>>
>>      If the time-to-live is given, it overrides the default, which is
>>      zero or the value of --local-ttl. The value is a positive integer
>>      and gives the time-to-live in seconds.
>>
>>>
>>> Any help with the CNAME problem?
>>>
>>
>> Answering that as
>>
>> } Could I please get some help with what I call  "the CNAME problem"?
>>
>> In manual pages are square brackets used to indicate what is optional.
>> Optional meaning "can left out" so
>> --cname=<cname>,[<cname>,]<target>[,<TTL>]
>> becomes
>> --cname=<cname>,<target>
>> and that matches
>> } } 	cname=thecname.thedomain,thetarget.thedomain
>>
>> Back to the "the CNAME problem".
>> Please elaborate it.  ( Because I don't get the "problem". )
>>
>>
>> Groeten
>> Geert Stappers
>> -- 
>> Silence is hard to parse
>>
>> _______________________________________________
>> Dnsmasq-discuss mailing list
>> Dnsmasq-discuss at lists.thekelleys.org.uk
>> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss
> 
> 
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss



More information about the Dnsmasq-discuss mailing list