Gebruik dnsmasq om DNS & DHCP-diensten

te leveren veel tech-liefhebbers vinden de mogelijkheid om hun hostnaam-resolutie te beheren belangrijk. Het instellen van servers en services vereist meestal een bepaalde vorm van vast adres, en soms vereist ook speciale vormen van resolutie, zoals het definiëren van Kerberos of LDAP servers, mailservers, enz. Dit alles kan worden bereikt met dnsmasq.

dnsmasq is een lichtgewicht en eenvoudig programma dat het mogelijk maakt DHCP-adressen op uw netwerk uit te geven en de hostnaam & IP-adres in DNS te registreren. Deze configuratie maakt ook externe resolutie mogelijk, zodat je hele netwerk in staat zal zijn om met zichzelf te spreken en ook externe sites te vinden.

dit artikel behandelt het installeren en configureren van dnsmasq op een virtuele machine of een kleine fysieke machine zoals een Raspberry Pi, zodat het deze diensten kan leveren in uw thuisnetwerk of lab. Als je een bestaande setup hebt en je hoeft alleen maar de instellingen voor je lokale werkstation aan te passen, lees dan het vorige artikel over het configureren van de dnsmasq plugin in NetworkManager.

installeer dnsmasq

installeer eerst het dnsmasq-pakket:

sudo dnf install dnsmasq

schakel vervolgens de dnsmasq-service in en start deze op:

sudo systemctl enable --now dnsmasq

configureer dnsmasq

maak eerst een back-up van de dnsmasq.conf-bestand:

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

bewerk vervolgens het bestand en breng wijzigingen aan in het volgende om uw netwerk weer te geven. In dit voorbeeld, mydomain.org is de domeinnaam, 192.168.1.10 is het IP-adres van de dnsmasq server en 192.168.1.1 is de standaard gateway.

sudo vi /etc/dnsmasq.conf

de volgende inhoud toevoegen:

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

Test de configuratie om te controleren op typefouten en syntaxisfouten:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

Bewerk nu het hosts-bestand, dat zowel statisch-als dynamisch toegewezen hosts kan bevatten. Statische adressen moeten buiten het DHCP-bereik liggen dat u eerder hebt opgegeven. Hosts die DHCP gebruiken maar die een vast adres nodig hebben, moeten hier worden ingevoerd met een adres binnen het DHCP bereik.

sudo vi /etc/hosts

de eerste twee regels zouden er al moeten zijn. Voeg de resterende regels toe om de router, de dnsmasq-server en twee extra servers te configureren.

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

Herstart de dnsmasq-service:

sudo systemctl restart dnsmasq

voeg vervolgens de services toe aan de firewall zodat de clients verbinding kunnen maken:

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

testnaam resolutie

installeer eerst bind-utils om de NSLOOKUP en dig pakketten te krijgen. Hiermee kunt u zowel forward als reverse lookups uitvoeren. Je zou ping kunnen gebruiken als je liever geen extra pakketten installeert. maar deze tools zijn de moeite waard om te installeren voor de extra functionaliteit voor het oplossen van problemen die ze kunnen bieden.

sudo dnf install bind-utils

test nu de resolutie. Test eerst de resolutie doorsturen (hostnaam naar IP-adres) :

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

test vervolgens de omgekeerde resolutie (IP-adres naar hostnaam) :

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

ten slotte, test het oplossen van hostnamen buiten uw netwerk:

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

Test DHCP leases

om DHCP leases te testen, moet je een machine opstarten die DHCP gebruikt om een IP-adres te verkrijgen. Elke Fedora variant zal dat standaard doen. Zodra u de client machine hebt opgestart, controleert u of het een adres heeft en of het overeenkomt met het lease-bestand voor dnsmasq.

van de machine waarop dnsmasq draait:

$ 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

functionaliteit uitbreiden

u kunt hosts een vast IP-adres toewijzen via DHCP door het toe te voegen aan uw hosts-bestand met het adres dat u wilt (binnen uw DHCP-bereik). Doe dit door toe te voegen aan de dnsmasq.conf bestand de volgende regel, die het opgegeven IP-adres toewijst aan elke host met die naam:

dhcp-host=myhost

u kunt ook een MAC-adres opgeven dat altijd een vast IP-adres moet krijgen:

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

u kunt een PXE bootserver opgeven als u Machine builds

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

moet automatiseren. dit zou naar de werkelijke URL van uw TFTP-server moeten wijzen.

als u SRV-of TXT-records moet opgeven, bijvoorbeeld voor LDAP, Kerberos of iets dergelijks, kunt u deze toevoegen:

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



+