What is a CNAME Record?
A Canonical Name (CNAME) Record is used in the Domain Name System (DNS) to create an alias from one domain name to another domain name. A common example is the www subdomain which is provided as an alias to the root domain name - users accessing “www.example.com” are referred to the root domain (or DNS zone apex) “example.com”.
A few common uses of CNAME records are:
- Providing a separate hostname for specific network services, such as email or FTP, and pointing that hostname to the root domain
- Many hosted services provide a subdomain for each customer on the service provider’s domain (e.g. company.hostname.com), and use CNAME to point to the customer’s domain (www.company.com).
- Registering the same domain in several countries and pointing the country versions to the main “.com” domain
- Pointing from several websites owned by the same organization to a primary website
How the DNS System Handles CNAME Records
The DNS records in the above example would look like this:
CNAME from subdomain to parent domain
NAME TYPE VALUE
--------------------------------------------------
www.example.com. CNAME example.com.
example.com. A 192.162.100.100
The second record is an A record which translates the human-readable domain name “example.com” to an IP address.
DNS Resolution Process for CNAME Records
- A DNS client (such as a browser or network device) requests the address www.example.com, and a DNS request is created.
- A DNS resolver receives the request and finds the Authoritative Name Server that holds the DNS Zone file with DNS records for the “example.com” domain.
- The DNS request is resolved and the CNAME record is returned to the client.
- The client understands www.example.com is only an alias for the real address, “example.com”, and issues a new DNS query for “example.com”
- The process is repeated and the resolver returns the A record for “example.com”, containing the IP address.
- The DNS client now connects to “example.com” using its IP address.
CNAME examples
CNAME from subdomain to subdomain
NAME TYPE VALUE
--------------------------------------------------
old.example.com. CNAME new.example.com.
new.example.com. A 192.162.100.101
CNAME from subdomain to other root domain
NAME TYPE VALUE
--------------------------------------------------
other.example.com. CNAME www.other.com.
In this example the A name for “www.other.com” is provided in another DNS Zone file.
Restrictions on CNAME Records
- A CNAME cannot be placed at the root domain level, because the root domain is the DNS Start of Authority (SOA) which must point to an IP address.
- CNAME records must point to another domain name, never to an IP address.
- A hostname defined in a CNAME record must have no other resource records of other types (MX, A, etc.), except for DNSSEC records like RRSIG and NSEC.
- CNAME records can point to other CNAME records, but this is not considered a good practice as it is inefficient.
- MX and NS records must never point to a CNAME alias.
- Domains that are used for e-mail may not have a CNAME record - this can have undesirable results with different mail servers.
CNAMEs and Alternative Record Types
The CNAME Record is typically used alongside other types of DNS Records - A Records and ALIAS Records.
Difference Between A and CNAME
An A Record maps a hostname to one or more IP addresses, while the CNAME record maps a hostname to another hostname.
Difference between ALIAS and CNAME
The ALIAS Record, like CNAME, also maps a hostname to another hostname. However, the ALIAS Record makes it possible to have other DNS records on the same hostname, while CNAME does not. This makes it possible to apply ALIAS at the root domain (DNS zone apex), which is not allowed for CNAME.
In addition, ALIAS has better performance than CNAME because it does not require the DNS client to resolve another hostname - it directly returns an IP. However ALIAS records too need to do recursive lookups behind the scenes which can affect performance.
Linked Records - a Smart Alternative to CNAME
NS1’s next-generation DNS platform supports a proprietary DNS record type called a Linked Record. NS1
Multi-CDN: An advanced use case for CNAME
A common way to deploy Content Delivery Networks (CDN) is to add the address of the CDN as a CNAME record for the origin server that hosts website content. This way, anyone accessing resources on the origin server is redirected to the CDN.
With next-generation DNS technology, the same CNAME record can allow users to be redirected to one of several CDNs based on dynamic parameters.
A DNS platform can be made aware of CDN attributes such as current load, geographical location of nearest Point of Presence (PoP), bandwidth, or even cost. When a user looks up the origin server and is redirected to the CNAME address, that address is dynamically modified to the CDN that can provide the best experience for the end user.
NS1 is a next-generation managed DNS platform that can dynamically route users to the most optimal CDN server (or any other server for that matter) based on:
- Filter chains which give you hundreds of ways to customize DNS answers for every user based on rich parameters that describe the capabilities and performance of the target system.
- Real User Monitoring (RUM) Steering which automatically routes traffic based on up-to-the-minute performance data from real users.
Get a free trial of NS1 and see for yourself how a simple CNAME record can result in intelligent routing of users among multiple global systems, resulting in a vastly improved user experience.