Utilizzare dnsmasq per fornire servizi DNS e DHCP

Molti appassionati di tecnologia trovano importante la capacità di controllare la risoluzione del nome host. L’impostazione di server e servizi di solito richiede una qualche forma di indirizzo fisso e talvolta richiede anche forme speciali di risoluzione come la definizione di server Kerberos o LDAP, server di posta, ecc. Tutto questo può essere ottenuto con dnsmasq.

dnsmasq è un programma leggero e semplice che consente l’emissione di indirizzi DHCP sulla rete e la registrazione del nome host & indirizzo IP in DNS. Questa configurazione consente anche la risoluzione esterna, quindi l’intera rete sarà in grado di parlare da sola e trovare anche siti esterni.

Questo articolo copre l’installazione e la configurazione di dnsmasq su una macchina virtuale o piccola macchina fisica come un Raspberry Pi in modo che possa fornire questi servizi nella rete domestica o in laboratorio. Se si dispone di una configurazione esistente e solo bisogno di regolare le impostazioni per la workstation locale, leggere l’articolo precedente che copre la configurazione del plugin dnsmasq in NetworkManager.

Installa dnsmasq

Innanzitutto, installa il pacchetto dnsmasq:

sudo dnf install dnsmasq

Quindi, abilitare e avviare il servizio dnsmasq:

sudo systemctl enable --now dnsmasq

Configurare dnsmasq

Innanzitutto, eseguire una copia di backup di dnsmasq.file conf:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

Quindi, modificare il file e apportare modifiche a quanto segue per riflettere la rete. In questo esempio, mydomain.org è il nome di dominio, 192.168.1.10 è l’indirizzo IP del server dnsmasq e 192.168.1.1 è il gateway predefinito.

sudo vi /etc/dnsmasq.conf

Inserire i seguenti contenuti:

domain-neededbogus-privno-resolvserver=8.8.8.8server=8.8.4.4local=/mydomain.org/listen-address=::1,127.0.0.1,192.168.1.10expand-hostsdomain=mydomain.orgdhcp-range=192.168.1.100,192.168.1.200,24hdhcp-option=option:router,192.168.1.1dhcp-authoritativedhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

Testare la configurazione per verificare errori di battitura e di sintassi:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

Ora modifica il file hosts, che può contenere host allocati sia staticamente che dinamicamente. Gli indirizzi statici dovrebbero trovarsi al di fuori dell’intervallo DHCP specificato in precedenza. Gli host che utilizzano DHCP ma che necessitano di un indirizzo fisso devono essere inseriti qui con un indirizzo all’interno dell’intervallo DHCP.

sudo vi /etc/hosts

Le prime due righe dovrebbero essere già lì. Aggiungere le righe rimanenti per configurare il router, il server dnsmasq e due server aggiuntivi.

127.0.0.1 localhost localhost.localdomain::1 localhost localhost.localdomain192.168.1.1 router192.168.1.10 dnsmasq192.168.1.20 server1192.168.1.30 server2

Riavvia il servizio dnsmasq:

sudo systemctl restart dnsmasq

Quindi aggiungere i servizi al firewall per consentire ai client di connettersi:

sudo firewall-cmd --add-service={dns,dhcp}
sudo firewall-cmd --runtime-to-permanent

Test name resolution

Innanzitutto, installa bind-utils per ottenere i pacchetti nslookup e dig. Questi consentono di eseguire ricerche sia in avanti che in retromarcia. È possibile utilizzare ping se si preferisce non installare pacchetti aggiuntivi. ma questi strumenti sono la pena di installare per la funzionalità di risoluzione dei problemi aggiuntivi che possono fornire.

sudo dnf install bind-utils

Ora prova la risoluzione. Innanzitutto, testare la risoluzione forward (hostname to IP address) :

$ nslookup server1Server: 127.0.0.1Address: 127.0.0.1#53Name: server1.mydomain.orgAddress: 192.168.1.20

Quindi, testare la risoluzione inversa (indirizzo IP al nome host) :

$ nslookup 192.168.1.2020.1.168.192.in-addr.arpa name = server1.mydomain.org.

Infine, testare la risoluzione dei nomi host al di fuori della rete:

$ nslookup fedoramagazine.orgServer: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: fedoramagazine.orgAddress: 35.196.109.67

Prova lease DHCP

Per testare lease DHCP, è necessario avviare una macchina che utilizza DHCP per ottenere un indirizzo IP. Qualsiasi variante di Fedora lo farà per impostazione predefinita. Una volta avviato il computer client, verificare che abbia un indirizzo e che corrisponda al file lease per dnsmasq.

Dalla macchina che esegue dnsmasq:

$ sudo cat /var/lib/dnsmasq/dnsmasq.leases1598023942 52:54:00:8e:d5:db 192.168.1.100 server3 01:52:54:00:8e:d5:db1598019169 52:54:00:9c:5a:bb 192.168.1.101 server4 01:52:54:00:9c:5a:bb

Estensione della funzionalità

È possibile assegnare agli host un indirizzo IP fisso tramite DHCP aggiungendolo al file hosts con l’indirizzo desiderato (all’interno dell’intervallo DHCP). Fate questo aggiungendo nel dnsmasq.file conf la seguente riga, che assegna l’IP elencato per ogni host che ha quel nome:

dhcp-host=myhost

in Alternativa, è possibile specificare un indirizzo MAC, che deve sempre essere assegnato un indirizzo IP fisso:

dhcp-host=11:22:33:44:55:66,192.168.1.123

È possibile specificare un server di avvio PXE se avete bisogno di automatizzare la macchina costruisce

tftp-root=/tftpboot
dhcp-boot=/tftpboot/pxelinux.0,boothost,192.168.1.240

Questo dovrebbe indicare l’URL del server TFTP.

Se è necessario specificare record SRV o TXT, ad esempio per LDAP, Kerberos o simili, è possibile aggiungere questi:

srv-host=_ldap._tcp.mydomain.org,ldap-server.mydomain.org,389
srv-host=_kerberos._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos._tcp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-master._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-adm._tcp.mydomain.org,krb-server.mydomain.org,749
srv-host=_kpasswd._udp.mydomain.org,krb-server.mydomain.org,464
txt-record=_kerberos.mydomain.org,KRB-SERVER.MYDOMAIN.ORG



+