Verwenden Sie dnsmasq, um DNS- und DHCP-Dienste bereitzustellen

Vielen Technikbegeisterten ist es wichtig, die Auflösung ihrer Hostnamen steuern zu können. Das Einrichten von Servern und Diensten erfordert normalerweise eine Form fester Adressen und manchmal auch spezielle Auflösungsformen wie das Definieren von Kerberos- oder LDAP-Servern, Mailservern usw. All dies kann mit dnsmasq erreicht werden.

dnsmasq ist ein leichtes und einfaches Programm, das die Ausgabe von DHCP-Adressen in Ihrem Netzwerk und die Registrierung des Hostnamens & IP-Adresse in DNS ermöglicht. Diese Konfiguration ermöglicht auch eine externe Auflösung, sodass Ihr gesamtes Netzwerk mit sich selbst sprechen und auch externe Sites finden kann.

Dieser Artikel behandelt die Installation und Konfiguration von dnsmasq auf einer virtuellen Maschine oder einer kleinen physischen Maschine wie einem Raspberry Pi, damit diese Dienste in Ihrem Heimnetzwerk oder Labor bereitgestellt werden können. Wenn Sie ein vorhandenes Setup haben und nur die Einstellungen für Ihre lokale Workstation anpassen müssen, lesen Sie den vorherigen Artikel zum Konfigurieren des dnsmasq-Plugins in NetworkManager.

dnsmasq installieren

Installieren Sie zuerst das dnsmasq-Paket:

sudo dnf install dnsmasq

Aktivieren und starten Sie als Nächstes den dnsmasq-Dienst:

sudo systemctl enable --now dnsmasq

Konfigurieren von dnsmasq

Erstellen Sie zunächst eine Sicherungskopie des dnsmasq.conf-Datei:

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

Bearbeiten Sie als Nächstes die Datei und nehmen Sie Änderungen an den folgenden vor, um Ihr Netzwerk widerzuspiegeln. In diesem Beispiel, mydomain.org ist der Domänenname, 192.168.1.10 ist die IP-Adresse des dnsmasq-Servers und 192.168.1.1 ist das Standardgateway.

sudo vi /etc/dnsmasq.conf

Folgenden Inhalt einfügen:

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

Testen Sie die Konfiguration auf Tippfehler und Syntaxfehler:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

Bearbeiten Sie nun die Hosts-Datei, die sowohl statisch als auch dynamisch zugewiesene Hosts enthalten kann. Statische Adressen sollten außerhalb des zuvor angegebenen DHCP-Bereichs liegen. Hosts, die DHCP verwenden, aber eine feste Adresse benötigen, sollten hier mit einer Adresse innerhalb des DHCP-Bereichs eingegeben werden.

sudo vi /etc/hosts

Die ersten beiden Zeilen sollten schon da sein. Fügen Sie die verbleibenden Zeilen hinzu, um den Router, den dnsmasq-Server und zwei weitere Server zu konfigurieren.

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

Starten Sie den dnsmasq-Dienst neu:

sudo systemctl restart dnsmasq

Fügen Sie als Nächstes die Dienste zur Firewall hinzu, damit die Clients eine Verbindung herstellen können:

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

Testnamensauflösung

Installieren Sie zuerst bind-utils, um die Pakete nslookup und dig abzurufen. Mit diesen können Sie sowohl Vorwärts- als auch Rückwärtssuchen durchführen. Sie können ping verwenden, wenn Sie keine zusätzlichen Pakete installieren möchten. diese Tools sind jedoch eine Installation wert, da sie zusätzliche Funktionen zur Fehlerbehebung bieten können.

sudo dnf install bind-utils

Testen Sie nun die Auflösung. Testen Sie zunächst die Forward-Auflösung (Hostname zu IP-Adresse):

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

Testen Sie als Nächstes die umgekehrte Auflösung (IP-Adresse zu Hostname):

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

Testen Sie schließlich die Auflösung von Hostnamen außerhalb Ihres Netzwerks:

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

Testen von DHCP-Leases

Um DHCP-Leases zu testen, müssen Sie einen Computer starten, der DHCP verwendet, um eine IP-Adresse abzurufen. Jede Fedora-Variante wird dies standardmäßig tun. Nachdem Sie den Clientcomputer gestartet haben, überprüfen Sie, ob er über eine Adresse verfügt und der Leasedatei für dnsmasq entspricht.

Von der Maschine mit 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

Erweiterung der Funktionalität

Sie können Hosts über DHCP eine feste IP-Adresse zuweisen, indem Sie sie mit der gewünschten Adresse (innerhalb Ihres DHCP-Bereichs) zu Ihrer Hosts-Datei hinzufügen. Tun Sie dies, indem Sie in die dnsmasq hinzufügen.conf-Datei die folgende Zeile, die die IP-Adresse jedem Host mit diesem Namen zuweist:

dhcp-host=myhost

Alternativ können Sie eine MAC-Adresse angeben, die immer eine feste IP-Adresse erhalten soll:

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

Sie können einen PXE-Bootserver angeben, wenn Sie Maschinen-Builds automatisieren müssen

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

Dies sollte auf die tatsächliche URL Ihres TFTP-Servers verweisen.

Wenn Sie SRV- oder TXT-Datensätze angeben müssen, z. B. für LDAP, Kerberos oder ähnliches, können Sie diese hinzufügen:

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



+