5. Master Files (File master)
I file master (Master Files) sono file di testo che contengono RR in forma testuale. Poiché il contenuto di una zona può essere espresso sotto forma di un elenco di RR, un file master è più spesso utilizzato per definire una zona, sebbene possa essere utilizzato per elencare il contenuto di una cache.
Questa sezione tratta prima il formato degli RR in un file master, e poi le considerazioni speciali quando un file master viene utilizzato per creare una zona in qualche name server.
5.1. Format (Formato)
Il formato dei file master è una sequenza di voci.
Regole generali
Formato orientato alle righe :
- Le voci sono prevalentemente orientate alle righe
- Le parentesi possono essere utilizzate per continuare un elenco di elementi oltre un limite di riga
- I letterali di testo possono contenere CRLF all'interno del testo
Delimitatori :
- Qualsiasi combinazione di tabulazioni e spazi funge da delimitatore tra gli elementi separati
Commenti :
- La fine di qualsiasi riga può terminare con un commento
- I commenti iniziano con un
;(punto e virgola) - Il resto della riga dopo
;viene ignorato
Righe vuote :
- Le righe vuote, con o senza commenti, sono consentite ovunque nel file
Tipi di voci
Sono definite le seguenti voci:
<blank>[<comment>]
$ORIGIN <domain-name> [<comment>]
$INCLUDE <file-name> [<domain-name>] [<comment>]
<domain-name><rr> [<comment>]
<blank><rr> [<comment>]
Voci di controllo
Sono definite due voci di controllo: $ORIGIN e $INCLUDE.
$ORIGIN :
- Seguito da un nome di dominio
- Reimposta l'origine corrente per i nomi di dominio relativi al nome indicato
- Esempio:
$ORIGIN example.com.
$INCLUDE :
- Inserisce il file nominato nel file corrente
- Può opzionalmente specificare un nome di dominio che imposta l'origine del nome di dominio relativo per il file incluso
- Può anche avere un commento
- Nota: Una voce $INCLUDE non cambia mai l'origine relativa del file genitore, indipendentemente dalle modifiche all'origine relativa apportate all'interno del file incluso
- Esempio:
$INCLUDE /var/named/example.com.hosts
Voci di resource record
Le ultime due forme di voce rappresentano RR:
Regole del nome del proprietario :
- Se una voce per un RR inizia con uno spazio vuoto, si presume che l'RR appartenga all'ultimo proprietario dichiarato
- Se una voce RR inizia con un
<domain-name>, il nome del proprietario viene reimpostato
Formato RR :
Il contenuto di <rr> assume una delle seguenti forme:
[<TTL>] [<class>] <type> <RDATA>
[<class>] [<TTL>] <type> <RDATA>
Descrizioni dei campi :
- TTL : Opzionale, intero decimale che rappresenta il tempo di vita in secondi
- Class : Opzionale, mnemonico standard (ad es., IN)
- Type : Richiesto, mnemonico standard (ad es., A, NS, MX)
- RDATA : Richiesto, dati appropriati al tipo e alla classe
Valori predefiniti :
- I valori di classe e TTL omessi vengono impostati per impostazione predefinita sugli ultimi valori esplicitamente dichiarati
- Poiché i mnemonici di tipo e classe sono disgiunti, l'analisi è univoca
5.2. Domain Names in Master Files (Nomi di dominio nei file master)
I <domain-name> costituiscono una grande parte dei dati nel file master.
Rappresentazione delle etichette
Formato di base :
- Le etichette nel nome di dominio sono espresse come stringhe di caratteri e separate da punti
- Le convenzioni di citazione consentono di memorizzare caratteri arbitrari nei nomi di dominio
Nomi assoluti vs. relativi :
-
Nomi assoluti (Absolute Names) : I nomi di dominio che terminano con un punto sono chiamati assoluti e sono considerati completi
- Esempio:
www.example.com.
- Esempio:
-
Nomi relativi (Relative Names) : I nomi di dominio che non terminano con un punto sono chiamati relativi
- Il nome di dominio effettivo è la concatenazione della parte relativa con un'origine specificata in un $ORIGIN, $INCLUDE, o come argomento alla routine di caricamento del file master
- Un nome relativo è un errore quando non è disponibile alcuna origine
- Esempio:
wwwcon origineexample.com.diventawww.example.com.
Stringhe di caratteri
<character-string> è espresso in uno di due modi:
- Non quotato : Un insieme contiguo di caratteri senza spazi interni
- Quotato : Una stringa che inizia con
"e termina con"- All'interno di una stringa delimitata da
", può apparire qualsiasi carattere tranne un"stesso - Un
"deve essere quotato usando\(barra inversa)
- All'interno di una stringa delimitata da
5.3. Special Encodings (Codifiche speciali)
Poiché i file master sono file di testo, sono necessarie diverse codifiche speciali per consentire il caricamento di dati arbitrari.
Caratteri e sequenze speciali
. (punto) :
- Un
.isolato denota la radice - Esempio: In
example.com., il.finale denota la radice
@ (chiocciola) :
- Un
@isolato è utilizzato per denotare l'origine corrente - Esempio:
@ IN SOA ...si riferisce all'origine della zona
\X (escape con barra inversa) :
- Dove X è qualsiasi carattere diverso da una cifra (0-9)
- Utilizzato per quotare quel carattere in modo che il suo significato speciale non si applichi
- Esempi:
\.può essere utilizzato per inserire un carattere punto in un'etichetta\;può essere utilizzato per includere un punto e virgola in una stringa (non come commento)\\rappresenta un carattere barra inversa
\DDD (escape decimale) :
- Dove ogni D è una cifra
- Rappresenta l'ottetto corrispondente al numero decimale descritto da DDD
- L'ottetto risultante è assunto essere testo e non viene controllato per un significato speciale
- Esempio:
\065rappresenta il carattere 'A' (ASCII 65)
( ) (parentesi) :
- Le parentesi sono utilizzate per raggruppare dati che attraversano un limite di riga
- In effetti, le terminazioni di riga non sono riconosciute all'interno delle parentesi
- Utile per i record SOA e altre voci multi-riga
; (punto e virgola) :
- Il punto e virgola è utilizzato per iniziare un commento
- Il resto della riga viene ignorato
5.4. Use of Master Files to Define Zones (Uso dei file master per definire zone)
Quando un file master viene utilizzato per caricare una zona, l'operazione dovrebbe (SHOULD) essere soppressa se vengono rilevati errori nel file master.
Motivazione
La motivazione è che un singolo errore può avere conseguenze diffuse. Ad esempio:
- Supponiamo che gli RR che definiscono una delegazione abbiano errori di sintassi
- Allora il server restituirà errori di nome autorevoli per tutti i nomi nella sottozona
- (tranne nel caso in cui la sottozona sia anche presente sul server)
Controlli di validità
Diversi controlli di validità dovrebbero (SHOULD) essere eseguiti oltre a garantire che il file sia sintatticamente corretto:
-
Coerenza della classe : Tutti gli RR nel file dovrebbero (SHOULD) avere la stessa classe
-
Requisito SOA : Esattamente un RR SOA dovrebbe (SHOULD) essere presente nella parte superiore della zona
-
Informazioni glue : Se sono presenti delegazioni e sono richieste informazioni glue, esse dovrebbero (SHOULD) essere presenti
-
Dati autoritativi : Le informazioni presenti al di fuori dei nodi autoritativi nella zona dovrebbero (SHOULD) essere informazioni glue, piuttosto che il risultato di un'origine o di un errore simile
5.5. Master File Example (Esempio di file master)
Il seguente è un esempio di file che potrebbe essere utilizzato per definire la zona ISI.EDU ed è caricato con un'origine di ISI.EDU:
@ IN SOA VENERA Action\.domains (
20 ; SERIAL
7200 ; REFRESH
600 ; RETRY
3600000; EXPIRE
60) ; MINIMUM
NS A.ISI.EDU.
NS VENERA
NS VAXA
MX 10 VENERA
MX 20 VAXA
A A 26.3.0.103
VENERA A 10.1.0.52
A 128.9.0.32
VAXA A 10.2.0.27
A 128.9.0.33
$INCLUDE <SUBSYS>ISI-MAILBOXES.TXT
Analisi dell'esempio
Record SOA :
@rappresenta l'origine della zona (ISI.EDU.)VENERAè il name server primario (nome relativo, diventaVENERA.ISI.EDU.)Action\.domainsè la mailbox della persona responsabile ([email protected])- Notare l'uso di
\per fare l'escape del punto nell'indirizzo email
- Notare l'uso di
- Numero di serie: 20
- Refresh: 7200 secondi (2 ore)
- Retry: 600 secondi (10 minuti)
- Expire: 3600000 secondi (circa 41,67 giorni)
- Minimum: 60 secondi
Record NS :
- Tre name server:
A.ISI.EDU.(assoluto),VENERA(relativo),VAXA(relativo)
Record MX :
- Scambiatore di posta primario:
VENERAcon preferenza 10 - Scambiatore di posta secondario:
VAXAcon preferenza 20
Record A :
A.ISI.EDU.ha un indirizzo IPv4VENERA.ISI.EDU.ha due indirizzi IPv4 (multihomed)VAXA.ISI.EDU.ha due indirizzi IPv4 (multihomed)
Direttiva $INCLUDE :
- Include un file esterno contenente record di mailbox
5.6. Common Master File Patterns (Modelli comuni di file master)
Modello 1: File di zona semplice
$ORIGIN example.com.
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ns1.example.com.
IN NS ns2.example.com.
ns1 IN A 192.0.2.1
ns2 IN A 192.0.2.2
www IN A 192.0.2.10
5.7. Best Practices (Migliori pratiche)
-
Utilizzare sempre nomi assoluti per riferimenti esterni : I nomi fuori dalla vostra zona dovrebbero terminare con un punto
-
Usare $ORIGIN con attenzione : Impostarlo all'inizio ed evitare di cambiarlo inutilmente
-
Includere numeri di serie : Incrementare sempre il numero di serie quando si apportano modifiche
-
Usare commenti : Documentare il file di zona con commenti
-
Testare prima del deployment : Utilizzare strumenti come
named-checkzoneper validare la sintassi -
Mantenere la coerenza : Mantenere una formattazione coerente per la leggibilità
-
Backup : Mantenere sempre backup dei file di zona funzionanti prima di apportare modifiche
Successivo : 6. Name Server Implementation (Implementazione del name server)