Come funziona il DNS e come faccio a risolvere gli errori DNS parziali o intermittenti?

8 minuti di lettura
0

Come funziona il DNS e come faccio a risolvere gli errori DNS parziali o intermittenti?

Risoluzione

Panoramica dei DNS

Il DNS indirizza gli utenti alle applicazioni Internet traducendo nomi facili da ricordare (ad esempio, www.example.com) in indirizzi IP numerici, come 192.0.2.1. Questo processo è chiamato "risoluzione DNS". Un server dei nomi autorevole risolve un nome di dominio in uno o più indirizzi IP e trasmette l'indirizzo IP attraverso la catena di resolver DNS al client (ad esempio, il computer di qualcuno che richiede di visualizzare un sito web). Il client utilizza quindi quell'indirizzo IP per connettersi al server in cui è ospitato il sito web. Quando il DNS non funziona correttamente, i server DNS non possono risolvere i nomi di dominio. Pertanto, i server DNS non possono fornire ai client l'indirizzo IP del server su cui è ospitato il sito web. Ciò significa che non è possibile accedere a tali siti web da Internet.

Per ulteriori informazioni, consulta la pagina Cos'è un DNS?

Scenari di errori DNS parziali, temporanei o intermittenti

In alcuni casi, un client riscontra errori DNS per un breve periodo di tempo o in modo intermittente. Di seguito sono riportati alcuni scenari comuni che potrebbero causare un errore parziale del DNS:

Scenario 1: server dei nomi non configurati correttamente presso il registrar

A volte uno o più server dei nomi non sono configurati correttamente nel registrar. Una ricerca "whois" fornirà i server dei nomi configurati nel registrar del dominio. In questo caso, durante la risoluzione DNS, se i server dei nomi registrati non rispondono o rispondono con informazioni inaspettate, il resolver locale restituirà un messaggio SERVFAIL. Tuttavia, in alcuni casi i resolver locali possono provare la richiesta con un server dei nomi diverso e possono restituire il risultato.

Inoltre, i resolver locali possono memorizzare nella cache i server dei nomi errati per l'ora TTL e possono inviare la query successiva al server dei nomi non configurato correttamente.

Scenario 2: server dei nomi alterati nella zona ospitata

Un altro motivo di errore parziale del DNS si ha quando il record NS di un dominio non è configurato correttamente nella zona ospitata. In questo caso, i server dei nomi esistenti sono stati aggiornati oppure sono stati aggiunti altri server dei nomi al valore del record NS.

In questo caso, alcuni client potrebbero riscontrare errori DNS parziali se il resolver tenta di risolvere il dominio utilizzando il server dei nomi sbagliato.

Scenario 3: il resolver DNS del client non è in grado di risolvere il dominio

A volte i client impostano resolver personalizzati o errati nel file di configurazione del resolver, come resolv.conf in Linux. Se questo è il caso e stai risolvendo il dominio da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in un Amazon Virtual Private Cloud (Amazon VPC), l'istanza EC2 utilizzerà i server dei nomi definiti in resolv.conf.

Scenario 4: server DNS fornito da Amazon che limita le query DNS

I server DNS forniti da Amazon applicano un limite di 1024 pacchetti al secondo per ogni interfaccia di rete elastica. I server DNS forniti da Amazon rifiutano il traffico che supera questo limite. A causa della limitazione del DNS, il DNS presenta un timeout intermittente. Per risolvere questo problema è possibile attivare la memorizzazione nella cache dell'istanza o aumentare i tentativi DNS sull'applicazione.

Scenario 5: l'URL del dominio viene risolto da Internet, ma non dall'istanza EC2

Le query DNS per il tuo dominio vengono sempre risolte dalla zona ospitata privata se hai effettuato le seguenti operazioni:

Se il record interrogato per il tuo dominio non è presente nella zona ospitata privata, la query DNS ha esito negativo e non viene inoltrata al dominio pubblico. Poiché il record DNS è presente nella zona di dominio pubblico, si risolverà da Internet.

Risolvi gli errori DNS sui sistemi operativi basati su Linux

Usa il comando dig per eseguire una ricerca sul server DNS del client configurato nel file /etc/resolv.conf dell'host.

$ dig www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        41    IN    A    54.239.17.6

;; Query time: 1 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:43:11 2016
;; MSG SIZE rcvd: 48

Nell'esempio precedente, la sezione delle risposte mostra che 54.239.17.6 è l'indirizzo IP del server HTTP per www.amazon.com.

Se aggiungi la variabile +trace, il comando dig può anche eseguire una ricerca ricorsiva di un record DNS, come mostrato nell'esempio seguente:

$ dig +trace www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com
;; global options: +cmd
.        518400    IN    NS    J.ROOT-SERVERS.NET.
.        518400    IN    NS    K.ROOT-SERVERS.NET.
.        518400    IN    NS    L.ROOT-SERVERS.NET.
…
;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 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.
…
;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms
amazon.com.        172800    IN    NS    pdns1.ultradns.net.
amazon.com.        172800    IN    NS    pdns6.ultradns.co.uk.
…
;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms
www.amazon.com.    900    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.    900    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.    900    IN    NS    ns-277.awsdns-34.com.
…
;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms

www.amazon.com.    60     IN    A    54.239.26.128
www.amazon.com.    1800   IN    NS   ns-1019.awsdns-63.net.
www.amazon.com.    1800   IN    NS   ns-1178.awsdns-19.org.
…
;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms

È inoltre possibile eseguire una query che restituisca solo i server dei nomi, come illustrato nell'esempio seguente:

$ dig -t NS www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.        IN    NS

;; ANSWER SECTION:
www.amazon.com.        490    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        490    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        490    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.        490    IN    NS    ns-277.awsdns-34.com.

;; Query time: 0 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:48:20 2016
;; MSG SIZE rcvd: 170

Nell'esempio precedente, www.amazon.com ha questi quattro server dei nomi autorevoli:

  • ns-1019.awsdns-63.net.
  • ns-1178.awsdns-19.org.
  • ns-1568.awsdns-04.co.uk.
  • ns-277.awsdns-34.com.

Ognuno di questi quattro server può rispondere in modo autorevole a domande sul nome host www.amazon.com. Usa il comando dig per interrogare direttamente un server dei nomi specifico. Verifica se tutti i server dei nomi autorevoli per un determinato dominio rispondono correttamente.

Di seguito è riportato un esempio di output per una query inviata a www.amazon.com su uno dei suoi server di nomi autorevoli (ns-1019.awsdns-63.net). La risposta del server indica che www.amazon.com è disponibile sull'indirizzo 54.239.25.192:

$ dig www.amazon.com @ns-1019.awsdns-63.net.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        60    IN    A    54.239.25.192

;; AUTHORITY SECTION:
www.amazon.com.        1800    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        1800    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        1800    IN    NS    ns-1568.awsdns-04.co.uk.
…

;; Query time: 7 msec
;; SERVER: 205.251.195.251#53(205.251.195.251)
;; WHEN: Fri Oct 21 21:50:00 2016
;; MSG SIZE rcvd: 186

La riga seguente mostra che ns-576.awsdns-08.net è un server dei nomi autorevole per amazon.com:

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

La presenza del flag aa indica che il server dei nomi ns-1019.awsdns-63.net ci ha fornito una risposta autorevole per il record di risorse www.amazon.com.

Risolvi gli errori DNS sui sistemi operativi basati su Windows

Utilizza l'utilità nslookup per restituire l'indirizzo IP associato a un nome host, come mostrato nell'esempio seguente:

C:\>nslookup www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
Name:       www.amazon.com
Address:    54.239.25.192

Per determinare i server dei nomi autorevoli per un nome host utilizzando l'utilità nslookup, usa il flag -type=NS:

C:\>nslookup -type=NS www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
www.amazon.com    nameserver = ns-277.awsdns-34.com
www.amazon.com    nameserver = ns-1019.awsdns-63.net
www.amazon.com    nameserver = ns-1178.awsdns-19.org
…

Per verificare se il server dei nomi ns-277.awsdns-34.com per www.amazon.com risponde correttamente a una richiesta per www.amazon.com, utilizza la sintassi seguente:

C:\>nslookup www.amazon.com ns-277.awsdns-34.com
Server:     UnKnown
Address:    205.251.193.21

Name:       www.amazon.com
Address:    54.239.25.200

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa