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