TL;DR
- Avoid overusing CNAME records — and never point CNAMEs to other CNAMEs
- Keep subdomains simple to reduce DNS lookup overhead
- Multiple A records pointing to the same IP are allowed and encouraged
- Modern TTL values should balance performance and propagation speed
- Structure DNS zones logically to improve reliability and maintenance
Although the basics of DNS records are fairly easy to understand, badly configured DNS zones are surprisingly common. Poor DNS hygiene can lead to slower lookups, hard-to-troubleshoot errors, and unnecessary downtime.
Below are a few practical pointers to help you keep your DNS clean, fast, and aligned with industry best practices.
Find out what is a parked domain.
Register a .co.za domain today!
CNAME Recommendations
CNAME records are one of the most overused and misused DNS record types.
The golden rule is simple:
A CNAME should never point to another CNAME.
In addition, the following records should never point to a CNAME:
- NS
- CNAME
- MX
- PTR
- NAPTR
- SRV
Why this matters
These records are reference records (anchor-referring RRs). Pointing one reference to another reference makes it very easy to create circular dependencies or DNS loops.
Instead, these records should always point to an anchor record, specifically an A record.
If you don’t explicitly need a CNAME, don’t use one. CNAME lookups are slower than direct A records and increase the risk of configuration errors.
Dot Separation Frenzy
Avoid excessive dot-separated subdomains such as:
server1.cab3.row2.dc5.jhb.mydomain.com
Each dot represents another DNS lookup. If, for example, server1.cab3.row2 is missing, the resolver must perform four lookups before returning an error.
A faster and cleaner alternative is:
server1-cab3-row2-dc5-jhb.mydomain.com
This structure:
- Returns errors faster
- Reduces unnecessary lookups
- Still translates easily into a meaningful hostname
Multiples Allowed
A common reason given for using CNAMEs everywhere is:
“I don’t want multiple records pointing to the same IP.”
This concern is unnecessary.
Multiple A records pointing to the same IP address are not only allowed — they are encouraged.
You can:
- Point multiple hostnames to the same IP
- Assign multiple IP addresses to the same hostname
This is commonly used for:
- Load balancing
- Geo-fenced DNS responses (as used by Google and others)
DNS TTL (Time To Live) Values
TTL defines how long (in seconds) a DNS record is cached before it is refreshed.
The original DNS standards (written in 1987) suggest a default TTL of 86,400 seconds (1 day). At the time, this made sense — servers were slow and underpowered.
Today, TTL values often reflect outdated practices from the 80s and 90s rather than modern infrastructure capabilities.
Choosing the right TTL
- Too low: Increased DNS query load
- Too high: Slow propagation of changes
If you leave the TTL blank, it defaults to the value defined in the SOA record.
A reasonable modern approach:
- Maximum TTL: 86,400 seconds (1 day)
- Minimum TTL: 300 seconds (5 minutes)
Shorter TTLs allow faster updates but are removed from DNS caches more quickly.
Recommended SOA TTL Values
The latest recommended SOA (Start Of Authority) values are:
example.com. 3600 SOA dns.example.com. dnsmaster.example.com. (
2018012301 ; serial YYYYMMDDnn
86400 ; refresh ( 24 hours)
7200 ; retry ( 2 hours)
3600000 ; expire (1000 hours)
172800 ) ; minimum ( 2 days)
Dynamic Zones and Failover
Dynamic zones — such as load-balanced or failover hosts — require shorter TTL values.
In rare cases, TTLs can be as low as 120 seconds, but this is seldom necessary.
Most load-balanced hosts use:
- 300 seconds (5 minutes)
- Or a moving static IP, where traffic is quickly shifted from a failed host to a standby system
These mechanisms are usually much faster and more reliable than DNS-based failover alone.
Summary: DNS Record Order Best Practice
When creating or maintaining a DNS zone, keep records logical, grouped, and ordered. The commonly accepted order is:
SOA *
NS (at least 2) *
A *
AAAA (if any)
MX
CNAME
TXT
SRV
Records marked with an asterisk (*) are mandatory in a standard forward lookup zone. All others are optional.
Maintaining this structure makes troubleshooting easier and keeps system administrators far happier when assisting with issues.
References
- IETF Standards Written by ISC Contributors
- Wikipedia: Domain Name System
- IETF: DOMAIN NAMES - CONCEPTS AND FACILITIES
- IETF: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
Frequently Asked Questions
Why should CNAME records not point to other CNAMEs?
Because chained CNAMEs increase lookup time and can create circular references or DNS loops, leading to failures and hard-to-debug issues.
Are multiple DNS records pointing to the same IP a problem?
No. This is a standard practice and is often used for load balancing, redundancy, and geo-based routing.
What is a good TTL value for most DNS records?
For most setups, 86,400 seconds for long-lived records and 300 seconds for frequently changing records is a good balance.
Do shorter TTLs improve website performance?
Not directly. Shorter TTLs improve how quickly changes propagate, but they increase DNS query volume and cache misses.
How important is DNS record order?
While DNS technically works regardless of order, keeping records structured and grouped makes zones easier to manage and troubleshoot.
Keep Improving Your DNS Setup
Clean, reliable DNS records help your website, email, and domain services work smoothly. These related guides will help you better understand DNS zones, check important records, make safer DNS changes, and set up DNS records correctly:
