CoreDNS: il server DNS moderno
Era il lontano 1983 quando Paul Mockapetris e Jon Postel hanno definito lo standard DNS, Domain Name System rendendo di fatto la rete ed il nuovissimo nato Internet più semplici da utilizzare. Utilizzare gli indirizzi IP era scomodo, e potersi riferire agli host con dei nomi parlanti era diventata una necessità. E’ grazie a questa ottima idea che possiamo navigare su www.google.it invece che su 216.58.198.3 (o decine di altri indirizzi).
Qualche anno dopo, nel 1986, nacque BIND, quello che potremmo definire il server DNS per antonomasia, per sistemi *nix, tuttora probabilmente la soluzione più utilizzata su Internet, anche se non l’unica.
Dagli anni di BIND molte altre soluzioni sono apparse sul mercato, da Microsoft DNS Server a NSD, da Unbound a Knot, molte sono le alternative, e verrebbe da chiedersi se realmente serve avere altre opzioni.
Già, perché di fatto ed indipendentemente dalle alternative, molti decidono di rimanere su BIND, grazie al suo supporto completo per le specifiche della RFC, alla semplicità di configurazione (una volta compresa bene la sintassi) ed all’immensa quantità di materiale più o meno didattico disponibile sulla rete.
A cosa serve quindi un altro DNS? Per capirne l’utilità bisogna guardare un pochino a quelle che sono state le evoluzioni nelle architetture software.
Se negli anni 80 i software erano praticamente monolitici, ovvero grossi blocchi di codice che comprendevano le intere funzionalità richieste, negli anni successivi si è definita sempre di più una struttura più compartimentata. Le grosse applicazioni sono state dapprima suddivise in almeno tre componenti (client – dove l’utente interagiva con il software ed otteneva informazioni, server – dove venivano eseguiti i calcoli, operazioni e tutto quello che serviva per ottenere quanto richiesto dal client, e database – in cui risiedevano i dati grezzi), e successivamente in sotto componenti per specializzare sempre di più le operazioni eseguite da ognuno di esse, creando software composti da decine e decine di “sotto-software” più piccoli.
La cosa si è fatta ancora più accentuata negli ultimi anni, con l’avvento (o meglio, con l’uso massivo) di webapps e container: le singole componenti delle applicazioni sono diventate indipendenti a livello ancora più basso, ed in tutto questo “marasma” di processi ed applicazioni super specializzati un componente è diventato ancora più fondamentale: il DNS, appunto.
Già perchè quando abbiamo centinaia di piccoli software che parlano con altri piccoli software, e quando ognuno di questi pezzetti può essere eseguito virtualmente ovunque, avere un modo semplice ed univoco per identificare uno di questi indipendentemente da dove si trova in esecuzione in un dato momento è necessario per il funzionamento di tutto quanto.
Ed è qui che si vedono i limiti di BIND, ed in cui entra in gioco CoreDNS!
Alla fine BIND permette di fare quello che un server DNS dovrebbe fare: associare un nome ad un indirizzo (sto semplificando molto, lo so), e nonostante supporti anch’esso funzionalita di DDNS (Dynamic DNS), ha il “limite” -per questi ambienti- di appoggiarsi ad un file di configurazione, statico per definizione. Abbiamo bisogno di metodi più intelligenti quando questo indirizzo può cambiare frequentemente nel tempo. Come facciamo a parlare con MIODATABASE se fino ad un minuto fa era eseguito nel datacenter di Amazon in Irlanda ed ora è stato rischedulato su quello in Svezia di Google, senza dover attivamente mettere mano al nostro servizio di risoluzione?
CoreDNS ovviamente può comportarsi come un DNS normale ma, grazie ad un sistema di funzionamento a plugin, ha la possibilità di interfacciarsi direttamente con tutti quei sistemi che oramai pilotano i servizi erogati: avete le vostre applicazioni erogate da un cluster Kubernetes nel vostro Datacenter? CoreDNS può interfacciarsi ad esso e chiedere a lui qual’è l’indirizzo della data applicazione. Utilizzate OpenShift con etcd come key-value store? Un plugin vi inoltrare le query DNS ad esso.
Unito ad una sintassi molto semplice, al fatto che il progetto è totalmente open-source e che fa parte del CNCF (Cloud Native Computing Foundation), sta rapidamente prendendo piede anche in realtà grandi come Yandex, Zalando o SoundCloud (per citare i più famosi della lista).
Rimane solo da provarlo e, magari, dare uno sguardo a come è fatto sul loro repository GitHub. Ci avete già messo le mani sopra?
Fonte: https://www.miamammausalinux.org/2019/11/coredns-il-server-dns-moderno/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.