Panoramica generale del DNS

Questa pagina fornisce una panoramica del DNS (Domain Name System).

Per una panoramica di Cloud DNS, consulta la Panoramica di Cloud DNS. Per i termini chiave relativi a Cloud DNS, consulta Termini chiave.

Il DNS è un database distribuito gerarchico che archivia indirizzi IP e altri dati e consente query per nome.

In altre parole, il DNS è un elenco di nomi di dominio leggibili che vengono convertiti in indirizzi IP numerici utilizzati dai computer per comunicare tra loro. Ad esempio, quando digiti un URL in un browser, il DNS lo converte in un indirizzo IP di un server web associato a quel nome. Le directory DNS vengono archiviate e distribuite in tutto il mondo su server dei nomi di dominio che vengono aggiornati regolarmente.

I seguenti concetti sono utili quando lavori con il DNS.

Tipi di server DNS

Un server DNS archivia un database di nomi di dominio, quindi elabora i nomi di dominio in base alle query DNS provenienti da un client in una rete.

Server autoritativo

Un server autoritativo è un server che contiene i record dei nomi DNS, inclusi A, AAAA e CNAME.

Un server non autoritativo crea un file della cache in base alle query precedenti per i domini. Non contiene record di nomi originali.

Resolver ricorsivo

Un resolver ricorsivo è il server che invia una query al server autoritativo o non autoritativo per la risoluzione. Un resolver ricorsivo è chiamato così perché esegue ogni query per un determinato nome e restituisce il risultato finale.

Questo lo differenzia da un resolver iterativo, che restituisce solo un referral ai server DNS successivi che potrebbero avere la risposta.

Ad esempio, quando risolve il nome google.com., il resolver ricorsivo deve determinare il server autoritativo per . (la zona radice del DNS). Dopodiché chiede a questi server dei nomi quale è autoritativo per .com.. Infine, chiede a questi server dei nomi quale è autoritativo per google.com. e i dati RDATA per il record A vengono restituiti al client.

Di seguito è riportato un esempio di funzionamento di un resolver ricorsivo. Se esegui dig +trace google.com, il resolver ricorsivo (8.8.8.8/Google Public DNS è uno di questi resolver) esegue questa azione:

 dig +trace google.com
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> +trace google.com
;; global options: +cmd
.           168383  IN  NS  a.root-servers.net.
.           168383  IN  NS  b.root-servers.net.
.           168383  IN  NS  c.root-servers.net.
.           168383  IN  NS  d.root-servers.net.
.           168383  IN  NS  e.root-servers.net.
.           168383  IN  NS  f.root-servers.net.
.           168383  IN  NS  g.root-servers.net.
.           168383  IN  NS  h.root-servers.net.
.           168383  IN  NS  i.root-servers.net.
.           168383  IN  NS  j.root-servers.net.
.           168383  IN  NS  k.root-servers.net.
.           168383  IN  NS  l.root-servers.net.
.           168383  IN  NS  m.root-servers.net.
.           168383  IN  RRSIG   NS 8 0 518400 20190810170000 20190728160000 59944 .
    ITqCp5bSKwoG1P76GpNfDanh4fXxOtHuld5SJzEm9ez0U/K7kpmBm4TE
    cw82zuqtZlqiGOuq+90KHJEhD1fdX3FujgDqe3kaY/41LgFIo76RBeMP
    CorYg29lKQOBf7pLPiJWewFmnLsRXsvENzxNXl9mynX80EQSS2YlCWpr
    47i2j5SFpGDzmxls7LinB4VvwVLhy0FPwBaVc5NVqQoFS5ZkfKXCUz8x
    urExPT2OtPJeDiGzrQGmT6vDbYZtJRWWGK5tPIKZQyF/08YSJlrjebNa
    1nKZVN8SsO8s7elz6JGmdoM6D/1ByLNFQmKvU55ikaVSnXylqixLbJQI 7LyQoA==
;; Received 525 bytes from 127.0.0.1#53(127.0.0.1) in 22 ms

com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net.
com.            86400   IN  DS  30909 8 2
    E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400   IN  RRSIG   DS 8 1 86400 20190811170000 20190729160000 59944 .
    KXPRdZspxd6hZYRFx3cj7Yp3d6HDzOG5CmoK46ZrrlKnZkCYMPKzyFQ2
    15pA+jZ37MbQbhe6+S+C4AHWqv95DDsue85ha3ZmWGhnJxcLnDaL5Twp
    Z/W/a+1cTHhhbMZua1riw74mqvzRAF1kVerj7jrvWnOAOZCh69Dr4AFJ
    gRN4MAn+wCZDmPQCtkcGVJ9vyNV7Xra45B4ISqEo0xi8CXewp9cc+aW5
    TSjFRhj1RM9d3k+3Mrq6AAV8dVgWofYTg6Ihph/SfoIx4TrTrEbgfdsv
    MvuLPXvK6Y7oSh5WknbFduw7HQdo1jH3/QR54FORswBJT8VmYD7Zii88 tAjbRQ==
;; Received 1170 bytes from 192.58.128.30#53(j.root-servers.net) in 2 ms

google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  ns1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 -
    CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2
    86400 20190803044434 20190727033434 17708 com.
    rMmiNL7bYvJpB3Bc+WnqS2iiczm2PwxBvJcl7SL/vcTj88GsxM1ycTSV
    PsHZHxfrv1dv2C5BCSZ+mzeVBu8upLoeraQy+UVf3VXyt3i3rNGzcXYV
    8HSrHcXrRoAJopFim3Ge1xdZ+uERg3cTIcN2tJxxkCeqt/EcUTqtQl8t EAc=
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN NSEC3 1 1 0 -
    S84CFH3A62N0FJPC5D9IJ2VJR71OGLV5 NS DS RRSIG
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN RRSIG NSEC3
    8 2 86400 20190804045723 20190728034723 17708 com.
    jypPsaWVop9rzuf70CFYyiK0hliiJ+YYtkjgb3HVj9ICc57kLmv9DkvG
    DddF5GBQpqNEakzyJtya179MAdDT7RhJB4XfmY6fu5I5QTeIjchfP5wt
    7gU1AL7cqTmBAo2RWu62vtUytV09+O3KGFq5O+Cwr11dSTfq1yYyw6YW cMI=
;; Received 772 bytes from 192.41.162.30#53(l.gtld-servers.net) in 2 ms

google.com.     300 IN  A   172.217.7.14
;; Received 55 bytes from 216.239.32.10#53(ns1.google.com) in 13 ms

Ogni client DNS invia query a un server dei nomi. Un resolver ricorsivo invia query ad altri server dei nomi, fino a raggiungere un server dei nomi di primo livello, se necessario. Il record NS per una zona su un server dei nomi di livello superiore indirizza il resolver verso il basso a un altro server dei nomi, fino a raggiungere un server dei nomi che ha memorizzato nella cache la zona o il server autoritativo per la zona.

Zone

Zona pubblica

Una zona pubblica è visibile su internet. Puoi creare record DNS in una zona pubblica per pubblicare il tuo servizio su internet. Ad esempio, potresti creare un record A in una zona pubblica chiamata example.com. (nota il punto finale) per il tuo sito web pubblico www.example.com..

Zona privata

Una zona privata è una zona su cui non è possibile fare query tramite la rete internet pubblica.

Sottozona delegata

Il DNS consente al proprietario di una zona di utilizzare record NS per delegare un sottodominio a un server dei nomi diverso. I resolver seguono questi record e inviano query per il sottodominio al server dei nomi di destinazione specificato nella delega.

Ad esempio, puoi creare zone separate per example.com e subdomain.example.com, ognuna con il proprio server dei nomi autoritativo. Poiché subdomain.example.com è un dominio secondario di example.com, il metodo per consentire l'individuazione del server dei nomi autoritativo per il sottodominio dalla zona del dominio principale è detto delega. La delega è essenzialmente un puntatore al server dei nomi autoritativo per un sottodominio. Per abilitare la delega in Cloud DNS, puoi aggiungere record NS per i sottodomini nella zona del dominio principale.

DNS split horizon

Split horizon è un termine utilizzato per descrivere uno scenario in cui vengono create due zone per lo stesso dominio, una delle quali verrà utilizzata dalla rete interna e l'altra dalla rete esterna (di solito internet). Il DNS split horizon consente di fornire risposte diverse (set di record di risorse diversi) per lo stesso nome a seconda di chi esegue la richiesta.

Ad esempio, puoi fornire la versione di sviluppo o di staging della tua applicazione se la query proviene dalla rete di sviluppo e la versione di produzione o pubblica della tua app se la query proviene da internet pubblico.

Record

Un record A è una mappatura tra una risorsa DNS e un nome di dominio. Ogni singolo record DNS ha un tipo (nome e numero), una durata (TTL) e dati specifici per il tipo.

Ecco alcuni tipi di record di uso comune:

  • A: record di indirizzo, che mappa i nomi host al relativo indirizzo IPv4.
  • AAAA: record di indirizzo IPv6, che mappa i nomi host al relativo indirizzo IPv6.
  • CNAME: record del nome canonico, che specifica i nomi alias.
  • MX: record Mail Exchange, utilizzato per il routing delle richieste ai server di posta.
  • NS: record del server dei nomi, che delega una zona DNS a un server autoritativo.
  • PTR: record puntatore, che definisce un nome associato a un indirizzo IP.
  • SOA: Start of Authority, utilizzato per designare il server dei nomi principale e l'amministratore responsabile di una zona. Ogni zona ospitata su un server DNS deve avere un record SOA (Start of Authority). Puoi modificare il record in base alle tue esigenze (ad esempio, puoi modificare il numero di serie in un numero arbitrario per supportare il controllo delle versioni basato sulla data).

Set di record

I record con lo stesso nome e dello stesso tipo, ma con valori di dati diversi, sono chiamati set di record. Quando crei un record, se esiste un set con lo stesso nome e tipo, il record viene aggiunto a questo set corrispondente. Se non esiste un set corrispondente, viene creato un nuovo set e aggiunto all'elenco dei set di record.

Questo è un esempio di un set di record con più di un record con lo stesso nome e tipo:

Nome DNS Tipo TTL (secondi) Dati
db-01.dev.gcp.example.com A 50 10.128.1.35
db-01.dev.gcp.example.com A 50 10.128.1.10

Per un elenco dei tipi di record supportati in Cloud DNS, consulta Tipi di record DNS supportati.

Delega dei sottodomini

Quando crei i record, assicurati che i record NS e SOA corrispondano tra loro. I record NS e SOA in conflitto possono indurre alcuni resolver a respingere la delega come non valida e a rifiutare di memorizzare nella cache le risposte NO DATA alle query. Ciò può comportare un numero elevato e imprevisto di query sulle tue zone gestite pubbliche da parte di resolver ricorsivi di terze parti quando i resolver fanno query sulle tue zone gestite pubbliche per record inesistenti.

Ad esempio, supponiamo che in Cloud DNS siano presenti due sottodomini, example.com e subdomain.example.com. I record NS e SOA per subdomain.example.com non corrispondono. Nessuna delle zone contiene record AAAA. Quando alcuni resolver ricorsivi di terze parti fanno query su subdomain.example.com per un record AAAA e ricevono una risposta NO DATA, se i resolver rilevano la delega non valida di subdomain.example.com, rifiutano di memorizzare nella cache l'inesistenza di record AAAA in quella zona. Di conseguenza, ritentano le query. Inviano query a tutti i server dei nomi Cloud DNS, a turno, per ottenere queste informazioni.

Registrar

Un registrar del nome di dominio è un'organizzazione che gestisce la prenotazione dei nomi di dominio internet per le zone pubbliche. Un registrar deve essere accreditato da un registry di domini di primo livello generici (gTLD) o da un registry di domini di primo livello nazionali (ccTLD). In questo modo, i server dei nomi di livello superiore non hanno conflitti di SOA e aggiornano i record NS per la zona in modo da indirizzare le richieste ai server dei nomi autoritativi o con memorizzazione nella cache.

Numero di serie SOA

Il numero di serie SOA è un numero di versione per una zona DNS. Per essere aggiornati alla versione di una zona, tutti i server dei nomi devono avere lo stesso numero di serie SOA. I numeri di serie dei record SOA creati nelle zone DNS gestite aumentano in modo monotono a ogni modifica transazionale apportata ai set di record di una zona.

Tuttavia, puoi modificare il numero di serie di un record SOA in un numero arbitrario, inclusa una data in formato ISO 8601 come consigliato nella RFC 1912.

DNSSEC

L'estensione DNSSEC (Domain Name System Security Extension) affronta le vulnerabilità dei dati DNS. DNSSEC è una suite di specifiche IETF che fornisce autenticazione dei dati DNS, negazione dell'esistenza autenticata e integrità dei dati ai client DNS (resolver). In breve, DNSSEC consente al software di verificare l'origine dei dati DNS e convalidare che non siano stati modificati durante il transito.

Per maggiori dettagli su DNSSEC, consulta RFC 4033.

Per un elenco della terminologia DNS generale, consulta RFC 7719.

Passaggi successivi