Ho dovuto realizzare un server DNS locale per risolvere tutti quei domini interni alla mia rete LAN perché mi sono rotto le palle che su un pool di macchine tutte le volte mi tocca cambiare il file di hosts per reindirizzare un client su un server che per manutenzione mi necessitava spostare su un altro IP.
Quindi questo è quello che ho fatto.
Ho creato un container con una distro linux leggera (io ho usato Ubuntu ma il concetto vale per ogni distro) ed ho usato Dnsmasq.
Come sempre aggiorno i repository, per ubuntu / debian like:
# apt update && apt upgrade -y
Naturalmente la distro dovrà avere un IP statico
Devo disabilitare il servizio di ubuntu "resolve" che è in ascolto sulla porta 53, quella che serve a me per Dnsmasq:
# systemctl disable systemd-resolved
# systemctl stop systemd-resolved
Mi assicuro che il file /etc/resolv.conf abbia un nameserver dns pubblico
# rm /etc/resolv.conf
# echo nameserver 8.8.8.8 | tee /etc/resolv.conf
Bene, installo Dnsmasq
# apt install dnsmasq -y
Imposto alcuni parametri di configurazione sul file /etc/dnsmasq.conf, quindi aggiungo alla configurazione:
domain-needed
bogus-priv
server=8.8.8.8
server=8.8.4.4
cache-size=1000
Giusto per ricordarsi:
"domain-needed", le denominazioni locali (ad esempio sitoweb) che non hanno alcun TLD specificato non saranno mai inoltrate al DNS gestito da terze parti (ad esempio ai DNS Google)
"bogus-priv", gli indirizzi IP privati non saranno esposti al gestore del server DNS remoto
"cache-size", si chiede a Dnsmasq di conservare una cache locale formata da un numero massimo di 1.000 elementi, in questo modo si velocizzerà la risoluzione dei nomi a dominio più richiesti dai client collegati in rete locale
Bene, adesso modificando il file di hosts di questa macchina e impostando su tutti i singoli sistemi come DNS il suo IP potrò propagare a tutti i client eventuali indirizzamenti.
Editiamo il file /etc/hosts:
192.168.178.123 server.lan
192.168.178.321 storage.lan
ecc...
Ok, installo il servizio Dnsmasq e lo avvio:
# systemctl enable dnsmasq
# systemctl restart dnsmasq
Naturalmente quando cambierò qualcosa nel file hosts dovrò riavviare il servizio per propagare i nuovi IP.