Eigener DNS-Server mit Dnsmasq

  Froschi   Lesezeit: 3 Minuten  🗪 3 Kommentare Auf Mastodon ansehen

Dieser Artikel handelt davon, wie man einen eigenen DNS-Server mit Dnsmasq mit Filterlisten zum Blockieren von Werbung und eigenen DNS-Einträgen einrichtet.

eigener dns-server mit dnsmasq

Zuerst muss man Dnsmasq installieren, das geht auf allen Distributionen mit dem APT-Paketmanager so: sudo apt install dnsmasq oder auf allen Distributionen mit dem Pacman-Paketmanager so: pacman -S dnsmasq. Natürlich haben auch andere Paketmanager das Paket, sonst kann man es sich auch von https://thekelleys.org.uk/dnsmasq/ herunterladen. Dnsmasq ist sehr leichtgewichtig, es kann deshalb auch auf einem Raspberry Pi betrieben werden. Danach sollte man mit seinem lieblings Texteditor die Datei /etc/dnsmasq.conf bearbeiten.

Zuerst trägt man listen-address=127.0.0.1 und listen-address=SERVER_IP_ADRESSE und resolv-file=/etc/resolvdnsmasqein. Das auf einer Fritz Box die Domain fritz.box funktioniert, trägt man noch server=/fritz.box/192.168.178.1 ein.

Danach bearbeitet man die Datei /etc/resolv.conf wie folgt: nameserver 127.0.0.1 und nameserver SERVER_IP_ADRESSE⁣. Damit diese Einstellungen nicht überschrieben werden, sollte man systemd-resolved deaktivieren oder wenn man Networkmanager verwendet, dns=None in [main] in der Datei /etc/NetworkManager/NetworkManager.conf einfügen.

Damit Dnsmasq weiß, mit welchem DNS-Server es die Anfragen auflösen soll, erstellt man die Datei /etc/resolvdnsmasq und trägt seine Lieblings DNS-Server ein, z.B nameserver 9.9.9.9 für Quad9 mit IPv4 und mit Malwareschutz. Ich empfehle, zwei Dns-Server einzutragen, falls einer mal nicht funktionieren sollte. Damit Dnsmasq immer der Reihenfolge nach vorgeht, bearbeitet man wieder die Datei /etc/dnsmasq.conf und trägt strict-order ein. Danach muss man noch den Port 53 in der Firewall freigeben, z. B. sudo ufw allow 53

Im Internet bekommt man viele Filterlisten, man muss sie einfach nur in /etc/dnsmasq.conf einfügen. Um es etwas schöner zu handhaben, kann man sie auch in /etc/dnsmasq.d/ eintragen. Dazu muss man einfach nur eine neue Datei in diesem Ordner erstellen. Eigene Filterlisten kann man schreiben, indem man address=/gewünschte_blockierte_Domain/0.0.0.0 und für IPv6 address=/gewünschte_blockierte_Domain/::0 zu /etc/dnsmasq.conf hinzufügt.

Natürlich kann man auch hier wieder eine neue Datei in /etc/dnsmasq.d/ erstellen. Ich blockiere gerne google-analytics.com und doubleclick.net. Alternativ kann man auch nur address=/gewünschte_blockierte_Domain/ oder server=/gewünschte_blockierte_Domain/ eintragen, das hat aber die Folge, dass sie nicht umgeleitet wird, sondern als nicht bekannt gilt. Dnsmasq schaut auch in /etc/hosts nach, aber wenn man hier die Domain einträgt, werden die Subdomains nicht berücksichtigt und nicht blockiert, deshalb sollte man eine der anderen Methoden wählen.

Um die Änderungen wirksam zu machen, muss man danach dnsmasq neustarten, z.B. mit sudo systemctl restart dnsmasq. Für einen Homeserver kann man address=/gewünschte_Domain_für_den_Homeserver/IP_ADRESSE_des_Homesever zu seinen Listen hinzufügen, so kann man auf den Homeserver mit der gewünschten Domain zugreifen, natürlich nur im (lokalen) Netzwerk mit diesem DNS-Server.

Achtung! Wenn man viele (Tracking) Domains sperrt, kann es passieren, dass manche Webseiten nicht mehr richtig funktionieren.

Quellen:

https://github.com/Jean28518/linux-guides/tree/main/local-dns-server-with-real-https

https://wiki.ubuntuusers.de/Dnsmasq/

Bild erstellt mit Krita

Icons von Material Symbols/Icons https://fonts.google.com/icons

Tags

Dnsmasq, Dns, Server

André
Geschrieben von André am 25. Juli 2025 um 15:50

Finde es durchaus interessant derartiges mal selber "händisch" einzurichten um die Mechaniken dahinter zu verstehen.

Produktiv jedoch dürfte die meisten Nutzer bei piHole,Adguard usw., landen. :)

tux0r
Geschrieben von tux0r am 25. Juli 2025 um 19:01

> Damit Dnsmasq weiß, mit welchem DNS-Server es die Anfragen auflösen soll, erstellt man die Datei /etc/resolvdnsmasq und trägt seine Lieblings DNS-Server ein

Der Sinn von eigenen DNS-Servern ist doch, dass man genau das nicht will. Ich nutze Technitium, das fragt direkt in den Rootzonen nach und umgeht so etwaige Vorzensur und Überwachung der "Lieblings-DNS-Server" (Beispiel: Sony gegen Quad9). Und Werbeblocker sind da auch drin.

Daniel
Geschrieben von Daniel am 26. Juli 2025 um 18:14

Statt 0.0.0.0 kann man auch einfach eine # schreiben, macht die Liste je nach Umfang etwas schlanker.

Ich mache das bereits seit Jahren so. Dnsmasq dient als DHCP Server, jedes Gerät bekommt darüber eine eigene IP Adresse zugeteilt. Besonders schön ist, dass man Geräte am Filter vorbeileiten kann. So kann ich etwa meine Einstellungen sehr strikt setzen, während andere Familienmitglieder in den Genuss von Werbung und Müll kommen können. Auf eigenen Wunsch versteht sich.

Da ich eine öffentliche IP habe verbinde ich mein Smartphone über WireGuard mit meinem Heimnetz, somit filtert mein Heimserver auch unterwegs sämtlichen Datenverkehr.

Mit einem DNS Filter direkt auf dem Smartphone könnte man etwas Datenvolumen sparen, da ja jede Verbindung auch erst einmal an den Filter geht, das hält sich dann vieler deaktivierter Apps und dem F-Droid Store sehr in Grenzen.