DNS (Domain Name System) translates human-readable hostnames to IP addresses. It's a hierarchical, distributed database. Understanding DNS is essential for web servers, email, load balancing, and security.
| Item | Syntax / Value | Description |
|---|---|---|
| A record | mywebuniversity.com. IN A 203.0.113.10 | IPv4 address for hostname |
| AAAA record | mywebuniversity.com. IN AAAA 2001:db8::1 | IPv6 address for hostname |
| CNAME | www.mywebuniversity.com. IN CNAME mywebuniversity.com. | Alias to another hostname |
| MX record | mywebuniversity.com. IN MX 10 mail.mywebuniversity.com. | Mail server — priority lower = preferred |
| TXT record | mywebuniversity.com. IN TXT 'v=spf1 include:...' | Text — SPF, DKIM, DMARC, site verification |
| NS record | mywebuniversity.com. IN NS ns1.cloudflare.com. | Authoritative name servers for zone |
| SOA record | Start of Authority — serial, refresh, retry, expire | Zone metadata and primary NS |
| PTR record | 10.113.0.203.in-addr.arpa. IN PTR mywebuniversity.com. | Reverse DNS — IP to hostname |
| SRV record | _http._tcp. IN SRV 0 5 80 mywebuniversity.com. | Service location — used by SIP, XMPP, k8s |
| CAA record | mywebuniversity.com. IN CAA 0 issue letsencrypt.org | Certificate Authority Authorization |
| TTL | Time To Live — how long to cache record | 300 = 5 min, 3600 = 1 hour, 86400 = 1 day |
| Recursive resolver | 8.8.8.8, 1.1.1.1 — ask on your behalf | ISP or public resolver — does the lookup work |
| Authoritative NS | Has the actual zone data — final answer | ns1.cloudflare.com knows mywebuniversity.com records |
| Root servers | 13 root server clusters (a-m.root-servers.net) | Starting point for recursive resolution |
| DNS resolution | Client -> Recursive -> Root -> TLD -> Authoritative | Iterative lookup chain |
| dig | dig mywebuniversity.com | Query DNS records from command line |
| dig +trace | dig +trace mywebuniversity.com | Show full recursive resolution path |
| dig @8.8.8.8 | dig @8.8.8.8 mywebuniversity.com | Query specific DNS server |
| dig MX | dig MX mywebuniversity.com | Query MX records |
| dig -x | dig -x 203.0.113.10 | Reverse DNS lookup |
| nslookup | nslookup mywebuniversity.com | Interactive DNS query tool |
| host | host mywebuniversity.com | Simple DNS lookup tool |
| resolvectl | resolvectl query mywebuniversity.com | systemd-resolved DNS query |
| DNSSEC | digitally signed DNS records | Prevents cache poisoning — verify with dig +dnssec |
| DNS over HTTPS | DoH — encrypted DNS queries over HTTPS | 1.1.1.1/dns-query — Cloudflare, 8.8.8.8/resolve — Google |
| /etc/hosts | 127.0.0.1 localhost | Local hostname overrides — checked before DNS |
| /etc/resolv.conf | nameserver 8.8.8.8 | DNS server configuration |
# DNS Tools and Examples
# ── dig — the essential DNS tool ──────────────────────────────
# Basic A record lookup
dig mywebuniversity.com
dig mywebuniversity.com A
# Get specific record types
dig mywebuniversity.com AAAA # IPv6
dig mywebuniversity.com MX # mail servers
dig mywebuniversity.com TXT # SPF, DKIM, verification
dig mywebuniversity.com NS # name servers
dig mywebuniversity.com SOA # zone info
dig mywebuniversity.com CAA # certificate authorities
# Short output
dig +short mywebuniversity.com
dig +short mywebuniversity.com MX
# Query specific DNS server
dig @8.8.8.8 mywebuniversity.com # Google
dig @1.1.1.1 mywebuniversity.com # Cloudflare
dig @9.9.9.9 mywebuniversity.com # Quad9
dig @127.0.0.1 mywebuniversity.com # local resolver
# Trace full resolution chain
dig +trace mywebuniversity.com
# Reverse DNS (PTR)
dig -x 203.0.113.10
dig -x 8.8.8.8 +short # Output: dns.google.
# DNSSEC validation
dig mywebuniversity.com +dnssec +short
dig mywebuniversity.com DNSKEY
# Check from command line
host mywebuniversity.com
nslookup mywebuniversity.com
nslookup mywebuniversity.com 8.8.8.8
# ── DNS Zone file example ─────────────────────────────────────
cat << 'ZONE'
$ORIGIN mywebuniversity.com.
$TTL 3600
; SOA record
@ IN SOA ns1.cloudflare.com. admin.mywebuniversity.com. (
2026062701 ; Serial (YYYYMMDDNN)
3600 ; Refresh
900 ; Retry
604800 ; Expire
300 ) ; Min TTL
; Name servers
@ IN NS ns1.cloudflare.com.
@ IN NS ns2.cloudflare.com.
; A records
@ IN A 203.0.113.10 ; root domain
www IN A 203.0.113.10 ; www subdomain
api IN A 203.0.113.11 ; API server
mail IN A 203.0.113.12 ; mail server
; AAAA (IPv6)
@ IN AAAA 2001:db8::10
; CNAME (alias)
blog IN CNAME www
; MX records
@ IN MX 10 mail.mywebuniversity.com.
@ IN MX 20 mail2.mywebuniversity.com.
; TXT records
@ IN TXT "v=spf1 ip4:203.0.113.0/24 include:_spf.google.com ~all"
@ IN TXT "google-site-verification=abc123"
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@mywebuniversity.com"
; PTR (in reverse zone 113.0.203.in-addr.arpa)
10 IN PTR mywebuniversity.com.
ZONE
# ── Python DNS lookups ────────────────────────────────────────
import socket
# A record
ip = socket.gethostbyname('www.mywebuniversity.com')
print(f"A: {ip}")
# All addresses (A + AAAA)
results = socket.getaddrinfo('www.mywebuniversity.com', 80)
for fam, typ, proto, canon, addr in results:
print(f" {fam.name}: {addr[0]}")
# Reverse DNS
try:
name = socket.gethostbyaddr('8.8.8.8')
print(f"PTR: {name[0]}")
except socket.herror:
print("No PTR record")
# Using dnspython (pip install dnspython)
import dns.resolver
resolver = dns.resolver.Resolver()
resolver.nameservers = ['8.8.8.8']
for rtype in ['A', 'AAAA', 'MX', 'TXT', 'NS']:
try:
answers = resolver.resolve('mywebuniversity.com', rtype)
for rdata in answers:
print(f" {rtype}: {rdata}")
except Exception:
pass
# python3 dns_demo.py (pip install dnspython)← IP Addressing & Subnetting | 🏠 Index | Network Diagnostics →