Dnsmasq
Dnsmasq ist ein schlanker DNS-Server. Ich nutze ihn, um im lokalen Netzwerk Namen von Computersystemen auflösen zu können, die nur lokal gültig sind. So rufe ich zum Beispiel unter Verwendung des Reverse Proxy caddy mein lokal betriebenes DMS, das auf Paperless NGX basiert, über die nur lokal gültige Domain dms.korte-kernke.koeln auf.
Installation und Basiskonfiguration
Ich bin auf meinem Server per SSH angemeldet und besitze auch die Sudo-Rechte (siehe hierzu: server-absichern.html). Die Installation ist unter Debian und Ubuntu Linux einfach mit dem Befehl:
sudo apt install dnsmasq
# Schnittstelle und Port
interface=eth0
port=53
# Konfigurationen (auch) aus Dateien unter /etc/dnsmasq.d einlesen
conf-dir=/etc/dnsmasq.d
# Time To Lease auf 10 Minuten eingestellt, damit der lokale DNS-Cache
# nicht sofort von einem DNS-Server im Netz ueberschrieben wird
local-ttl=600
# Externe DNS-Server (fuer alles, was nicht kernke.lan ist)
server=8.8.8.8
server=1.1.1.1
# WICHTIG: Erlaube Anfragen aus dem lokalen Netz
bind-interfaces
listen-address=127.0.0.1,192.168.0.94
# Falls aeltere Windows-Clients im Netz unsinnige DNS-Anfragen absonder sollten,
# werden sie ignoriert:
filterwin2k
# Unvollstaendige Anfragen, die nicht nach einer Domain aussehen, werden ignoriert
domain-needed
# Verhindern, dass Anfragen nach privaten IP-Adressen (Reverse DNS fuerr 192.168.x.x)
# ins oeffentliche Internet gelangen.
bogus-priv
Einrichtung von lokalen Adressdaten
Standardmäßig nutzt Dnsmasq die Datei /etc/hosts des Servers. Adressen, die dort eingetragen sind, werden auch an anfragende Clients herausgegeben. Hier könnte ich nun die Adressen pflegen, die im lokalen Netz aufgelöst werden sollen. Das kann aber schnell unübersichtlich werden. Darum schreibe ich die aufzulösenden Adressen in eine Datei unter dem Pfad /etc/dnsmasg.d auf dem Server. Dabei ist die Benennung der Datei eigentlich egal. Mehrere Dateien in diesem Verzeichnis würden in alphabetischer Reihenfolge eingelesen, was man wissen sollte, falls widersprüchliche Daten darin stehen (was man sinnvollerweise aber vermeiden sollte). Ich habe eine Datei lan.conf in dieses Verzeichnis geschrieben mit etwa folgendem Inhalt:
local=/home.korte-kernke.koeln/
address=/home.korte-kernke.koeln/192.168.1.65
local=/pve00.korte-kernke.koeln/
address=/pve00.korte-kernke.koeln/192.168.1.65
local=/pve01.korte-kernke.koeln/
address=/pve01.korte-kernke.koeln/192.168.1.65
local=/pbs.korte-kernke.koeln/
address=/pbs.korte-kernke.koeln/192.168.1.65
Viel mehr gibt es hier auch schon für meine Zwecke nicht mehr zu erläutern. Mit
sudo systemctl restart dnsmasq