Dieser Artikel handelt davon, wie man einen eigenen DNS-Server mit Dnsmasq mit Filterlisten zum Blockieren von Werbung und eigenen DNS-Einträgen einrichtet;
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 systemaufgelöst 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


