I record SOA: elemento fondamentale di ogni file di zona
Per ogni utente di Internet è normale che per raggiungere la pagina iniziale di un sito web si debba inserire il relativo URL nel browser. Nessuno nota che il computer in realtà stabilisce una connessione a un indirizzo IP. Per questo dobbiamo ringraziare il Domain Name System (DNS) e la sua funzione di risoluzione dei nomi. Il nome di un dominio viene risolto nella rispettiva sequenza di numeri e i name server dei file di zona fanno sì che il sistema funzioni. Questi semplici file di testo contengono numerosi record DNS senza i quali il DNS non potrebbe funzionare.
Esistono oltre 100 tipi di record DNS. Nel nostro articolo di approfondimento sui record DNS abbiamo preparato per voi un elenco completo dei diversi tipi e spiegato qual è il relativo principio di base.
I più noti sono certamente i record A, che garantiscono l'effettiva risoluzione dei nomi. Ci sono poi, ad esempio, i record PTR, che abilitano il Reverse DNS, o i record MX, relativi alla comunicazione via e-mail. Ma a cosa servono i record SOA?
Come funzionano i record SOA?
Il DNS è un sistema gerarchico decentralizzato: i name server non forniscono informazioni a qualunque server su Internet, ma solo a quelli situati nella zona assegnata. A tale scopo, i server DNS gestiscono i file di zona: si tratta di semplici file di testo che elencano tutti i record DNS della zona. Per chiarire le responsabilità, ogni file di zona deve contenere un record SOA. SOA sta per "Start of Authority". Il record fornisce quindi, tra l'altro, informazioni sull'eventuale responsabilità per la richiesta del server indirizzato.
Il record SOA è particolarmente importante nel caso di un cluster di server. Invece di sostenere il carico completo di tutte le richieste, queste vengono distribuite su diversi dispositivi. Affinché i file di zona siano aggiornati su tutti i server, è necessario effettuare regolarmente un trasferimento di zona. I cosiddetti slave (cioè i server gerarchicamente inferiori) confrontano i loro file con quelli del master. Il trasferimento di zona viene gestito dal record SOA. A tale scopo, questo tipo di record DNS contiene varie informazioni.
Struttura del record
I record DNS sono costituiti essenzialmente da diversi campi, che contengono tutte le informazioni pertinenti. Rispetto ad altri record, il record SOA dispone di molti campi:
- <name>: nome della zona
- <class>: classe di rete
- <type>: tipo di record
- <mname>: nome del master
- <rname>: indirizzo e-mail dell'amministratore responsabile
- <serial>: numero di serie incrementale che specifica la versione del file di zona
- <refresh>: specifica il momento in cui uno slave deve richiedere la versione aggiornata del master
- <retry>: specifica quando uno slave deve eseguire nuovamente un tentativo di richiesta fallito
- <expire>: specifica quando uno slave, in assenza di risposta da parte del master, non comunica più informazioni DNS
- <minimum>: specifica l’arco di tempo in cui una cache può tenere in memoria le informazioni
I primi tre campi sono tipici dei record DNS. Il nome della zona è un nome di dominio sotto forma di Fully Qualified Domain Name (FQDN). Questo significa che ogni indicazione termina con un punto, a differenza di quanto avviene in un URL. Questo perché un FQDN rappresenta la struttura gerarchica completa del dominio al termine del quale si trova la directory principale, che però rimane vuota, quindi rimane solo il punto di separazione. Questa notazione si trova in tutti i nomi di dominio nel DNS, compresi i campi MNAME e RNAME.
Per quanto riguarda il campo della classe, questo ha solo rilevanza storica e viene quindi spesso omesso. Ai tempi dello sviluppo del DNS esistevano, oltre a Internet, altri due progetti: Hesiod (HS) e Chaos (CH). Entrambi sono ormai obsoleti, motivo per cui in questo campo è possibile utilizzare solo Internet, con l'abbreviazione IN. Il tipo si riferisce al tipo di record DNS utilizzato, in questo caso SOA.
MNAME è conosciuto anche come Primary Master e specifica qual è il server superiore dello slave. Questo definisce quindi il name server responsabile per un trasferimento di zona. Quando si formatta l'indirizzo e-mail nel campo RNAME, dovete prestare attenzione ad alcune caratteristiche speciali. Il carattere @ non è consentito nella notazione, quindi viene utilizzato un punto per separare la parte locale (ad esempio il nome utente) dal dominio. Se c'è un punto davanti al carattere @ nell'indirizzo e-mail originale, dovete contrassegnarlo con una barra rovesciata (\).
Il numero di serie deve aumentare in modo incrementale a ogni modifica del file di zona. Ci sono due varianti. In una procedura semplice il numero di serie può iniziare da 1 e aumentare di uno a ogni modifica. Con questa opzione, il numero di serie indica anche quante modifiche sono già state apportate.
L'altra opzione è quella di adottare un formato di data: AAAAMMGGVV. Questo numero inizia con l'indicazione dell'anno a quattro cifre, seguita dal mese e dal giorno (due cifre ciascuno) e si conclude con il numero di versione, anch'esso a due cifre. Con questo formato è quindi possibile vedere la data in cui è stata creata la versione. Con ogni cambiamento che avviene nello stesso giorno, il numero di versione aumenta di uno. In caso di un nuovo giorno, il numero di serie viene indicato nella posizione corrispondente e il numero di versione viene resettato a 00.
Il record SOA si conclude con tre o quattro indicazioni temporali, ciascuna espressa in secondi. Il primo campo ("Refresh") indica l'intervallo di tempo che trascorre prima che lo slave richieda un file di zona aggiornato al master. Se questa richiesta non riceve risposta, il campo "Retry" indica quando viene effettuato un nuovo tentativo. È importante che l'intervallo di tempo del secondo campo sia inferiore rispetto a quello del primo.
Se il server gerarchicamente inferiore non riceve alcuna risposta, sarà il terzo campo ("Expire") a determinare per quanto tempo il file di zona può essere ancora utilizzato prima che il server smetta di fornire informazioni DNS. Se il server continuasse a inviare i dati del vecchio file di zona ai client richiedenti, questi potrebbero non essere più validi, comportando problemi di connessione e rischi per la sicurezza.
Infine c'è il campo "Minimum", che indica il Time to live, come quello di altri tipi di record DNS. Questo record specifica per quanto tempo un client può conservare le informazioni richieste nella cache prima che debba essere inviata una nuova richiesta. Nella maggior parte dei casi, tuttavia, il TTL viene impostato per l'intera zona con l'istruzione $TTL, grazie alla quale non sarà più necessario indicarlo nei singoli record. Il nome della zona può anche essere specificato all'inizio del file, quindi con l'istruzione $ORIGIN.
La voce appare sempre all'inizio del file di zona.
<name> <class> <type> <mname> <rname> <serial> <refresh> <retry> <expire> <minimum>
I campi possono essere elencati uno dopo l'altro all'interno di una riga. Rispetto ad altri tipi di record, il record SOA è relativamente ampio. Per garantire maggiore chiarezza, i campi sono solitamente annidati e disposti uno sotto l'altro.
$ORIGIN
$TTL
@ <class> <type> <mname> <rname> (
<serial>
<refresh>
<retry>
<expire>
<minimum>
)
In questa notazione, il TTL e il nome di dominio vengono definiti in anticipo. Il carattere @ all'inizio del record si riferisce all'istruzione Origin. Per annidare le indicazioni temporali e distribuirli su più righe si utilizzano le parentesi tonde.
Esempio di record SOA
Nessun file di zona è valido senza un record SOA all'inizio. I record SOA si presentano in questo modo:
$ORIGIN example.org.
$TTL 1750
@ IN SOA master.example.org admin\.master.example.org (
2019040502 ; serial
86400 ; refresh
7200 ; retry
3600000 ; expire
1750 ; minimum
)
IN NS a.iana-servers.net.
www IN A 93.184.216.34
In questo estratto esemplificativo di un file di zona abbiamo aggiunto più informazioni rispetto al solo record SOA per rendere il posizionamento un po' più chiaro. Il file inizia con i dettagli del nome di dominio (in questo caso example.org) e il TTL. Poi segue il record SOA. Poiché abbiamo già definito la zona nell'istruzione $ORIGIN, è sufficiente indicare qui il carattere @ come riferimento.
Il master (fittizio) della zona segue direttamente dopo le indicazioni relative alla classe di rete e al tipo di record. Dopo di che trovate l'indirizzo e-mail dell'amministratore. Il punto qui può essere inserito grazie alla barra rovesciata che, in questo caso, è un carattere di escape. Il punto successivo sostituisce il carattere @ dell'indirizzo effettivo, mentre quello successivo delimita come di consueto il dominio di primo livello (TLD). Con una parentesi viene aperta l'area annidata, che può poi essere suddivisa in più righe. I valori possono essere scritti anche uno dopo l'altro ed essere separati solo da spazi.
In questo esempio abbiamo indicato anche la relativa funzione dei singoli record, ma questi non sono altro che commenti, che possono essere scelti dall'utente o semplicemente omessi. Nei record DNS, questi commenti, destinati esclusivamente agli utenti umani, vengono contrassegnati da un punto e virgola.
Alla fine del record SOA è necessario chiudere la parentesi.
Abbiamo aggiunto poi un record NS e un record A nel file di zona esemplificativo. Questi indicano che il record SOA deve precedere tutti gli altri, a eccezione delle istruzioni per il dominio e il TTL.
Verifica dei record SOA
Se desiderate verificare il record SOA di un sito web, potete installare un software specifico o utilizzare un servizio web. Con Google Public DNS, il server DNS del motore di ricerca, controllare i record SOA è facile e veloce: non dovete fare altro che inserire il dominio nella pagina iniziale del servizio. Nella pagina seguente ottenete già un risultato, che però si riferisce al record A. Selezionate quindi SOA nel campo corrispondente ed effettuate nuovamente la ricerca.
Il Public DNS offre ancora più opzioni: EDNS Client Subnet è una funzione per stabilire connessioni più efficienti con i DNS che viene attualmente offerta solo da Google e OpenDNS. DNSSEC garantisce, invece, che le informazioni ricevute tramite DNS provengano effettivamente dall'autore. I dati che vengono trasmessi senza questa misura di sicurezza possono teoricamente essere manipolati da terzi. Entrambe le opzioni possono essere lasciate invariate per la semplice verifica del record SOA.
La richiesta viene visualizzata alla voce "Question", mentre il risultato è consultabile alla voce "Answer". Nel campo "Data" della risposta potete vedere il server principale, l'indirizzo e-mail della persona responsabile e le informazioni temporali. Da notare che l'ultimo valore (Minimum) differisce da quello del TTL per un solo secondo. Questo secondo è probabilmente già trascorso dopo la richiesta, motivo per cui si verifica questa discrepanza minima.
Una caratteristica speciale è l'indicazione al punto "type": al posto del nome SOA, troverete il numero 6 sia nella richiesta che nella risposta. L'Internet Assigned Numbers Authority (IANA) ha assegnato un valore individuale a ogni tipo di record DNS. Anche i tipi di record obsoleti che non vengono (più) utilizzati corrispondono a un numero. Il risultato è un elenco quasi completo dei diversi tipi. In questo sistema, i record SOA vengono indicati con il numero 6.