dnsmasq auf lokalem DEB9-System

Unter DEB9 ist normalerweise dnsmasq nicht installiert. Dnsmasq kann für verschiedene Dinge genutzt werden. Hier ist lediglich die Minimal-Konfiguration beschrieben um eine Blacklist anzuwenden und ein bischen zu cachen.
Wenn es gilt einen Namen in eine IP-Adresse zu übersetzen wird folgende Reihenfolge angewendet. Zusäzlich zur Installation von dnsmasq ist es sinnvoll die Konfiguration vor Änderung zu kopieren z.B. wie folgt.
su 
apt install dnsmasq 
cd /etc
cp dnsmasq.conf dnsmasq.conf.kopie           # es ist wahrscheinlich einfacher eine  
mv dnsmasq.conf dnsmasq.conf.original        # neue Datei dnsmasq.conf zu erzeugen
Danach kann man folgende Zeilen in /etc/dnsmasq.conf editieren.
su
nano /etc/dnsmasq.conf 

# port=5353                                  # =53 ist unverschlüsselt =0 ist gesperrt
domain-needed                                # wenn Hostname einen Domainnamen enth. -> FB
bogus-priv                                   # wenn keine priv. IP -> FB
# resolv-file=/etc/resolv.dnsmasq            # alternativer Pfad zu resolv.conf
server=192.168.178.1                         # FB = upstream DNS
#address=                                    # nicht an dieser Stelle
listen-address=::1,127.0.0.1                 # nur lokal hören 
                                             # alle dhcp, pxe, tftp, mx Themen können gelöscht werden
cache-size=1024                              # default 150
#log-queries                                 # Mitschnitt nach /var/log/syslog
log-facility=var/log/dnsmasq.log             # wenn log-queries auskommentiert -> eigenes Logfile
conf-file=/etc/dnsmasq.d/blacklist.conf      # Blacklist in extra Datei
Den Parameter server= könnte man alternativ auch anders belegen.
Siehe z.B. ungefiltert-surfen.de Nameserver
server=/de/213.252.158.39                    # alle .de DNS-Anfragen an diesen speziellen Nameserver 
server=8.8.8.8                               # google dns (scneidet alles mit)
server=8.8.4.4                               # google dns
Dann wird eine Test-Blacklist /etc/dnsmasq.d/blacklist.conf erzeugt.
su
nano /etc/dnsmasq.d/blacklist.conf

address=/web.de/127.0.0.1                    # blockierte Test-Seite
Die Syntax-Überprüfung erfolgt über dnsmasq --test .

Ist alles ok, kann man Dnsmasq starten (restart) um die Änderung der Konfiguration einzulesen.
Den Status kann man noch überprüfen.
Und später kann man dnsmasq noch für den automatischen Start aktivieren.
su
systemctl restart dnsmasq.service
systemctl status dnsmasq
systemctl enable dnsmasq.service 
Damit dnsmasq auf dem lokalem PC überhaupt verwendet wird, sind die ersten beiden Zeilen in /etc/resolv.conf nötig. Als dritte Zeile folgt die IP des externen Routers z.B. die FB ist erreichbar unter 192.168.178.1 z.B. wie folgt.
nameserver ::1             # IPv6
nameserver 127.0.0.1       # IPv4
nameserver 192.168.178.1   # FB
Dummerweise ist unter DEB9 die Datei /etc/resolv.conf durch den NetworkManager generiert, sodass man Gefahr läuft dass sie überschrieben wird.
# Generated by NetworkManager 
search fritz.box 
nameserver 192.168.178.1 
nameserver fd00::9a9b:cbff:fe5f:841b 
Eine unelegante Methode ist es, die Datei trotzdem zu editieren und dann mit einem Schreibschutz zu versehen.
Kein Löschen, kein Umbenennen, keine harten Verküpfung möglich. Überprüfung ist mit lsattr möglich.
				
su 
chattr +i /etc/resolv.conf         # wird trotz ext4 nicht unterstützt, da es ein Link ist
lsattr /etc/resolv.conf 
Das ist aber unter DEB9 & xfce gar nicht nötig, da es sich unter /etc/resolv.conf um eine Verküpfung handelt. Es reicht also aus die Verknüpfung um zu nennen und eine neue Datei zu erstellen. z.B.
				
su
cd /etc
ls -la ./resolv*
lrwxrwxrwx 1 root root   35 Feb 16 09:44 resolv.conf -> /var/run/NetworkManager/resolv.conf

mv mv resolv.conf resolv.conf.alt

nano resolv.conf

nameserver ::1             # IPv6
nameserver 127.0.0.1       # IPv4
nameserver 192.168.178.1   # FB
Eine weitere Möglichkeit, welche in pcsuggest.com beschrieben wurde, habe ich auch ausprobiert. Unter xfce erreicht man den NetworkManager indem man oben rechts auf das Antennen-Symbol klickt und dann mit rechter Maustaste Verbindungen bearbeiten... anklickt.

import

Dann geht man zum Blatt IPv4 Einstellungen.
Die Methode ändere ich von Automatisch (DHCP) zu Automatisch (DHCP), nur Adressen und als DNS-Server trage ich den localhost ein, sprich 127.0.0.1 .
Ananalog kann ich für IPv6 ::1 eintragen.

import

Sollte sich resolv.conf nicht sofort geändert haben, hilft ein Neustart.
cat /etc/resolv.conf                           # bzw.
cat /var/run/NetworkManager/resolv.conf

# Generated by NetworkManager
nameserver 127.0.0.1
nameserver fd00::9a9b:cbff:fe5f:841b

Der Bug #860928 welcher auf der Seite wiki.debian.org resolf.conf beschrieben ist, ist also Geschichte.
Siehe auch debianforum.de.

Test-Eingabe von web.de im Browser sollte nun zu einer Fehlermeldung führen.

import

Nach erfolgreichen Test kann man die Blacklist /etc/dnsmasq.d/blacklist.conf noch editieren, erneut überprüfen & aktualisieren.
su
nano /etc/dnsmasq.d/blacklist.conf

address=/google-analytics.com/127.0.0.1
address=/storage.googleapis.com/127.0.0.1
address=/googletagservices.com/127.0.0.1
address=/googleusercontent.com/127.0.0.1
address=/googlesyndication.com/127.0.0.1
address=/imasdk.googleapis.com/127.0.0.1
address=/google-analytics.com/127.0.0.1
address=/googleadservices.com/127.0.0.1
address=/googletagmanager.com/127.0.0.1
address=/youtube-nocookie.com/127.0.0.1
address=/ajax.googleapis.com/127.0.0.1
address=/maps.googleapis.com/127.0.0.1
address=/googlecommerce.com/127.0.0.1
address=/smartredirect.de/127.0.0.1		# www.adgoal.net
address=/googlevideo.com/127.0.0.1
address=/cloudfront.net/127.0.0.1
address=/facebook.net/127.0.0.1
address=/youtube.com/127.0.0.1
address=/gstatic.com/127.0.0.1
address=/twitter.com/127.0.0.1
address=/google.com/127.0.0.1
...

dnsmasq --test
systemctl restart dnsmasq.service
Als mögliche Quelle gucke ich mir die Liste von NoScript an. Also auf das NoScript Symbol klicken und dann in der Liste der Scripte in der Kopfzeile das durchgestrichene S wie Einstellungen... anklicken. Man kommt dann auf eine Seite "moz-extension://3b83..." wo man auf das Blatt Berechtigungen pro Webseite gehen kann.
Die recht lange Liste, welche man sich auch exportieren kann, zeigt dann an was alles geladen wurde...

Dass dnsmasq an der richtigen Stelle lauscht, kann man über netstat -tulpen | grep dnsmasq überprüfen.

Das man nicht mehr revers von der IP-Adresse zur URL kommt kann man wie folgt überprüfen.
su
apt install dnsutils
ping web.de                      -> 82.165.229.138
nslookup 82.165.229.138          # Intranet IP nicht gefunden 
nslookup 82.165.229.138          # bs.web.de gefunden
Zum Test des lokalen Caching wird eine URL aufgerufen, welche vorher noch nicht benutzt wurde. Dann wird der Vorgang wiederholt und es sollte eine wesentlich schnellere Antwortzeit heraus kommen.
su
apt install dnsutils

dig test.de
;; Query time: 47 msec

dig test.de
;; Query time: 0 msec


Weiterführende Verknüpfungen (alphabetisch):

archlinux.org DNS & DHCP mit dnsmasq
blogging.dragon.org.uk dnsmasq
ctaas.de dnsmasq mit Blacklist welche auf eigenen Webserver zeigt.
debian.org dnsmasq
elektronik-kompendium.de DHCP-Server auf dem Raspberry mit dnsmasq
linux.com advanced dnsmasq tips
linux-community.de dnsmasq
openwrt.org dnsmasq
pcsuggest.com dnsmasq
pcwelt.de DNS mit dnsmasq
pro-linux.de Sicherheitsaudit von 2017
tecmint.com setup a DNS-DHCP-Server
thekelleys.org.uk dnsmasq man-page
ubuntuusers.de allg. dnsmasq Artikel
yoyo.org adservers

© 2020, letzte Änderung am 16.02.20