In questo articolo vediamo come è possibile gestire i record DNS del nostro dominio attraverso la configurazione di un DNS autoritativo su un server linux. Il dominio è stato acquistato su aruba.it che ci fornisce la possibilità di utilizzare un server dns amministrato da noi ed abbiamo a disposizione un server ( fisico o in cloud ) su cui possiamo installare bind
Aruba.it ci mette a disposizione una interfaccia web per amministrare i record del dns, tuttavia personalmente la trovo scomoda per il fatto che ci si debba continuamente autenticare e per i tempi di latenza con cui vengono rese online le modifiche effettuate
Aruba mette comunque a disposizione una funzionalità che permette di dichiarare il nome e l’indirizzo ip del dns esterno che gestirà i record che vorremo inserire
Supponiamo quindi di avere acquistato un server cloud con debian 9 ed un ipotetico dominio chiamato miodominio.me. Sul server gira un servizio apache, dove abbiamo configurato 2 virtual host con i siti www.miodominio.me e wp.miodominio.me
Per prima cosa dobbiamo installare sul server pacchetto bind9:
1 2 3 |
# apt update # apt upgrade # apt install bind9 |
Il server dns è pronto e funzionante, dobbiamo però creare il file con la zona del nostro dominio.
Per prima cosa creiamo il file che ci interessa, poichè con bind possiamo gestire tutti i domini che vogliamo, ogni dominio è descritto da un file che in questo caso chiameremo db.miodominio.me ed imposteremo il proprietario di questo file con nome del demone del servizio bind:
1 2 |
# touch /var/cache/bind/db.miodominio.me # chown bind:bind /var/cache/bind/db.miodominio.me |
Ora dobbiamo dire a bind di leggere questo file, quindi editiamo il file che si trova in /etc/bind/named.conf.local. Editiamo quindi questo file inserendo le righe seguenti alla fine del file
1 2 3 4 |
zone "miodominio.me" { type master; file "/var/cache/bind/db.miodominio.me"; }; |
Nel file della nuova zona dovremo inserire le informazioni necessarie alla risoluzione dei nomi che ci servono. Dobbiamo creare almeno due NS record identici, che chiameremo ns1 ed ns2, un record A per la risoluzione del dominio senza host, due record A e due record AAAA per risolvere gli host ns1 ed ns2, e due record CNAME con i domini di terzo livello che dobbiamo risolvere. Per farlo abbiamo bisogno di conoscere gli indirizzi internet ipv4 ed ipv6 del nostro server configurati sull’ interfaccia di rete esposta su internet, che ad esempio può essere la eth0
1 |
# ip addr |
1 2 3 4 5 6 7 |
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 111.111.111.111/24 brd AAA.AAA.AAA.255 scope global eth0 valid_lft forever preferred_lft forever inet6 1a1a::1a1:1a1a:1a1a:1a1a/64 scope link valid_lft forever preferred_lft forever |
Le informazioni che ci servono sono quelle relative alle righe che iniziano con inet ed inet6, in questo esempio sono 111.111.111.111 e 1a1a::1a1:1a1a:1a1a:1a1a, che riporteremo nei record A ed AAAA dei due record ns1 ed ns2. Inseriamo tutto il necessario nel file di zona
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ORIGIN miodominio.me. $TTL 21600 @ IN SOA ns1.miodominio.me. hostmaster.miodominio.me. ( 2019010101 ; Serial 3600 ; Refresh [1h] 600 ; Retry [10m] 86400 ; Expire [1d] 3600 ) ; Negative Cache TTL [1h] ; @ IN NS ns1.miodominio.me. @ IN NS ns2.miodominio.me. @ IN A 111.111.111.111 ; ns1 IN A 111.111.111.111 AAAA 1a1a::1a1:1a1a:1a1a:1a1a ns2 IN A 111.111.111.111 AAAA 1a1a::1a1:1a1a:1a1a:1a1a ; www IN CNAME ns wp IN CNAME ns |
Testiamo la configurazione di bind
1 |
# named-checkconf -z /etc/bind/named.conf |
Se non riceviamo errori ricarichiamo il servizio:
1 |
# systemctl reload bind9 |
Nel caso avessimo impostato DROP come policy sulla tabella INPUT di iptables, dobbiamo inserire una regola per permettere a bind di rispondere alle richieste che arrivano da internet, quindi inseriamo queste due regole su iptables
1 2 |
# iptables -A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT # iptables -A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT |
A questo punto abbiamo quasi terminato, rimane solo da dire ad ariba di utilizzare il nostro server dns per la risoluzione degli host del nostro dominio.
Entriamo nel nostro pannello di controllo sul sito di aruba ed nella pagina di gestione record dns selezioniamo l’opzione Usa Altri Name Server
Clicchiamo sul bottone gestisci ed apriremo una nuova pagina, dove andremo ad inserire i due host dns che abbiamo inserito nel file di zona
Aruba vuole che ci siano due server dns autoritativi, ma non fa nessun controllo sul fatto che i due server siano lo stesso. Quello che è importante è che i due host inseriti qui, siano risolti dal file di zona del nostro servizio bind dns
Una volta salvata la configurazione dovremo attendere qualche minuto affinchè aruba salvi e renda attiva la nuova configurazione