En zonfil innehåller DNS-resursposter för alla domännamn som är associerade med zonen. Zonfiler lagrar all data som serveras av en DNS-server. Detta recept beskriver basfältets filformat utan några resursposter som är lämpliga för någon typ av zonfil.
Zonfilen måste skapas i DNS-serverns arbetsregister. Det finns inget krav på filnamn med zonfil, men en rimlig standard är db.domän namn, domänens namn föregås av db.
Det grundläggande formatet för zonfilen är ett tid att leva (TTL) -fält följt av SOA-registreringsstart. TTL instruerar icke-auktoritativa DNS-servrar hur länge att cache-poster som hämtas från zonfilen. Ju längre denna period, desto längre tid tar det för att sprida ändringar i zonfilerna. Ju kortare TTL, desto hårdare dina DNS-servrar kommer att fungera, blir icke-auktoritativa servrar att fråga samma fråga oftare. Värden från några timmar till en dag är rimliga.
Ett heltal TTL-värde tolkas som sekunder, men för de av oss som inte går räknare, läggs m i slutet betyder minuter, h timmar, d dagar och w veckor. En dag skulle representeras av någon av följande rader:
$ TTL 86400
$ TTL 1440m
$ TTL 24h
$ TTL 1d
SOA-sektionen är en skrämmande kodkod för de oinitierade, men varje fält i SOA har en meningsfull syfte. Ta en bit i taget, det är enkelt. SOA börjar med zonens primära domännamn (Vi använder tech-recipes.com i detta recept.), Klassen av zonen (IN), SOA och följande sju fält i ordning:
MNAME Huvuddns-servern för zonen (till exempel ns1.tech-recipes.com.).
RNAME En e-postadress för någon som är ansvarig för domänen (med @ ersatt med en.) Som nospam.tech-recipes.com.
Serienummer Detta värde är kanske den största källan till DNS-relaterat huvudskrapa. För att göra saker snabbt och effektivt, behandlar BIND zonfiler i ett annat format. När BIND laddar upp en zonfil vid start, kontrollerar den serienumret och bearbetar endast zonfilen om serienumret är större än den tidigare behandlade versionen. Så om du ändrar zonfilen men inte serienumret, ignorerar BIND ändringarna.
Ett vanligt format för serienumret innehåller datumet och ett unikt serienummer (YYYYMMDDNN) som 2004010402 för den andra versionen (02) av filen den 4 januari 2004. Det gör det möjligt för 100 ändringar av filen på en dag. Om fler ändringar krävs, rekommenderar jag att du går hem för en god natts sömn.
Uppdatera Sekundära eller slavservrar kan konfigureras att polla masterservern med denna period för att kontrollera om serienumret har ändrats och därför om den behöver uppdatera zonfilen.
Försök igen Om huvuds DNS-servern för zonen misslyckas med att svara på en slavservers begäran om en uppdatering, frågar slaveservern det ofta. Vanligtvis en timme eller mindre.
Upphöra I händelse av ett misslyckande av huvud DNS-servern fortsätter en slavserver att använda sin befintliga data under denna tidsperiod. När den förflutna tiden har gått, anses uppgifterna oavbrutna och kommer inte att användas när domänen inte längre löser sig. Det här värdet ska vara tillräckligt lång för att möjliggöra korrigering av masterserveravbrott, i veckans ordning.
Negativ caching TTL Negativa svar (till exempel när en begärd post inte finns) kan också cachas på icke-auktoritativa servrar. Detta fält fungerar som den totala TTL men specifikt för negativa svar. Små värden är lämpliga (15m till 2h).
Fälten kan placeras inom parentes om de sträcker sig över mer än en rad. Om du lägger samman detta är följande zonfilen (minus eventuella resursrekord) för domänen tech-recipes.com:
$ TTL 1d
tech-recipes.com. I SOA ns1.tech-recipes.com (
nospam.tech-recipes.com
2004010402
1h
15m
4w
1h)
Den största gotchaen med DNS-zonfiler är korrekt användning av fullständigt kvalificerad domännamnssyntax. Det innebär att ett fullständigt domännamn slutar med en period (tech-recipes.com.) - Utan denna period antar BIND att du använder stenografi och lägger till zonens standard domännamn till slutet av namnet (så tech -recipes.com skulle verkligen betyda tech-recipes.com.tech-recipes.com.).