Linux: einfaches DNS und DHCP im Heimnetz

Linux: einfaches DNS und DHCP im Heimnetz

Eines der wichtigsten Komponenten einer Netzwerkstruktur ist der DNS und DHCP Serverdienst. Bei diesen Diensten haben wir unter Linux mehrere zur Auswahl. Mit diesen Artikel will ich aber einen DNS/DHCP Dienst vorstellen, der sehr einfach zu konfigurieren ist. Dnsmasq. Als Grundlage dient ein Linux Server mit Ubuntu 16.04 LTS.

Normalerweise folgt bei solchen Artikeln jetzt der zeilenlange Vortrag, was DNS und ein DHCP ist … Das ist auch wichtig zu verstehen: Der DNS ermöglicht uns die Auflösung von menschen-lesbaren Namen wie z.B. www.pilgermaske.org in eine IP-Adresse wie z.B. 188.40.94.213, über die sich unsere Rechner unterhalten. Der DHCP ist im Netzwerk der Dienst welcher an Rechner IP-Adressen verteilt und diese – mit dem zugehörigen PC-Namen – normalerweise im DNS einträgt.

Damit entsteht also mit der Zeit im Netzwerk (Internet oder Heimnetz) eine Art Telefonbuch, in der Dienste und Menschen Adressen zu Namen – und umgekehrt – nachschlagen können. Der Dnsmasq macht es uns einfach: Er ist DNS und DHCP in Einem und erspart uns ein umständliches konfigurieren von Berechtigungen, dass notwendig wird, wenn ein DHCP seine vergebenen Adressen im DNS eintragen soll. Siehe ISC DNS/DHCP als alternatives Produkt.

Ein Heimnetz, das die hier beschriebene Konfiguration nutzt, sieht etwa wie auf folgenden Bild aus, wobei auf dem Heim- Server mit 2 Netzwerkkarten der Dnsmasq installiert wäre:

Visio Darstellung eines SoHo Netzwerk

Beachte, dass es bei zwei Netzwerkkarten notwendig sein kann, das routing (von einer Netzwerkkarte zur anderen) in der /etc/sysctl.conf mit der Option net.ipv4.ip_forward=1 zu aktivieren!

Die Konfiguration von Dnsmasq ist sehr einfach

  • Installiere Dnsmasq mit dem Befehl apt-get install dnsmasq auf der Konsole.
  • Überprüfe die /etc/hosts das der Servername korrekt hinterlegt ist!
  • Aktiviere in der /etc/dnsmasq.conf die letzte Zeile (conf-dir), damit dnsmasq seine config im folgenden Ordner findet.
  • Lege im Ordner /etc/dnsmasq.d eine Datei mit den Namen dnsmasq.conf an (mit 644 und root:root ver-rechtet).
  • In diesen Beispiel ist eth0 die Netzwerkkarte zum Internet und eth1 zum Heimnetz. An eth0 sollen also keine IP’s vergeben werden.
  • Netzwerkkarten eines Server’s sind normalerweise mit einer festen IP-Adresse konfiguriert, also keine dynamische Zuweisung über DHCP.
  • Füge in die dnsmasq.conf folgenden Inhalt ein:
domain-needed
bogus-priv
filterwin2k
local=/meinheim.lan/
expand-hosts
domain=meinheim.lan
dhcp-authoritative
interface=eth1
no-dhcp-interface=eth0
dhcp-range=interface:eth1,192.168.1.11,192.168.1.99,6h
log-facility=/var/log/dnsmasq.log

# optional: den clients weitere werte ueber dhcp zuweisen
# wenn Wins-Server(samba) im Netz:
#dhcp-option=44,192.168.1.1
# wenn anderes Gateway notwendig:
#dhcp-option=3,192.168.1.100
# wenn anderer Nameserver z.B. fuer die .org-Domaenen gewuenscht:
#server=/org/8.8.4.4

Werte mit einer # (Raute) davor sind de-aktiviert und dienen als Beispiel. Mit der Anpassung der interface Option an das eigene Netzwerk hast Du eine funktionierende Konfiguration.

Mit dem Setzen des Wertes ENABLED=1 in der Datei /etc/default/dnsmasq wird der Dienst aktiviert und mit service dnsmasq start sogleich gestartet. Überprüfe danach, ob in der /etc/resolv.conf die Einträge search meinheim.lan und nameserver 127.0.0.1 stehen. Ein nslookup wird nun auf dem Linux Server mit Dnsmasq aufgelöst. Fertig. Eine mögliche Fehlersuche kann in /var/log/dnsmasq.log beginnen. Eventuell kann es hilfreich sein, das Paket resolvconf zu installieren.

Beachte!

Ist es notwendig, weitere Nameserver einzubinden, sollte in der /etc/network/interfaces – unter der iface Konfiguration für die Netzwerkkarte – mit einem Eintrag wie: dns-nameserver die DNS Server Liste für die /var/run/dnsmasq/resolv.conf erweitert werden. Zum Beispiel bietet Google frei-nutzbare DNS Server unter der Adresse 8.8.8.8 und 8.8.4.4 an. Es gibt also zwei resolv.conf! wenn das Paket resolvconf installiert ist. Üblicherweise werden aber nur maximal drei Nameserver in einer resolv.conf eingepflegt.

Die Suchdomäne – also der Name des Heimnetzes – wird so ebenfalls an dnsmasq übergeben: Eine Zeile wie: dns-search meinheim.lan unter einem iface übergibt diesen Wert zur automatischen Generierung der resolv.conf.

auto eth1
iface eth1 inet static
  address 192.168.0.1
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.2
  dns-nameserver 8.8.8.8
  dns-nameserver 8.8.4.4
  dns-search meinheim.lan

Zusätzlich – s.o. in der config – kann ein Eintrag in der dnsmasq Konfiguration gesetzt werden, der Dnsmasq sagt, dass z.B. alle Internet- Adressen, die auf .org enden, von dem DNS mit der IP-Adresse 8.8.4.4 aufgelöst werden sollen. Das wäre aber ein Sonderfall und ist hier nur eine Beispielhafte Ergänzung!

Clients anpassen

Und meine Rechner? Klar ist wohl, dass die Rechner in der Netzwerk- Konfiguration auf DHCP eingestellt sein müssen, was aber Standard bei vielen Betriebssystemen – wie z.B. Windows, Linux und OSX – nach einer Installation ist.

Das Ergebnis ist, dass ein Rechner im Heimnetzwerk (nach einen Neustart), den Dnsmasq Server als DNS und Gateway eingetragen hat, eine IP-Adresse mit einem zugehörigen Lease (Gültigkeit der IP -> Range) und einen DNS Suffix (meinheim.lan) erhält. Unter Windows können in einer cmd Konsole und mit dem Befehl ipconfig /all die empfangenen Einträge des Rechners überprüft werden. Mit der oben-gezeigten aktiven Konfiguration geht jeder Rechner im Heimnetz über den Dnsmasq Server in das Internet! (siehe Bild oben)

Beachte auch – als eine weitere Hilfestellung für Dnsmasq – die kommentierte Beispiel- Konfiguration unter /usr/share/doc/dnsmasq/examples und den Inhalt von /var/log/dnsmasq.log.

Have fun


Autor: Mathias R. Ludwig

MCSE, MCITP, MCDBA, RHCT, CompTIA, ITILv3, AdA, VWA Ökonom, Dipl.SozArb., Kfz-Mechaniker, Panzer-Mechaniker/-Fahrer (HptGefr), Stanislaw Lem und Linux Fan, Feuerpferd.

Kommentare “Linux: einfaches DNS und DHCP im Heimnetz”