DNS, Ottimizzazione · 4 min read · Oct 01, 2025

Accelerare l'accesso DNS in regioni con infrastrutture molto basse

Accelerare l’accesso DNS in regioni con infrastrutture molto basse

Introduzione

Immagina di essere su una costosa connessione satellitare che riesce a fornire a malapena abbastanza larghezza di banda per l’accesso a Internet della tua azienda e vorresti fare tutto il possibile per ottenere il massimo da questo collegamento. Inoltre, occasionalmente perdi energia dalla compagnia elettrica, abbastanza a lungo perché il tuo UPS si esaurisca. Ci sono alcune cose che potresti fare per ottenere molto di più dal tuo collegamento. In questo articolo, esamineremo come accelerare le tue richieste DNS mantenendo una cache delle risposte alle tue richieste DNS sul tuo disco rigido. Le richieste DNS successive vengono quindi servite dalla cache e poiché una copia è su disco, non la perdi quando c’è un’interruzione di corrente o un riavvio.

La versione aggiornata di questo documento è disponibile su: www.httpcompression.net.

Analisi

Ne ho bisogno? Bene, vediamo. Dal tuo Linux emetti il seguente comando:

dig www.httpcompression.net

Tra le altre cose, ottengo il seguente risultato:

;; Tempo di query: 583 msec

Dopo alcuni secondi ho emesso di nuovo il comando e ho ottenuto:

;; Tempo di query: 612 msec

Ovviamente i server DNS del mio ISP inoltrano semplicemente le richieste negli Stati Uniti (sono ad Accra, Ghana, Africa occidentale, collegandomi a Internet tramite cavo in fibra ottica sottomarino SAT3). Apparentemente, i risultati della prima richiesta non sono stati memorizzati nella cache. Se lo fossero stati, sarebbero scaduti al momento della seconda richiesta. Certamente, un tale ambiente è un candidato perfetto per questa configurazione.

Come fare

Sto lavorando su un server Ubuntu. Il software che utilizzeremo è pdnsd. Il sito web ha da dire questo su pdnsd:

“pdnsd è un server DNS proxy con caching permanente (il contenuto della cache viene scritto su disco rigido all’uscita) progettato per gestire server DNS irraggiungibili o non funzionanti (ad esempio nelle reti dial-in). Dalla versione 1.1.0, pdnsd supporta la caching negativa.”

Dal tuo Ubuntu o da qualsiasi altra distribuzione basata su Debian emetti il seguente comando:

apt-get install pdnsd

È comparsa una pagina di configurazione con tre opzioni “resolvconf / Usa server root / Manuale”. Ho selezionato “Manuale” e ho continuato con l’installazione.

L’installazione predefinita ha un file di configurazione, parti del quale sono state commentate. Una riga è commentata con “//“ mentre le righe multiple sono commentate con “/ /“. Ad esempio:

// Questa è una riga commentata nel file di configurazione.
/*
Queste sono righe commentate
nel file di configurazione.
*/

Usa il tuo editor di testo preferito per modificare i seguenti file di configurazione:

  1. /etc/default/pdnsd Modifica la riga con START_DAEMON come segue: START_DAEMON=yes
  2. /etc/pdnsd.conf Nella sezione globale potresti voler cambiare la seguente impostazione: server_ip = 127.0.0.1; Questo è l’ip a cui pdnsd può essere raggiunto. Se l’indirizzo è lasciato al valore predefinito di 127.0.0.1, solo i programmi sul server stesso possono accedere al server pdnsd. Tuttavia, se desideri che altri server e PC utilizzino questa installazione di pdnsd come loro server DNS, allora dovresti cambiare l’indirizzo IP con l’indirizzo IP appropriato sul tuo server che desideri che i tuoi client utilizzino. Usa la sezione server per impostare i server DNS che pdnsd consulterà per risolvere i nomi di dominio. Ci sono due sezioni server che sono commentate per impostazione predefinita. I server opendns sono molto affidabili e popolari, potresti volerli utilizzare: server { label="opendns"; ip = 208.67.220.220,208.67.222.222; } Assicurati che la sezione server non sia commentata. Se il tuo ISP ha un server DNS affidabile, puoi usarlo invece. Il più possibile, risparmia i server root.
  3. /etc/resolv.conf Questo file contiene i server DNS che i programmi sul tuo server (ad esempio squid, apache) consulteranno normalmente per la risoluzione dei nomi. Ora, vorrai consultare il server pdnsd locale che hai appena installato, quindi inserisci l’indirizzo IP della tua interfaccia di loopback (lo) ovvero 127.0.0.1. Questa dovrebbe essere l’unica voce in questo file. 127.0.0.1

Test e conclusione

Ora avvia il tuo server pdnsd:

/etc/init.d/pdnsd start

Ora emetti il seguente comando e controlla il tempo di query: nella risposta per determinare quanto bene stai andando:

dig www.httpcompression.net
;  DiG 9.4.2-P2  www.httpcompression.net
;; Tempo di query: 3323 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; QUANDO: Lun Nov  3 20:02:37 2008
;; DIMENSIONE MSG  ricevuta: 71

Dopo un po’, emetti di nuovo il comando:

dig www.httpcompression.net
;  DiG 9.4.2-P2  www.httpcompression.net
;; Tempo di query: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; QUANDO: Lun Nov  3 20:03:07 2008
;; DIMENSIONE MSG  ricevuta: 71

Dai due risultati sopra, la prima query ha impiegato 3323 msec mentre la seconda, 30 secondi dopo, ha impiegato solo 1 msec per risolversi. Ora dopo un riavvio del server:

dig www.httpcompression.net
;; Tempo di query: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; QUANDO: Lun Nov  3 20:06:38 2008
;; DIMENSIONE MSG  ricevuta: 71

Dopo il riavvio, la query ha impiegato solo 3 ms per risolversi. Non abbiamo perso la nostra cache. Potresti voler leggere il manuale e modificare alcune impostazioni per adattarle alla tua situazione. Alcune di queste impostazioni sono:

  1. min_ttl: Il tempo minimo predefinito che una risposta memorizzata nella cache dovrebbe essere mantenuta è di 15 minuti. Potresti voler aumentare questo valore per ridurre la frequenza con cui contatti i server parent. L’effetto collaterale è che, se l’indirizzo di un sito cambia, ci vorrà un po’ di tempo prima che il tuo pdnsd contatti i server parent per il nuovo indirizzo. Se il tempo minimo non è sufficientemente lungo, perderai anche la tua cache dopo un’interruzione di corrente prolungata.
  2. perm_cache: Questa è la dimensione dello spazio su disco per la tua cache. A seconda del traffico sulla tua rete, potresti voler aumentare questo valore a un valore che possa comodamente memorizzare almeno una settimana di dati. Potresti monitorare la dimensione del file di cache nel tempo per avere un’idea di cosa dovrebbe essere adeguato per te.
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.