3

We have a zone with a 2 hour TTL. Previous to making any changes it returned an A record when looking up the entry for www.

We changed the entry for www to point to a CNAME record. After the change, we noticed that the host command was returning both a CNAME and an A record as shown:

user@osx:~$ host www.example.com
www.example.com has address 192.168.1.2
www.example.com is an alias for vip.example.com.
www.example.com is an alias for vip.example.com.
user@osx:~$ 

Was this a problem with some DNS servers caching? If we had simply let the TTL fully expire, would we have gotten a CNAME as expected with no A record?

I didn't get any more detailed information with dig or other commands.

EDIT: The true address for vip.example.com. is completely different from the A record that was originally returned:

user@osx:~$ host vip.example.com
vip.example.com has address 172.16.4.5
user@osx:~$ 

4 Answers 4

1

Does a dig +trace show anything? It should show how it comes to the response you're getting.

3
  • We have rolled back the change as this was affecting a production site. I did not run 'dig +trace' when I encountered this problem, but if I see the problems again, I shall run 'dig'. We plan to attempt this change again later today. Feb 3, 2010 at 20:47
  • +1 dig is a much better utility to use. Even just dig www.example.com will confirm for you what you are looking for.
    – einstiien
    Feb 3, 2010 at 20:57
  • The second attempt at changing DNS was successful. dig +trace and host both showed things functioning as expected. Feb 5, 2010 at 0:27
1

As far as I'm aware, this is perfectly normal. Querying a CNAME returns the value of the A record, because this is ultimately where it's mapping to, when you're querying for an A record.

Being a Windows guy, I use nslookup. When the query type is set to A I get:

Server:  bladedc1.live.local
Address: 192.168.163.50

Name:    example.com.au
Address:  x.x.x.x
Aliases:  www.example.com.au

But when I set the query type to CNAME I get:

www.example.com.au
Server:  bladedc1.live.local
Address: 192.168.163.50

Non-authoritative answer:
www.example.com.au        canonical name = example.com.au

example.com.au    internet address = x.x.x.x

Try setting the query type to CNAME instead of A and see what you get.

1
  • +1. AFAIK, this is correct. A DNS client will, as Farseeker has stated, return both the CNAME and A record as they're essentially "attached" to each other. When using CNAME records you ultimately only need to worry about the TTL of the A record as the CNAME record is simply an alias for the A record, and as such, is not going to change (unless you also change the CNAME record).
    – joeqwerty
    Feb 3, 2010 at 22:31
0
kechara# host cnametest.flame.org
cnametest.flame.org is an alias for www.isc.org.
www.isc.org has address 149.20.64.42
www.isc.org has IPv6 address 2001:4f8:0:2::d

Host is smart. It tries to display all the data it can to the user. However, dig is a much more reliable debugging tool.

0

You should first identify whether or not the response you are getting starts at the nameservers or is further down the chain.

$ host -t ns example.com
example.com name server b.iana-servers.net.
example.com name server a.iana-servers.net.
$ host example.com b.iana-servers.net
Using domain server:
Name: b.iana-servers.net
Address: 193.0.0.236#53
Aliases: 

example.com has address 192.0.32.10
$ host example.com a.iana-servers.net.
Using domain server:
Name: a.iana-servers.net.
Address: 192.0.34.43#53
Aliases: 

example.com has address 192.0.32.10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .