Formatul unui fișier de zonă este definit în RFC 1035 (secțiunea 5) și RFC 1034 (secțiunea 3.6.1). Acest format a fost folosit inițial de pachetul software Berkeley Internet Name Domain (BIND), dar a fost adoptat pe scară largă de alte software-uri de servere DNS – deși unele dintre ele (de exemplu NSD, PowerDNS) folosesc fișierele de zonă doar ca punct de plecare pentru a le compila în format de bază de date, a se vedea și Microsoft DNS cu integrare Active Directory-bază de date.
Un fișier de zonă este o secvență de intrări orientate pe linii, fiecare dintre acestea fiind fie o directivă, fie o descriere de text care definește o singură înregistrare de resurse (RR). O intrare este compusă din câmpuri separate de orice combinație de spații albe (tabulări și spații) și se termină la o limită de linie, cu excepția cazului în care se află în interiorul unei valori de câmp de tip șir citat sau a unei perechi de paranteze de formatare care le înglobează. Orice linie se poate termina cu un text de comentariu precedat de un punct și virgulă, iar fișierul poate conține, de asemenea, orice număr de linii goale.
Întrările pot apărea în orice ordine într-un fișier de zonă, cu unele excepții.
Directivele sunt intrări de control care afectează restul fișierului de zonă. Primul câmp al unei directive constă dintr-un semn de dolar urmat de un cuvânt cheie:
- $ORIGIN este urmat de un nume de domeniu care să fie utilizat ca origine pentru numele de domeniu relative ulterioare.
- $INCLUDE este urmat de un nume de fișier și de un nume de domeniu de origine opțional care să fie utilizat la interpretarea conținutului său (care este tratat ca și cum ar apărea în fișierul părinte, urmat de o resetare la valoarea de origine care precede evaluarea directivei).
- $TTL, definită în RFC 2308 (secțiunea 4), este urmată de un număr care urmează să fie utilizat ca TTL (time-to-live) implicit.
- $GENERATE, o extensie non-standard acceptată de BIND și de alte programe de server de nume pentru a insera mai multe înregistrări de resurse cu o singură intrare, este urmată de o reprezentare concisă a unei secvențe crescânde de numere nenegative și apoi de o intrare RR model. Se adaugă o înregistrare de resursă pentru fiecare număr din secvență, utilizând șablonul cu caracterele „$” necompletate înlocuite cu numărul.
O intrare a unei înregistrări de resurse constă din mai multe câmpuri, după cum urmează (ambele ordonări ale câmpurilor sunt acceptabile și pot fi utilizate interschimbabil):
name | ttl | record class | record type | record data |
name | record class | ttl | record type | record data |
Câmpul name poate fi lăsat gol. În caz afirmativ, înregistrarea moștenește câmpul de la înregistrarea anterioară. Un @ liber este utilizat pentru a indica originea curentă.
Câmpului ttl specifică numărul de secunde după care un client de cache trebuie să arunce înregistrarea și să efectueze o nouă operațiune de rezoluție pentru a obține informații noi. Unele servere de nume, inclusiv BIND, permit reprezentări nestandardizate care utilizează abrevieri ale unităților de timp (de exemplu, „2d” înseamnă două zile de 24 de ore sau „1h30m” înseamnă o oră și 30 de minute). Poate fi omis, caz în care valoarea rezultată va fi stabilită de la TTL implicit (dacă este definit) sau de la înregistrarea precedentă.
Câmpul de clasă de înregistrare indică spațiul de nume al informațiilor de înregistrare. Poate fi omis, caz în care valoarea rezultată va fi stabilită din înregistrarea precedentă. Spațiul de nume cel mai frecvent utilizat este cel al internetului, indicat de parametrul IN, dar există și altele care sunt utilizate, de exemplu, CHAOS.
Câmpului tip de înregistrare este o abreviere pentru tipul de informații stocate în ultimul câmp, date de înregistrare. De exemplu: o înregistrare de adresă (tip A pentru IPv4, sau tip AAAA pentru IPv6,) pune în corespondență numele de domeniu din primul câmp cu o adresă IP din datele înregistrării; o înregistrare de schimbător de corespondență (tip MX) specifică gazda de corespondență SMTP (Simple Mail Transfer Protocol) pentru un domeniu.
Câmpurile de date ale înregistrării pot consta din unul sau mai multe elemente de informații, în funcție de cerințele fiecărui tip de înregistrare. De exemplu, o înregistrare de adresă necesită doar o adresă, în timp ce o înregistrare de schimbător de corespondență necesită o prioritate și un nume de domeniu. Astfel de elemente de informații sunt reprezentate sub formă de câmpuri separate prin spații albe.
Exemplu de fișierEdit
Un exemplu de fișier de zonă pentru domeniul example.com este următorul:
$ORIGIN example.com. ; designates the start of this zone file in the namespace$TTL 3600 ; default expiration time (in seconds) of all RRs without their own TTL valueexample.com. IN SOA ns.example.com. username.example.com. ( 2020091025 7200 3600 1209600 3600 )example.com. IN NS ns ; ns.example.com is a nameserver for example.comexample.com. IN NS ns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.comexample.com. IN MX 10 mail.example.com. ; mail.example.com is the mailserver for example.com@ IN MX 20 mail2.example.com. ; equivalent to above line, "@" represents zone origin@ IN MX 50 mail3 ; equivalent to above line, but using a relative host nameexample.com. IN A 192.0.2.1 ; IPv4 address for example.com IN AAAA 2001:db8:10::1 ; IPv6 address for example.comns IN A 192.0.2.2 ; IPv4 address for ns.example.com IN AAAA 2001:db8:10::2 ; IPv6 address for ns.example.comwww IN CNAME example.com. ; www.example.com is an alias for example.comwwwtest IN CNAME www ; wwwtest.example.com is another alias for www.example.commail IN A 192.0.2.3 ; IPv4 address for mail.example.commail2 IN A 192.0.2.4 ; IPv4 address for mail2.example.commail3 IN A 192.0.2.5 ; IPv4 address for mail3.example.com
Cel puțin, fișierul de zonă trebuie să specifice înregistrarea SOA (Start of Authority) cu numele serverului de nume principal care face autoritate pentru zonă și adresa de e-mail a unei persoane responsabile de gestionarea serverului de nume (reprezentată ca un nume de domeniu, cu un caracter punct în loc de simbolul obișnuit @). Parametrii înregistrării SOA specifică, de asemenea, o listă de parametri de sincronizare și de expirare (numărul de serie, perioada de reîmprospătare a sclavului, timpul de reîncercare a sclavului, timpul de expirare a sclavului și timpul maxim de stocare în memoria cache a înregistrării). Unele servere de nume, inclusiv BIND, necesită, de asemenea, cel puțin o înregistrare NS suplimentară.
În fișierul de zonă, numele de domeniu care se termină cu un caracter punct (cum ar fi „exemplu.com.” în exemplul de mai sus) sunt complet calificate, în timp ce cele care nu se termină cu punct sunt relative la originea curentă (motiv pentru care www din exemplul de mai sus se referă la www.example.com).
.