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