Servizi DNS per risolvere indirizzi IP arbitrari

Non sappiamo se è la mania di avere qualsiasi cosa as a service o se davvero risulti uno strumento utile agli sviluppatori, ma oggi vi raccontiamo di alcuni servizi DNS pubblici ma particolari.

Nel prossimo paragrafo spieghiamo velocemente -e per chi non lo sapessecosa faccia un servizio DNS. Quindi, chi vuole, può saltarlo! 😉

Internet si basa sul protocollo IP, che assegna un indirizzo ad ogni macchina connessa ad una rete (identificata a sua volta da un indirizzo – ma questa è un’altra storia).
Dato che agli esseri umani usare direttamente gli indirizzi IP è scomodo, è stato inventato l’hostname: una etichetta, in modo da poter associare un nome ad un indirizzo. I nomi sono componibili tramite il punto, creando una gerarchia con logica “nome.dominio”.
Il nome più famoso e utilizzato è il “www”, che identifica il servizio web. Un indirizzo come “www.google.com” quindi identifica il servizio web fornito dal server “google” del dominio “com”, ed è quello che digitiamo nel browser.
Il servizio DNS serve proprio a tradurre quell’hostname (capibile e ricordabile da un essere umano) in un indirizzo IP (capibile ed utilizzabile dal computer).

Esistono infatti dei domini DNS utilizzabili pubblicamente per risolvere gli indirizzi IP. Per esempio, puntando a “www.127.0.0.1.xip.io” vi ritroverete a puntare al’IP 127.0.0.1 (il vostro computer!)

$ dig www.127.0.0.1.xip.io
www.127.0.0.1.xip.io.   263     IN      A       127.0.0.1

xip.io è solo un esempio di questo tipo di dominio, che a sua volta è un’alternativa di nip.io, sulla cui pagina è citato insieme a sslip.io e localtls.

A cosa può servire un servizio per risolvere via DNS un indirizzo IP già specificato nell’hostname? Perché non puntare all’IP e basta?
Molti si saranno fatti questa domanda, che è fondata, ma ci si dimentica un dettaglio: allo stesso IP possono essere associati più servizi, la cui scelta dipende dall’hostname chiamato e non dall’IP usato.

Un esempio piuttosto lampante sono i virtual server di Apache: lo stesso server con lo stesso IP può erogare siti diversi solo in base all’hostname con cui viene chiamato. Per questo è possibile che help-desk.dominio.local mostri un sito mentre phonebook.dominio.local ne mostri un altro, ma entrambi siano erogati dalla macchina apache.dominio.local.
Se poi prendiamo in considerazione anche le connessioni sicure, tramite sessioni TLS e certificati, la cosa è ancora più stringente: per avere connessioni valide l’hostname esposto dal certificato e quello della macchina raggiunta devono combaciare, e quindi non è (sempre) possibile usare l’indirizzo IP direttamente.

Tutto questo è gestibile tramite modifica del file hosts della macchina (non sempre fattibile) o l’uso di un server DNS apposito sulla rete. Ma vuoi perché non tutti hanno il know how per metterlo in piedi, vuoi perché la tendenza è quella di usare servizi presenti in Internet, vuoi l’uso di container e reti segregate, l’uso può risultare difficoltoso. E la frase d’apertura prende significato: per gli sviluppatori, un servizio del genere disponibile via internet può essere utile.

Una nota tecnica interessante è l’implementazione: tutti questi servizi si basano sull’uso di PowerDNS, un server DNS opensource alternativa dello storico (e standard de facto ) BIND. Grazie ad uno script python, si formula la risposta identificando gli elementi utili dalla query stessa. Un concetto piuttosto diverso dall’uso esclusivo di file con le associazioni (più o meno fisse) hostname -> IP, a cui di solito siamo abituati.

A noi sistemisti (e forse dinosauri) tutto questo appare un tantinello inutile… ma forse, per l’appunto, perché non siamo sviluppatori. Voi avete esperienza? Che dite?

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , ,