DNS CNAME record! Get aware of what it is and its restrictions

What is a DNS CNAME record?

The ‘canonical name’ record is used in lieu of an A record when a domain or subdomain is an alias of another domain. All records must point to a domain, never to an IP address. Imagine a scavenger hunt where each clue points to another clue, and the final clue points to the treasure. A domain with this record is like a clue that can point you to another clue or to the treasure (a domain with an A record).

For example, suppose blog.example.com has a canonical name record with a value of ‘example.com’ (without the ‘blog’). This means when a DNS server hits the DNS records for blog.example.com, it actually triggers another DNS lookup to example.com, returning example.com’s IP address via its Canonical Name record. In this case, we would say that example.com is the canonical name (or true name) of blog.example.com.

Oftentimes, when sites have subdomains such as blog.example.com or shop.example.com, those subdomains will have records that point to a root domain (example.com). This way if the IP address of the host changes, only the DNS A Canonical Name record for the root domain needs to be updated and all the Canonical Name records will follow along with whatever changes are made to the root.

A frequent misconception is that a CNAME record must always resolve to the same website as the domain it points to, but this is not the case. The record only points the client to the same IP address as the root domain. Once the client hits that IP address, the webserver will still handle the URL accordingly. So for instance, blog.example.com might have a CNAME that points to example.com, directing the client to example.com’s IP address. But when the client actually connects to that IP address, the webserver will look at the URL, see that it is blog.example.com, and deliver the blog page rather than the home page.

Example of a CNAME record:

blog.example.comrecord type:value:TTL
@CNAMEis an alias of example.com32600

In this example you can see that blog.example.com points to example.com, and assuming it is based on our example A record we know that it will eventually resolve to the IP address


Can this record point to another same record?

Pointing a CNAME record to another record is inefficient because it requires multiple DNS lookups before the domain can be loaded — which slows down the user experience — but it is possible. For example, blog.example.com could have a record that pointed to www.example.com’s CNAME record, which then pointed to example.com’s A record.

CNAME for blog.example.com:

blog.example.comrecord type:value:TTL
@CNAMEis an alias of www.example.com32600

Which points to a CNAME for www.example.com:

www.example.comrecord type:value:TTL
@CNAMEis an alias of example.com32600

This configuration adds an extra step to the DNS lookup process and should be avoided if possible. Instead, the records for both blog.example.com and www.example.com should point directly to example.com.

What restrictions are there on using these records?

MX and NS records cannot point to a record; they have to point to an A record (for IPv4) or an AAAA record (for IPv6). An MX record is a mail exchange record that directs email to a mail server. An NS record is a ‘name server’ record and indicates which DNS server is authoritative for that domain.

The DNS CNAME record works as an alias for domain names that share a single IP address.

Share your love

I am just a robot

Articles: 39