Come eseguire il proprio server DNS sulla rete locale

jivacore/Shutterstock.com

L'esecuzione del proprio server DNS è un ottimo modo per accelerare la reattività della rete, ridurre la dipendenza dall'infrastruttura pubblica e beneficiare di funzionalità extra come il routing del nome host. Ecco come configurare un server DNS su una macchina Linux usando Dnsmasq.

Cos'è il DNS?

Il sistema è DNS che traduce un nome di dominio come example.com nell'indirizzo IP numerico del suo server. Potrebbe sembrare 127.0.0.1. Ogni volta che effettui una richiesta di rete utilizzando un nome di dominio, il tuo sistema eseguirà una ricerca DNS per determinare l'indirizzo del server da contattare.

Questo aggiunge un sovraccarico a ogni richiesta che fai. Sebbene il tuo dispositivo memorizzi nella cache le risposte DNS, le visite a nuovi domini subiranno un round trip DNS prima che inizi la richiesta effettiva. Ciò si verifica a livello dello stack di rete del sistema operativo, invisibile all'utente.

Gli ISP di solito eseguono server DNS. Probabilmente stai facendo affidamento sul server del tuo ISP se stai utilizzando le impostazioni predefinite sul router e sui dispositivi. Altri server DNS pubblici sono disponibili da provider come Cloudflare e Google.

Perché eseguire il tuo DNS?

Eseguire il tuo server DNS ti dà un maggiore controllo sulla tua rete. Una motivazione comune è la possibilità di configurare mappature di dominio a livello di rete, come il server Web su 192.168.0.101. Configurando il tuo router per utilizzare il tuo DNS, tutti i tuoi dispositivi connessi sarebbero in grado di accedere a 192.168.0.101 tramite http://web-server.

Annuncio

Avere il tuo server DNS ti consente di centralizzare le impostazioni in un'unica posizione invece di applicarle individualmente in /etc/hosts su ciascun dispositivo. Si applicheranno a tutto ciò che ti connetti alla rete, incluso l'hardware integrato che non fornisce altro modo per personalizzare il suo stack di routing.

Un server DNS interno può anche migliorare le prestazioni e fornire un livello aggiuntivo di resilienza. Le interruzioni DNS su larga scala non sono inaudite; l'utilizzo di un server personalizzato con una cache di lunga durata per i servizi critici con cui interagisci potrebbe aiutarti a superare i tempi di inattività presso il provider upstream selezionato.

DNS With Dnsmasq

Dnsmasq è un server DNS leggero che è incluso nella maggior parte delle distribuzioni Linux. È anche piacevolmente semplice da configurare.

Prima di iniziare, vale la pena pensare a quale funzionalità è necessario che il tuo server DNS fornisca. In questa guida, esamineremo la configurazione di Dnsmasq con la memorizzazione nella cache locale, alcune route di dominio personalizzate e 8.8.8.8 di Google come provider DNS upstream.

Il flusso di routing verrà visualizzato così:

  • Il router di rete riceve una richiesta da uno dei tuoi dispositivi connessi. Il router sarà configurato per utilizzare l'host Dnsmasq come server DNS.
  • Dnsmasq controllerà se ha un percorso definito per il nome di dominio, come il server web per 192.168.0.101. Se la richiesta era per http://web-server/example-page, invierà 192.168.0.101 al router.
  • Quando Dnsmasq non ha un percorso corrispondente, inoltrerà la richiesta DNS a 8.8.8.8 di Google, abilitando la risoluzione su Internet pubblico. Ciò garantisce che tu possa ancora raggiungere il Web più ampio quando utilizzi il tuo DNS.

Non sarà necessario apportare modifiche alla configurazione sui dispositivi client. Tutto ciò che sta dietro al tuo router finirà per effettuare query DNS tramite Dnsmasq. Tuttavia, vale la pena notare che tutti i più diffusi sistemi operativi desktop e mobili supportano l'impostazione di un server DNS, quindi è possibile configurare i singoli dispositivi per utilizzare Dnsmasq senza abilitarlo a livello di router.

Per iniziare

Supponiamo che tu abbia già una macchina Linux funzionante pronta per ospitare Dnsmasq. Dnsmasq non è particolarmente dispendioso in termini di risorse – se hai pochi dispositivi client, verrà eseguito facilmente su un Raspberry Pi.

Annuncio

Il tuo host dovrebbe avere un IP statico assegnato. Da qui in poi, l'IP 192.168.0.1 si riferisce al server Dnsmasq.

Assicurati che Dnsmasq sia installato:

# Supponendo che un sistema Debian apt update apt install dnsmasq

Il file di configurazione di Dnsmasq si trova solitamente in /etc/dnsmasq.conf. Questo è precompilato con le impostazioni iniziali. È necessario apportare alcune modifiche affinché Dnsmasq funzioni efficacemente in uno scenario di rete locale. Esegui sudo nano /etc/dnsmasq.conf per aprire il file, quindi usa la scorciatoia da tastiera Ctrl+W per trovare e decommentare le seguenti righe:

#domain-needed #bogus-priv

Rimuovi il carattere # da l'inizio di ogni riga. Ecco cosa stanno abilitando queste impostazioni:

  • dominio necessario– Ciò impedisce a Dnsmasq di inoltrare nomi locali senza una parte di dominio al server DNS upstream. Nella nostra installazione, significa che example.com sarà idoneo per la risoluzione tramite Google ma example o web-server no. Riserva nomi senza punti per la tua rete locale.
  • fasullo-priv– Impedisce l'inoltro di query di ricerca inversa DNS al server DNS upstream. Significa che gli IP interni come 192.168.0.101 non saranno mai esposti a Google. Non abilitarlo potrebbe inavvertitamente far passare l'architettura della tua rete interna al tuo provider upstream.

Per impostare il tuo server DNS upstream, aggiungi una nuova riga al tuo file di configurazione:

server= 8.8.8.8 server=4.4.4.4

Questo indica a Dnsmasq di inoltrare le query non risolte a 8.8.8.8. Se quel server non è disponibile, verrà utilizzato 4.4.4.4. Questi indirizzi sono i resolver primari e secondari per il servizio DNS di Google.

Quindi regola la dimensione della cache. L'impostazione predefinita è un valore relativamente basso di 150 richieste memorizzate nella cache. L'aumento di questo consentirà a Dnsmasq di eseguire più ricerche dalla cache, riducendo la latenza di rete. Trova la riga della dimensione della cache, decommentala e modifica il suo valore:

cache-size=1000

Salva e chiudi il file ora.

Mappatura di nomi host su IP

Esistono diversi modi per mappare i nomi host ai loro indirizzi IP. Il più semplice è aggiungere voci al file /etc/hosts esistente del tuo server. Dnsmasq carica automaticamente le regole da questo file come parte della sua configurazione predefinita.

Annuncio

Apri /etc/hosts e aggiungi i tuoi percorsi in fondo al file. L'indirizzo IP viene prima, seguito dal nome da assegnare:

192.168.0.101 web-server 192.168.0.105 gateway.lan

Queste righe indicano che qualsiasi richiesta a http://web-server sarà indirizzata a 192.168 .0.101 mentre http://gateway.lan finirà a 192.168.0.5. Salva e chiudi il file quando hai finito di mappare i tuoi dispositivi.

Test del tuo server

Riavvia Dnsmasq per applicare tutte le modifiche:

sudo service dnsmasq restart

Verifica che il server funzioni correttamente:

sudo service dnsmasq status

Dovresti vedere attivo (in esecuzione) visualizzato in verde . Se non lo fai, controlla le righe di registro nella parte inferiore delle informazioni sullo stato per capire cosa non va.

Ora sei pronto per testare il tuo server. Puoi effettuare tentativi di ricerca DNS manuali con lo strumento dig. Potrebbe essere necessario installare prima il pacchetto dnsutils.

dig google.com @localhost dig gateway.lan @localhost

Entrambi questi comandi dovrebbero mostrare un indirizzo IP nella SEZIONE RISPOSTE. Nel caso di gateway.lan, il risultato dovrebbe essere 192.168.0.5 secondo la regola di routing impostata in /etc/hosts. La parte @localhost dei comandi indica a dig di interrogare il tuo server DNS locale.

Configurazione della rete

Il passaggio finale consiste nel configurare il router di rete per effettuare ricerche DNS tramite il server Dnsmasq. I passaggi per questo variano a seconda dell'attrezzatura di routing che stai utilizzando.

Pubblicità

Una volta trovata la pagina delle impostazioni corretta, imposta l'IP del tuo server (192.168.0.1 in questa guida) come server DNS primario del router. È una buona idea configurare un provider DNS pubblico, come 8.8.8.8 di Google, come server secondario. Ciò ti garantisce di avere ancora accesso a Internet se il tuo server DNS si blocca e va offline.

Ora tutti i dispositivi collegati al router effettueranno query DNS tramite la tua istanza Dnsmasq. Saranno in grado di raggiungere i tuoi dispositivi tramite i nomi assegnati, come web-server e gateway.lan, e trarre vantaggio dalla memorizzazione nella cache DNS a livello di rete.

Conclusione

DNS è un argomento complesso ma Dnsmasq rende facile rendere operativo un server di base. Ci sono molte altre impostazioni che puoi esplorare una volta che hai messo in funzione le funzionalità di base. Questi ti consentono di filtrare le query, gestire relay e proxy, eseguire script quando si verificano eventi e impostare altri tipi di record DNS come i risultati MX per i server di posta.

Dnsmasq di solito non ha bisogno di molto manuale intervento una volta che è attivo. È possibile monitorare i log utilizzando il servizio dnsmasq status o systemctl status dnsmasq. Ora sei pronto per trarre vantaggio dal tuo server DNS self-hosted, massimizzando le prestazioni e permettendoti di utilizzare nomi di dominio interni per raggiungere i dispositivi di rete locali.


Posted

in

by

Tags: