Batch 5: Protocols & Security Networking Apache & NGINX Cloud ← Full TOC

← Networking Index

📖 DNS & Name Resolution — DNS records, resolution process, dig, nslookup, bind

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.

📋 Reference

ItemSyntax / ValueDescription
A recordmywebuniversity.com. IN A 203.0.113.10IPv4 address for hostname
AAAA recordmywebuniversity.com. IN AAAA 2001:db8::1IPv6 address for hostname
CNAMEwww.mywebuniversity.com. IN CNAME mywebuniversity.com.Alias to another hostname
MX recordmywebuniversity.com. IN MX 10 mail.mywebuniversity.com.Mail server — priority lower = preferred
TXT recordmywebuniversity.com. IN TXT 'v=spf1 include:...'Text — SPF, DKIM, DMARC, site verification
NS recordmywebuniversity.com. IN NS ns1.cloudflare.com.Authoritative name servers for zone
SOA recordStart of Authority — serial, refresh, retry, expireZone metadata and primary NS
PTR record10.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 recordmywebuniversity.com. IN CAA 0 issue letsencrypt.orgCertificate Authority Authorization
TTLTime To Live — how long to cache record300 = 5 min, 3600 = 1 hour, 86400 = 1 day
Recursive resolver8.8.8.8, 1.1.1.1 — ask on your behalfISP or public resolver — does the lookup work
Authoritative NSHas the actual zone data — final answerns1.cloudflare.com knows mywebuniversity.com records
Root servers13 root server clusters (a-m.root-servers.net)Starting point for recursive resolution
DNS resolutionClient -> Recursive -> Root -> TLD -> AuthoritativeIterative lookup chain
digdig mywebuniversity.comQuery DNS records from command line
dig +tracedig +trace mywebuniversity.comShow full recursive resolution path
dig @8.8.8.8dig @8.8.8.8 mywebuniversity.comQuery specific DNS server
dig MXdig MX mywebuniversity.comQuery MX records
dig -xdig -x 203.0.113.10Reverse DNS lookup
nslookupnslookup mywebuniversity.comInteractive DNS query tool
hosthost mywebuniversity.comSimple DNS lookup tool
resolvectlresolvectl query mywebuniversity.comsystemd-resolved DNS query
DNSSECdigitally signed DNS recordsPrevents cache poisoning — verify with dig +dnssec
DNS over HTTPSDoH — encrypted DNS queries over HTTPS1.1.1.1/dns-query — Cloudflare, 8.8.8.8/resolve — Google
/etc/hosts127.0.0.1 localhostLocal hostname overrides — checked before DNS
/etc/resolv.confnameserver 8.8.8.8DNS server configuration

💡 Example

# 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 →