# Dynamic DNS

DNS dinamico (in inglese dynamic DNS, in acronimo DDNS) è una tecnologia che permette ad un nome DNS in Internet di essere sempre associato all'indirizzo IP di uno stesso host, anche se l'indirizzo cambia nel tempo.

## Motivazione

I nomi DNS sono normalmente associati stabilmente ad indirizzi IP, i quali a loro volta sono stabilmente assegnati ad host che hanno funzioni di server. Molti host, in particolare quelli che si collegano ad internet utilizzando i servizi di uno (o più) ISP, ricevono invece un indirizzo diverso ad ogni connessione. Pertanto è impossibile raggiungerli da internet, perché non si conosce il loro indirizzo IP. Ciò preclude la possibilità di amministrarli remotamente e di offrire servizi su questi host.
Il DNS dinamico permette a questi host di essere sempre raggiungibili attraverso il loro nome DNS, e quindi rende possibile amministrarli remotamente ed erogare servizi raggiungibili da chiunque su internet.

## Realizzazione

Un servizio di DNS dinamico è costituito da una popolazione di client dinamici (host con indirizzo IP dinamico che vogliono che il loro IP attuale sia registrato nel DNS), da uno o più server DNS dinamici e da un protocollo di comunicazione tra le due parti. Quando un client dinamico ottiene un indirizzo IP, contatta uno dei server e lo informa del suo IP attuale. Il server inserisce allora un record DNS che punta al nuovo indirizzo del cliente. In questo modo, altri host sono in grado di ottenere l'indirizzo IP attuale del client dinamico utilizzando il normale servizio DNS, e quindi senza essere consci che l'host che contattano ha un indirizzo IP registrato dinamicamente.
La comunicazione tra client dinamico e server, che permette ad un client di aggiornare il proprio record DNS, è realizzata mediante diversi protocolli proprietari, che normalmente richiedono l'autenticazione del client dinamico per poter effettuare l'aggiornamento. Esiste anche una estensione standardizzata del protocollo DNS, che rende possibile effettuare query di UPDATE per aggiornare una zona DNS.
Numerosi fornitori di servizi su internet offrono servizi di DNS dinamico gratuiti e a pagamento.
Il gestore del sito con IP dinamico ha la responsabilità di mantenere aggiornato il proprio record DNS. Questo può essere effettuato tramite una pagina web apposita del sito del fornitore di servizio, ma questa soluzione richiede un intervento manuale ogni volta che l'IP cambia. Nella pratica si utilizzano dei programmi che aggiornano autonomamente il database del DNS dinamico, quando l'IP cambia oppure periodicamente. Questi programmi sono adeguati soprattutto quando girano direttamente sull'host a cui è assegnato l'indirizzo pubblico, in quanto possono facilmente conoscere l'indirizzo assegnato dal provider, e spesso possono anche essere informati dal sistema operativo dei cambi di indirizzo IP.
Quando invece si utilizza un router per la connessione ad internet, l'indirizzo pubblico è normalmente configurato su questo router, e i PC collegati a questo router accedono ad internet mediante qualche forma di network address translation, pertanto non possono facilmente conoscere l'indirizzo IP pubblico con cui si presentano su internet (e sul quale possono essere raggiungibili se sono configurate delle redirezioni sul router).
Alcuni router utilizzati per la connessione ad internet includono un client di DNS dinamico, e possono quindi provvedere autonomamente all'aggiornamento dell'indirizzo IP.
Se invece il client di DNS dinamico deve essere installato su un calcolatore che utilizza un indirizzo IP privato, è necessario scoprire l'indirizzo IP assegnato al router NAT per poterlo registrare nel DNS dinamico. Alcune tecniche prevedono di effettuare connessioni verso server esterni, che riportano l'IP da cui vedono provenire la connessione (una tecnologia di questo tipo è STUN). In alternativa, alcuni programmi di DNS dinamico sono in grado di collegarsi autonomamente ad un router per scoprire l'indirizzo di rete pubblico assegnato dal provider.
Nella realizzazione del DNS dinamico è necessario inoltre impostare il massimo tempo di caching del dominio per un periodo breve (tipicamente pochi minuti). Questo serve a prevenire che gli altri server DNS mantengano a lungo nella loro cache il vecchio indirizzo, rendendo meno probabile che una query DNS per un indirizzo gestito dal DNS dinamico ottenga come risposta un indirizzo obsoleto.