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