DNS Einrichtung · 12 min read · Sep 08, 2025

So richten Sie lokalen DNS mit Dnsmasq auf Debian 12 ein

Dnsmasq ist ein kleiner und leichter Netzwerkdienst für Ihre lokale Umgebung (LAN). Er bietet Netzwerkdienste wie DNS, DHCP und TFTP. Dnsmasq kann als DNS-Weiterleiter, rekursiver DNS-Server und DNS-Caching-System verwendet werden. Er lädt auch DNS-Inhalte aus der Datei /etc/hosts, was es Ihnen ermöglicht, Domainnamen für lokale Hostnamen einzurichten.

Dnsmasq ist so konzipiert, dass er leichtgewichtig ist und einen kleinen Speicherbedarf hat, was ihn für ressourcenschwache Geräte wie Router und Firewalls geeignet macht. Dnsmasq kann auf Linux, BSDs, Android und macOS ausgeführt werden.

Dieses Tutorial installiert und konfiguriert einen lokalen DNS-Server mit Dnsmasq auf einem Debian 12-Server. Wir werden einen lokalen DNS-Server einrichten, der für Ihr lokales Netzwerk verwendet werden kann, lokale Domainnamen hinzufügen, den DNS-Cache aktivieren und den DHCP-Server über Dnsmasq aktivieren. Sie lernen auch, wie Sie einen Client-Rechner einrichten und hinzufügen, um den lokalen DNS-Server zu verwenden. Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie auf alle Ihre Anwendungen über den lokalen Domainnamen zugreifen, und Ihre DNS-Anfragen werden schneller, da Sie den DNS-Cache aktiviert haben.

Voraussetzungen

Bevor Sie beginnen, müssen Sie die folgenden Anforderungen erfüllen, um dieses Tutorial abzuschließen:

  • Ein Debian 12-Server - Dieses Beispiel verwendet einen Debian-Server mit dem Hostnamen ‘ dnsmasq-server ‘ und der IP-Adresse 192.168.5.20.
  • Ein Nicht-Root-Benutzer mit sudo/root-Administratorrechten.

Für den Client-Rechner können Sie jede Linux-Distribution verwenden, da die DNS-Konfiguration für jede Distribution ähnlich ist.

System vorbereiten

In diesem Schritt bereiten Sie Ihren Debian-Server vor, der als lokaler DNS-Server verwendet wird. Sie aktualisieren den Paketindex, stoppen und deaktivieren den Dienst ‘ systemd-resolved ‘, und dann erstellen Sie eine statische DNS-Resolver-Konfiguration über die Datei ‘ /etc/resolv.conf ‘.

Auf dem Debian-System wird der DNS-Resolver vom Dienst ‘systemd-resolved’ verwaltet, der die Namensauflösung über die D-BUS-Schnittstelle bereitstellt. Um die DNS-Server-Software wie Dnsmasq einzurichten, müssen Sie den Dienst ‘ systemd-resolved ‘ deaktivieren.

Bevor Sie beginnen, führen Sie den folgenden apt-Befehl aus, um Ihren Debian-Paketindex zu aktualisieren und zu aktualisieren.

sudo apt update

Führen Sie als Nächstes den folgenden Befehl aus, um den Dienst ‘ systemd-resolved ‘ zu stoppen und zu deaktivieren. Auf dem Debian-System wird die DNS-Konfiguration vom NetworkManager und dem Dienst systemd-resolved verwaltet.

sudo systemctl disable --now systemd-resolved  
sudo systemctl stop systemd-resolved

Entfernen Sie die Verknüpfungsdatei der DNS-Resolver-Konfiguration ‘/etc/resolv.conf’ mit dem folgenden Befehl.

sudo unlink /etc/resolv.conf

Erstellen Sie danach eine neue DNS-Resolver-Konfigurationsdatei ‘ /etc/resolv.conf ‘ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/resolv.conf

Fügen Sie die folgenden Zeilen in die Datei ein. Dies wird die Cloudflare- und Google-öffentlichen DNS als Resolver für Ihren Debian-Server hinzufügen.

nameserver 1.1.1.1  
nameserver 8.8.8.8

Speichern Sie die Datei und beenden Sie den Editor, wenn Sie fertig sind. Gehen Sie nun zu den nächsten Schritten für die Installation und Konfiguration von Dnsmasq.

System vorbereiten

Dnsmasq installieren und konfigurieren

In diesem Schritt installieren und richten Sie den lokalen DNS-Server mit Dnsmasq ein. Sie richten Dnsmasq so ein, dass es auf dem Standard-DNS-Port 53 und der internen IP-Adresse ‘ 192.168.5.20 ‘ läuft. Sie definieren auch den Domainnamen für den Dnsmasq-Dienst, aktivieren den DNS-Cache und aktivieren schließlich den DHCP-Server über Dnsmasq.

Das Standardpaket ‘ dnsmasq ‘ ist im Debian-Repository verfügbar. Führen Sie den folgenden apt-Befehl aus, um das Dnsmasq-Paket zu installieren.

sudo apt install dnsmasq

Wenn Sie dazu aufgefordert werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren.

Dnsmasq installieren

Nachdem Dnsmasq installiert ist, führen Sie das folgende systemctl-Befehlsdienstprogramm aus, um den Dienst ‘dnsmasq’ zu überprüfen und sicherzustellen, dass der Dienst aktiviert und ausgeführt wird.

sudo systemctl is-enabled dnsmasq  
sudo systemctl status dnsmasq

Sie erhalten eine Ausgabe, die ähnlich ist wie diese - Der Dnsmasq-Dienst ist aktiviert und wird beim Booten automatisch gestartet. Und der aktuelle Status des Dnsmasq-Dienstes ist aktiv.

Dnsmasq überprüfen

Da Dnsmasq auf Ihrem Debian-System läuft, starten Sie als Nächstes die Dnsmasq-Konfiguration über die Datei ‘/etc/dnsmasq.conf ‘.

Um zu beginnen, führen Sie den folgenden Befehl aus, um die Standard-Dnsmasq-Konfigurationsdatei zu sichern.

sudo cp /etc/dnsmasq.conf{,.orig}

Öffnen Sie nun die Dnsmasq-Konfigurationsdatei ‘ /etc/dnsmasq.conf ‘ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/dnsmasq.conf

Fügen Sie die folgenden Zeilen in die Datei ein.

# dnsmasq läuft auf UDP-Port 53  
# mit IP-Adresse localhost und 192.168.5.20  
# und Netzwerkschnittstelle eth1  
port=53  
listen-address=127.0.0.1,192.168.5.20  
interface=eth1  
  
# Weiterleitung von nicht gerouteten Adressen deaktivieren  
# Weiterleitung von Namen ohne die Hauptdomain.com deaktivieren  
# Automatisch den Domainteil zu einfachen Namen hinzufügen  
# dnsmasq deaktivieren, um die Datei /etc/resolv.conf zu lesen  
domain-needed  
bogus-priv  
expand-hosts  
no-resolv  
  
# Upstream-DNS-Server für nicht-lokale Domainnamen  
# Verwendung von Cloudflare und Google-öffentlichen DNS  
server=1.1.1.1  
server=8.8.8.8  
  
# Definieren Sie die Domain für dnsmasq  
domain=howtoforge.local  
address=/howtoforge.local/192.168.5.20  
  
# Aktivieren Sie den DNS-Cache und passen Sie die Cache-Größe an  
cache-size=1000  
  
# Aktivieren Sie DHCP über dnsmasq  
# Definieren Sie die Lease-Datenbankdatei  
# Machen Sie den DHCP-Server autoritativ  
dhcp-range=192.168.5.80,192.168.5.150,12h  
dhcp-leasefile=/var/lib/misc/dnsmasq.leases  
dhcp-authoritative

Speichern Sie die Datei und schließen Sie den Editor, wenn Sie fertig sind.

Detailoptionen, die Sie für Dnsmasq verwenden:

  • port: welcher Port verwendet wird, um Dnsmasq auszuführen.
  • listen-address: welche IP-Adresse verwendet wird, um Dnsmasq auszuführen. Sie können mehrere IP-Adressen verwenden.
  • interface: an welcher Schnittstelle Dnsmasq gebunden und ausgeführt wird.
  • domain-needed: Deaktivieren Sie die Weiterleitung von Namen ohne die Hauptdomainadresse. Sie können auf den Host ‘ mysql1 ‘ zugreifen, es sei denn, Sie geben die vollständige lokale Domain wie ‘ mysql1.howtoforge.local ‘ an.
  • bogus-priv: Deaktivieren Sie die Weiterleitung für nicht geroutete Adressen.
  • expand-hosts: Automatisch den lokalen Domainteil zu einfachen Namen hinzufügen.
  • no-resolv: Ignorieren Sie die Datei ‘/etc/resolv.conf’ auf dem Server.
  • server: Definieren Sie den Upstream-DNS-Server, den Sie für nicht-lokale Adressen oder Domains verwenden. In diesem Beispiel wird der öffentliche DNS-Server von Cloudflare und Google verwendet.
  • domain: Definieren Sie den Domainnamen für den Dnsmasq-Server. In diesem Beispiel erhält der Dnsmasq-Server die lokale Domain howtoforge.local.
  • address: Definieren Sie, welche IP-Adresse für den Domainnamen auf Dnsmasq verwendet wird. In diesem Beispiel wird die Domain howtoforge.local auf die IP-Adresse 192.168.5.20 aufgelöst.
  • cache-size: Aktivieren Sie den DNS-Cache auf Dnsmasq. Stellen Sie sicher, dass Sie die Größe anpassen, um die Leistung und Geschwindigkeit zu erhöhen.
  • dhcp-range: Aktivieren Sie den DHCP-Server über Dnsmasq. Passen Sie den IP-Adresspool für Ihr Netzwerk und die Lease-Zeit an.
  • dhcp-leasefile: Definieren Sie die Datei, die zur Speicherung des DHCP-Leasings verwendet wird.
  • dhcp-authoritative: Machen Sie den DHCP-Server autoritativ.

Dnsmasq-Konfiguration

Öffnen Sie als Nächstes die Konfigurationsdatei ‘/etc/hosts’ mit dem folgenden nano-Editor-Befehl. Sie können das Subdomain für Ihre internen Anwendungen definieren, das automatisch mit dem Dnsmasq-Domainnamen ‘ howtoforge.local ‘ konfiguriert wird.

sudo nano /etc/hosts

Fügen Sie die folgenden Zeilen in die Datei ein. In diesem Beispiel definieren Sie die Subdomains app1, db1 und files. Die Hauptdomain für diese Subdomains ist der Dnsmasq-Server selbst ‘ howtoforge.local ‘.

Mit den folgenden Zeilen wird ‘ app1.howtoforge.local ‘ auf die IP-Adresse ‘ 192.168.5.10 ‘ aufgelöst, die Subdomain ‘ db1.howtoforge.local ‘ wird auf die Server-IP-Adresse ‘ 192.168.5.25 ‘ und die Subdomain ‘files.howtoforge.local ‘ wird auf die IP-Adresse ‘192.168.5.50 ‘ aufgelöst.

192.168.5.10 app1  
192.168.5.25 db1  
192.168.5.50 files 

Speichern Sie die Datei und beenden Sie den Editor, wenn Sie fertig sind.

Öffnen Sie als Nächstes die Datei ‘ /etc/resolv.conf ‘ mit dem folgenden nano-Editor-Befehl und fügen Sie die IP-Adresse des Dnsmasq-Servers als ‘ nameserver ‘ hinzu.

sudo nano /etc/resolv.conf

Fügen Sie die folgenden Zeilen oben in die Datei ein. Stellen Sie sicher, dass Sie die IP-Adresse mit der IP-Adresse des Dnsmasq-Servers ändern.

nameserver 127.0.0.1  
nameserver 192.168.5.20

Speichern Sie die Datei und beenden Sie den Editor, wenn Sie fertig sind.

Führen Sie nun den Befehl ‘dnsmasq’ unten aus, um die Dnsmasq-Konfiguration zu überprüfen und sicherzustellen, dass Sie das richtige Format haben. Sie sollten eine Ausgabe wie ‘ dnsmasq - syntax check OK ‘ erhalten.

sudo dnsmasq --test

Führen Sie schließlich das folgende systemctl-Befehlsdienstprogramm aus, um den Dienst ‘ dnsmasq’ neu zu starten und die Änderungen anzuwenden.

sudo systemctl restart dnsmasq

Dnsmasq überprüfen und konfigurieren

An diesem Punkt haben Sie die Konfiguration des lokalen DNS-Servers über Dnsmasq auf dem Debian-System abgeschlossen. Sie haben auch den lokalen Domainnamen und die Subdomains konfiguriert, den DNS-Cache aktiviert und den DHCP-Server über Dnsmasq aktiviert.

In den nächsten Schritten überprüfen Sie die Installation und Konfiguration Ihres Dnsmasq-Servers.

Überprüfung der Dnsmasq-Installation

In diesem Schritt überprüfen Sie die Dnsmasq-Installation, indem Sie den Dnsmasq-Dienst und den LISTEN-Port auf Ihrem System überprüfen. Dann überprüfen Sie den lokalen Domainnamen und die Subdomains, die Sie über die Datei ‘/etc/hosts’ konfiguriert haben.

Führen Sie den folgenden Befehl aus, um sicherzustellen, dass der Dnsmasq-Dienst auf Port 53 läuft. Überprüfen Sie dann den Status des Dnsmasq-Dienstes über das systemctl-Befehlsdienstprogramm.

ss -tulpn | grep 53  
sudo systemctl status dnsmasq

Sie erhalten eine Ausgabe, die ähnlich ist wie diese - Der Dnsmasq-Dienst läuft auf dem Standardport 53 und ist aktiviert und wird beim Booten automatisch gestartet.

Dnsmasq-Dienst überprüfen

Als Nächstes überprüfen Sie den Domainnamen und die Subdomains, die Sie über Dnsmasq in der Datei ‘ /etc/hosts ‘ konfiguriert haben. Aber bevor Sie das tun, führen Sie den folgenden apt-Befehl aus, um das Paket ‘ dnsutils ‘ auf Ihrem System zu installieren. Das Paket ‘dnsutils’ bietet Befehlszeilenwerkzeuge zum Testen der DNS-Serverkonfiguration.

sudo apt install dnsutils

Geben Sie y ein, wenn Sie dazu aufgefordert werden, und drücken Sie ENTER, um mit der Installation fortzufahren.

Nachdem das Paket ‘ dnsutils ‘ installiert ist, führen Sie den folgenden dig-Befehl aus, um den Domainnamen und die Subdomains zu überprüfen, die Sie konfiguriert haben.

Überprüfen Sie die Hauptdomain von Dnsmasq ‘ howtoforge.local ‘, die auf die IP-Adresse des Dnsmasq-Servers ‘192.168.5.20’ zeigt.

dig howtoforge.local

Testen mit dem dig-Befehl

Überprüfen Sie die Subdomains, die Sie über die Datei ‘/etc/hosts’ definiert haben, mit dem folgenden dig-Befehl.

dig app1.howtoforge.local +short  
dig db1.howtoforge.local +short  
dig files.howtoforge.local +short

Die Subdomain ‘ app1.howtoforge.local ‘ zeigt auf die IP-Adresse ‘ 192.168.5.10 ‘, die Subdomain ‘ db1.howtoforge.local ‘ zeigt auf die IP-Adresse ‘ 192.168.5.25 ‘, und schließlich zeigt ‘ files.howtoforge.local ‘ auf die IP-Adresse ‘ 192.168.5.50 ‘.

Unten sehen Sie die ähnliche Ausgabe, die Sie erhalten werden.

Subdomains überprüfen

Jetzt haben Sie die Dnsmasq-Installation als lokalen DNS-Server auf einem Debian-Server konfiguriert und getestet. In den nächsten Schritten richten Sie Dnsmasq ein und sichern es mit der UFW-Firewall.

UFW-Firewall einrichten

Jetzt richten Sie die Firewall auf Ihrem lokalen DNS-Server ein. Sie sichern die Dnsmasq-Installation, indem Sie den Zugriff auf den DNS-Server über die UFW-Firewall einschränken.

Führen Sie den folgenden apt-Befehl aus, um die UFW-Firewall auf Ihrem Debian-System zu installieren.

sudo apt install ufw -y

UFW-Firewall installieren

Nachdem Sie UFW installiert haben, führen Sie den folgenden Befehl aus, um den OpenSSH-Dienst und den DNS-Port 53 zur UFW-Firewall hinzuzufügen. In diesem Beispiel geben Sie die Quelle des Netzwerks an, die Zugriff auf den Dnsmasq-Server haben darf, nämlich das lokale Netzwerk mit den IP-Adressen 192.168.5.0/24.

Stellen Sie sicher, dass Sie die lokalen Netzwerk-IP-Adressen mit Ihrem internen Netzwerk-Subnetz ändern.

sudo ufw allow OpenSSH  
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udp

Führen Sie als Nächstes den folgenden Befehl aus, um die UFW-Firewall zu starten und zu aktivieren.

sudo ufw enable

Wenn Sie nach der Konfiguration gefragt werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren. Und die UFW-Firewall sollte jetzt aktiv und aktiviert sein und wird beim Booten automatisch gestartet.

UFW aktivieren

Führen Sie schließlich den folgenden Befehl aus, um den Status der UFW-Firewall zu überprüfen. Sie sollten sehen, dass die UFW-Firewall ‘aktiv’ ist und der OpenSSH-Dienst sowie der DNS-Port 53 zur Firewall hinzugefügt wurden.

sudo ufw status

UFW überprüfen

Mit der konfigurierten UFW-Firewall können Sie jetzt Clients hinzufügen, die sich mit Ihrem lokalen DNS-Server verbinden.

Client einrichten

In diesem Schritt richten Sie den Client-Rechner mit einer Debian-basierten Distribution und dem Hostnamen ‘ client ‘ ein. Sie fügen den lokalen DNS-Server Dnsmasq zum Client-Rechner hinzu.

Führen Sie den folgenden Befehl aus, um die Verknüpfung der DNS-Resolver-Konfigurationsdatei ‘/etc/resolv.conf’ zu entfernen. Erstellen Sie dann eine neue Resolver-Konfiguration ‘ /etc/resolv.conf ‘ mit dem folgenden nano-Editor-Befehl.

sudo unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Geben Sie die folgende Zeile in die Datei ein. Stellen Sie sicher, dass Sie die IP-Adresse mit der IP-Adresse Ihres Dnsmasq-Servers ändern.

nameserver 192.168.5.20

Speichern Sie die Datei und beenden Sie den Editor, wenn Sie fertig sind.

Führen Sie als Nächstes den folgenden Befehl aus, um das Paket ‘dnsutils’ auf dem Client-Rechner zu installieren.

sudo apt install dnsutils

Client einrichten

Führen Sie nun den dig-Befehl unten aus, um den Domainnamen ‘ howtoforge.local ‘ zu überprüfen, der auf die IP-Adresse des Dnsmasq-Servers zeigt.

dig howtoforge.local

Unten sehen Sie die Ausgabe, die Sie erhalten werden.

Domain vom Client überprüfen

Für Subdomains führen Sie den folgenden dig-Befehl aus. Jede Subdomain wird auf die IP-Adresse zeigen, die in der Datei ‘ /etc/hosts ‘ auf dem Dnsmasq-Server definiert ist.

dig app1.howtoforge.local +short  
dig db1.howtoforge.local +short  
dig files.howtoforge.local +short

Unten sehen Sie die ähnliche Ausgabe, die Sie auf dem Client-Rechner erhalten werden.

Subdomains überprüfen

Als Nächstes müssen Sie auch sicherstellen, dass Sie auf den öffentlichen Domainnamen über den Dnsmasq-lokalen DNS-Server zugreifen können. Sie können dies überprüfen, indem Sie den öffentlichen Domainnamen wie ‘ github.com ‘ überprüfen.

dig github.com

Sie erhalten eine Ausgabe, die dieser Screenshot ähnelt - Am Ende der Ausgabe sollten Sie sehen, dass Ihre Anfrage vom Dnsmasq-lokalen DNS-Server beantwortet wird, der auf ‘ 192.168.5.20’ mit dem Standardport ‘ 53 ‘ läuft. Mit diesem Wissen haben Sie erfolgreich eine Verbindung zum öffentlichen Domainnamen über den Dnsmasq-lokalen DNS-Server hergestellt.

Überprüfen, ob DNS funktioniert

Zuletzt überprüfen Sie den DNS-Cache über die ‘drill’- und ‘dig’-Befehle. Der Befehl ‘ drill ‘ ist Teil des Pakets ‘ ldnsutils ‘, also führen Sie den folgenden apt-Befehl aus, um es zu installieren.

sudo apt install ldnsutils

ldns installieren

Nachdem Sie ldnsutils installiert haben, führen Sie den folgenden drill-Befehl aus, um den DNS-Cache zu überprüfen, den Sie auf dem Dnsmasq-Server konfiguriert haben.

drill duckduckgo.com | grep "Query time"  
drill duckduckgo.com | grep "Query time"

Sie erhalten eine Ausgabe wie im folgenden Screenshot - beim ersten Mal, dass Sie die Anfrage stellen, beträgt die ‘ Query time ‘ 60 ms. Aber beim zweiten Mal, dass Sie die gleiche Domain anfordern, wird die Abfragezeit auf 1 ms reduziert, was bedeutet, dass die DNS-Anfrage im lokalen DNS-Server Dnsmasq zwischengespeichert wird.

DNS-Cache überprüfen

Sie können den DNS-Cache auch über den dig-Befehl mit der Option ‘ +stats ‘ überprüfen.

dig +noall +stats duckduckgo.com  
dig +noall +stats duckduckgo.com

Sie haben nun die Konfiguration des Client-Rechners abgeschlossen und überprüft, dass der Dnsmasq-lokale DNS-Server vollständig funktioniert, von dem lokalen Domainnamen und den Subdomains, die Sie über die Datei ‘/etc/hosts’ definiert haben, bis hin zum DNS-Cache, den Sie auf Dnsmasq aktiviert haben.

Fazit

In diesem Tutorial haben Sie Ihren eigenen lokalen DNS-Server mit Dnsmasq erstellt. Sie haben Ihren eigenen lokalen DNS-Server für Ihre lokale Umgebung mit Dnmasq auf einem Debian 12-Server eingerichtet. Dies beinhaltete auch die Konfiguration von Dnsmasq mit lokalen Domainnamen und Subdomains, die Aktivierung des DNS-Caches, um schnellere wiederkehrende DNS-Antworten zu erhalten, und die Aktivierung des DHCP-Servers über Dnsmasq.

Zuletzt haben Sie auch den Client-Rechner hinzugefügt und konfiguriert, um den lokalen DNS-Server zu verwenden, den Sie erstellt haben. Dabei haben Sie auch gelernt, wie Sie den DNS-Server mit dem dig-Befehl beheben und wie Sie einen DNS-Resolver auf einem Linux-System einrichten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.