Vad är en DNS-zon?
En DNS-zon är en avgränsad del av DNS-namnrymden som hanteras av en viss organisation eller administratör. En zon innehåller DNS-poster för en eller flera domäner och betjänas av auktoritativa namnservrar. En domän är ett namn i DNS-trädet, medan en zon är en administrativ gräns som anger vilka namnservrar som ansvarar för att besvara frågor.
Domän jämfört med zon
Det är viktigt att förstå skillnaden:
Domän
En domän är ett namn i DNS-hierarkin:
example.com (domain)
└── www.example.com (subdomain)
└── blog.example.com (subdomain)
└── api.example.com (subdomain)
Zon
En zon är administrativ kontroll över poster:
En enda zon för domän och underdomäner:example.com zone contains:
- example.com
- www.example.com
- blog.example.com
- api.example.com
Managed by: ns1.example.com, ns2.example.com
Delegerad underdomänzon:
example.com zone contains:
- example.com
- www.example.com
- Delegation: api.example.com → different nameservers
api.example.com zone (separate) contains:
- api.example.com
- v1.api.example.com
- v2.api.example.com
Managed by: ns1.apihost.com, ns2.apihost.com
Zonens komponenter
Zonfil
En textfil som innehåller alla DNS-poster för en zon:
; example.com zone file
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ; Minimum TTL
)
; Nameserver records
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
; A records
@ IN A 203.0.113.50
www IN A 203.0.113.50
blog IN A 203.0.113.51
; MX records
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.52
; CNAME records
ftp IN CNAME www.example.com.
; TXT records
@ IN TXT "v=spf1 include:_spf.google.com ~all"
SOA-post (Start of Authority)
Varje zon måste ha exakt en SOA-post:
example.com. IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ; Minimum TTL
)
SOA-fält:
| Fält | Syfte | Exempelvärde |
|---|---|---|
| Primär NS | Huvudnamnserver | ns1.example.com |
| Administratörens e-post | Kontakt (@ → .) | admin.example.com ([email protected]) |
| Serienummer | Zonens versionsnummer | 2024010101 |
| Refresh | Intervall för kontroll av sekundär NS | 7200s (2 timmar) |
| Retry | Försöksintervall om uppdatering misslyckas | 3600s (1 timme) |
| Expire | När sekundär NS ger upp | 1209600s (14 dagar) |
| Minsta TTL | Varaktighet för negativ cache | 3600s (1 timme) |
NS-poster (namnservrar)
Anger vilka servrar som är auktoritativa för zonen:
example.com. IN NS ns1.example.com.
example.com. IN NS ns2.example.com.
De talar om för hela internet vilka servrar som ska frågas om poster i zonen.
Zonens typer
Primär zon (master)
Den auktoritativa källan där zonposterna redigeras:
ns1.example.com (primary)
→ Zone file edited here
→ Changes made directly
→ Notifies secondaries of updates
Sekundär zon (slave)
Skrivskyddade kopior som replikerar från den primära zonen:
ns2.example.com (secondary)
→ Retrieves zone data from primary
→ Cannot be edited directly
→ Automatically syncs based on SOA refresh interval
Zonöverföring (AXFR):
1. Secondary checks SOA serial number
2. If primary serial is higher → request full zone transfer
3. Primary sends entire zone
4. Secondary updates its copy
Inkrementell överföring (IXFR):
1. Secondary requests only changes since last serial
2. Primary sends diff
3. More efficient for large zones with small changes
Framåtzon
Mappar domännamn till IP-adresser, vilket är den vanligaste typen:
example.com → 203.0.113.50
www.example.com → 203.0.113.50
Omvänd zon
Mappar IP-adresser till domännamn (PTR-poster):
50.113.0.203.in-addr.arpa → example.com
Används för:
- Verifiering av e-postservrar
- Loggning och säkerhet
- Felsökning
Zondelegering
Delegering skapar separata zoner för underdomäner:
Överordnad zon (example.com)
; example.com zone
@ IN A 203.0.113.50
www IN A 203.0.113.50
; Delegate api.example.com to different nameservers
api IN NS ns1.apihost.com.
api IN NS ns2.apihost.com.
; Glue records (if needed)
ns1.api IN A 198.51.100.1
ns2.api IN A 198.51.100.2
Delegerad zon (api.example.com)
En helt separat zonfil på andra namnservrar:
; api.example.com zone (on ns1.apihost.com)
@ IN A 198.51.100.10
v1 IN A 198.51.100.11
v2 IN A 198.51.100.12
Varför delegera?
- Organisatoriskt: Olika team hanterar olika zoner
- Tekniskt: Använd olika DNS-leverantörer (till exempel API på AWS och webbplats på Cloudflare)
- Prestanda: Fördela DNS-belastningen
- Säkerhet: Isolera känsliga tjänster
Zonhantering
Hantera serienummer
Serienummer spårar zonversioner (vanligtvis i formatet YYYYMMDDnn):
2024010101 ; January 1, 2024, version 01
2024010102 ; January 1, 2024, version 02
2024010201 ; January 2, 2024, version 01
Viktig regel: Serienumret måste öka vid varje ändring, annars uppdateras inte de sekundära servrarna.
Säkerhet vid zonöverföring
Problem: Zonöverföringar exponerar alla DNS-poster Lösning: Begränsa zonöverföringar till auktoriserade sekundära servrar BIND-konfiguration:zone "example.com" {
type master;
file "/var/named/example.com.zone";
allow-transfer { 203.0.113.52; 203.0.113.53; }; // Secondary IPs only
notify yes;
};
TSIG (Transaction Signature): Autentisera zonöverföringar med delade nycklar:
key "transfer-key" {
algorithm hmac-sha256;
secret "base64-encoded-key";
};
allow-transfer { key transfer-key; };
Kontrollera zonkonfigurationen
Fråga efter SOA-post
dig example.com SOA
; ANSWER SECTION:
example.com. 3600 IN SOA ns1.example.com. admin.example.com. (
2024010101 7200 3600 1209600 3600 )
Fråga efter NS-poster
dig example.com NS
; ANSWER SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
Begär zonöverföring (AXFR)
dig @ns1.example.com example.com AXFR
# If allowed, returns entire zone
# If denied, returns transfer failed
De flesta offentliga namnservrar nekar AXFR för att förhindra informationsläckage.
Vanliga zonkonfigurationer
Enkel webbplats
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
@ MX 10 mail.example.com
mail A 203.0.113.51
@ TXT "v=spf1 mx -all"
Zon med flera tjänster
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
blog CNAME hosting.wordpress.com.
shop CNAME shops.myshopify.com.
cdn CNAME d111111abcdef8.cloudfront.net.
@ MX 10 aspmx.l.google.com.
Delegerade underdomäner
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
; Delegate api to AWS Route 53
api NS ns-123.awsdns-01.com.
api NS ns-456.awsdns-02.net.
; Delegate cdn to Cloudflare
cdn NS ns1.cloudflare.com.
cdn NS ns2.cloudflare.com.
Bästa praxis för zonfiler
1. Öka alltid serienumret: Efter varje ändring, annars uppdateras inte sekundära servrar
2. Använd datumserienummer: Formatet YYYYMMDDnn ger tydlighet
3. Begränsa zonöverföringar: Tillåt endast auktoriserade sekundära servrar
4. Använd flera namnservrar: Minst två, helst i olika nätverk
5. Ange lämpliga TTL-värden: Balansera cachefördelar mot uppdateringshastighet
6. Testa före tillämpning: Validera zonfilens syntax innan den läses in
7. Övervaka zonöverföringar: Säkerställ att sekundära servrar synkroniseras
8. Dokumentera delegeringar: Notera vilka zoner som delegerats och vart
9. Säkerhetskopiera zonfiler: Regelbundna säkerhetskopior förhindrar dataförlust
10. Använd versionshantering: Följ zonfilens ändringar över tid
Avancerade zonfunktioner
DNSSEC (zonsignering)
Signera zonposter kryptografiskt:
example.com. IN A 203.0.113.50
example.com. IN RRSIG A 8 2 3600 (
signature-data-here )
Skyddar mot cacheförgiftning och manipulering.
Dynamisk DNS (DDNS)
Tillåt programmatisk uppdatering av zonen:
# Update A record dynamically
nsupdate -k Kupdate.key <<EOF
server ns1.example.com
update delete www.example.com A
update add www.example.com 300 A 203.0.113.51
send
EOF
Användbart för:
- Uppdateringar av hem-IP-adresser
- Infrastruktur med automatisk skalning
- Tjänsteupptäckt
Zonavisningar (split horizon DNS)
Visa olika zondata utifrån klientens IP-adress:
Internal clients: example.com → 10.0.0.50 (internal)
External clients: example.com → 203.0.113.50 (public)
Användningsområden:
- Interna och externa versioner av webbplatser
- Resurser i privata nätverk
- Geografiskt baserade svar
Felsöka zonproblem
Zonöverföringar misslyckas
Symtom: Sekundära servrar är inte synkroniserade Kontroll:# Check if primary allows transfers
dig @ns1.example.com example.com AXFR
# Check secondary logs for errors
tail -f /var/log/named.log
Lösningar:
- Verifiera inställningarna för allow-transfer
- Kontrollera nätverksanslutningen mellan servrarna
- Säkerställ att serienumret har ökats
Serienumret ökar inte
Symtom: Ändringar sprids inte till sekundära servrar Lösning: Öka alltid serienumret vid varje redigering av zonenDelegeringen fungerar inte
Symtom: Underdomänen kan inte lösas upp Kontroll:# Verify delegation
dig example.com NS
dig api.example.com NS
# Should show different nameservers for delegated subdomain
Lösningar:
- Verifiera NS-posterna i den överordnade zonen
- Kontrollera glue-poster om namnservrarna finns inom underdomänen
- Bekräfta att den underordnade zonen är konfigurerad
DNS-zoner är grunden för distribuerad DNS-hantering. Genom att förstå zonstruktur, delegering och hantering kan du utforma DNS effektivt för organisationer av alla storlekar.