DNS und DHCP mit Dnsmasq

Zentrale Kontrolle

Wer im heimischen Netz etwas mehr Komfort möchte, als ihn ein kleiner DSL-Router bietet, dem bietet Dnsmasq alle erforderlichen Funktionen in einem praktischen Doppelpack.

Das Internet Systems Consortium (ISC) liefert mit Bind und DHCPD gut funktionierende und vollständige Implementierungen von DNS und DHCP. Ein DSL-Router braucht jedoch lange nicht alle Funktionen, die die beiden Server bieten: So reicht es in der Regel, nur DNS-Anfragen nach Hosts aus dem lokalen Netz zu beantworten und alle anderen an DNS-Server des Providers weiterzuleiten.

Das Programm Dnsmasq bietet DNS sowie optional DHCP und TFTP für ein kleines, lokales Netzwerk ([1],[2]). DNS-Anfragen für externe Hosts leitet das Programm dabei an beliebige DNS-Server weiter. Der DNS-Server von Dnsmasq merkt sich auf Wunsch die Namen der via DHCP mit ihrer Netzwerkkonfiguration versorgten Hosts.

So entfällt jegliche Netzwerkkonfiguration auf den Clients. Es genügt, auf jedem Client DHCP einzustellen. Das Pflegen einer Datei /etc/hosts, die Hostnamen und Adressen zuordnet, erübrigt sich. Das Programm verbraucht wenig Ressourcen und eignet sich daher gut für den Einsatz in einem kleinen Linux-basierten Router.

Gängige Distributionen halten Dnsmasq im Repository vor. Unter Debian, Ubuntu und OpenSuse installieren Sie das Paket dnsmasq. Auch die gängigen Router-Distributionen OpenWRT, DD-WRT und FreeWRT liefern das Programm mit ([3],[4]). Im Test lief Dnsmasq unter Debian von einem USB-Stick, der an einen DSL-Router des Typs Asus WL-Premium 500g angeschlossen war (Abbildung 1, [5]). Der Artikel setzt einen konfigurierten Internetzugang auf dem Dnsmasq-Rechner voraus.

Abbildung 1: Dnsmasq läuft ohne Probleme auf einem kleinen DSL-Router.

Die Konfigurationdatei von Dnsmasq finden Sie unter /etc/dnsmasq.conf. Es gibt aber eine komfortablere Konfigurationsmöglichkeit, als diese Datei direkt zu bearbeiten und bei jedem Update des Programms die eigenen Änderungen wieder einzupflegen: Mit conf-dir=/etc/dnsmasq.d lassen sich Konfigurationsschnipsel aus dem Verzeichnis /etc/dnsmasq.d nachladen. Alternativ lädt conf-file eine einzelne Konfigurationsdatei. Die verschiedenen Konfigurationsoptionen dokumentiert die Manpage der Software. Nach Änderungen liest der Dienst mit /etc/init.d/dnsmasq restart die angepasste Konfiguration neu ein.

DNS einrichten

Den DNS-Server haben Sie im Handumdrehen eingerichtet. Es reicht, eine kurze Konfigurationsdatei mit einem Namen wie /etc/dnsmasq.d/dns anzulegen (Listing 1). Mit domain-needed fragt Dnsmasq nur dann den Upstream-Nameserver, wenn der angefragte Hostname einen Domainnamen enthält. Mit bogus-priv leitet das Tool Anfragen nach IP-Adressen, so genannte Reverse Lookups, nur dann an den Upstream-DNS-Server weiter, wenn diese nicht aus privaten IP-Adress-Bereichen stammen (siehe Kasten "Private IP-Adressbereiche").

Listing 1
# Freundlich zu Upstream-DNS-Servern sein
domain-needed
bogus-priv
# Einige Windows-DNS-Anfragen ausfiltern
filterwin2k
# Nur auf LAN-Schnittstellen lauschen
interface=eth0.1
bind-interfaces
# Lokale Domain
domain=lichtvoll.home

Private IP-Adressbereiche

Einige IP-Adressbereiche leiten Router nach RFC1918 nicht ins Internet weiter. Dabei handelt es sich um folgende Adressen:

  • 192.168.0.0/16: 168.168.0.1 bis 168.168.255.254
  • 172.16.0.0/12: 172.16.0.1 bis 172.31.255.254
  • 10.0.0.0/8: 10.0.0.1 bis 10.255.255.254

Diese Adressbereiche eignen sich daher für den Aufbau lokaler Netzwerke. Es sind die für Hosts nutzbaren IP-Adressen angegeben.

Die beiden Direktiven interface und bind-interfaces weisen den DNS-Server an, nur im lokalen Netzwerk auf Anfragen zu lauschen. Schließlich gibt domain noch die lokale Domain an, die Sie sich frei ausdenken dürfen. Es empfiehlt sich, keine im Internet verwendete Domain zu verwenden. So eignet sich zum Beispiel .home ausgezeichnet. Die Domain landet bei den Clients als Option search in der /etc/resolv.conf. Geben Sie einen Hostnamen ohne Domain an, so probiert der Resolver den Namen mit angehängter Domain aufzulösen und erspart dadurch Tipparbeit.

Eine Frage beantwortet die Beispielkonfiguration jedoch nicht: Woher weiß Dnsmasq welche DNS-Server ihm für Anfragen nach Hosts im Internet zur Verfügung stehen? Diese entnimmt Dnsmasq der Datei /etc/resolv.conf auf dem Rechner, auf dem es läuft. Diese Datei nimmt die mit dem Schlüsselwort nameserver versehenen IP-Adressen von bis zu drei Nameservern auf. Mit dem Debian-Paket resolvconf geht es sogar noch eleganter: Die Liste der DNS-Server für Dnsmasq landet in /var/run/dnsmasq/resolv.conf, in der /etc/resolv.conf steht nur noch 127.0.0.1 als Nameserver [6].

Mit resolv-file liest Dnsmasq die zu verwendenden DNS-Server aus einer anderen Datei ein, mit server geben Sie die DNS-Server direkt in der Konfigurationsdatei ein. So erlaubt der folgende Eintrag den Einsatz der DNS-Server des Providers OpenDNS.com:

# OpenDNS.com DNS-Server
server=208.67.222.222
server=208.67.220.220

Alternativ integrieren Sie für das lokale Netzwerk oder bestimmte andere Domains einen bereits vorhandenen anderen DNS-Server. Zusätzlich übernimmt Dnsmasq die Einträge aus /etc/hosts ins DNS. Dort tragen Sie zum Beispiel den Namen des Hosts ein, auf dem Dnsmasq läuft. Die laut der Manpage von hosts empfohlene Schreibweise ist: Zuerst die IP-Adresse, dann Hostname mit Domain, und schließlich Hostname ohne Domain, jeweils mit Leerzeichen getrennt. Bei einem Host im lokalen Netz sollte die Domain zur in Dnsmasq eingestellten Domain passen, sonst klappt das Auflösen des Namens nicht.

DHCP in einer Zeile

Auch DHCP haben Sie ruckzuck eingerichtet. So vergibt das Programm mit der Option

dhcp-range=10.0.1.9,10.0.1.99,12h

in einer Datei wie /etc/dnsmasq.d/dhcp dynamische Leases mit IP-Adressen von 10.0.1.9 bis 10.0.1.99 und einer Gültigkeitsdauer von 12 Stunden. Dank der langen Lease-Zeiten brauchen die DHCP-Clients der Hosts nicht gleich ihre IP-Adressen abzugeben, falls der Server einmal ausfällt.

Wer möchte, vergibt mit dhcp-host für bestimmte Hosts statische IP-Adressen. Ein Beispiel zeigt Listing 2. Dnsmasq erkennt dabei Hosts anhand der MAC-Adresse der Netzwerkschnittstelle, anhand des Hostnamens oder anhand der DHCP-Client-Identifikation.

Listing 2
# Dynamisches DHCP
dhcp-range=10.0.1.9,10.0.1.99,12h
# ThinkPad T42
dhcp-host=shambhala,10.0.0.21
# ThinkPad T23
dhcp-host=deepdance,10.0.0.99
# Sam440ep
dhcp-host=00:50:c2:5a:44:e9,gaia,10.0.0.5
# Amiga 4000 mit USB Ethernet-Adapter
dhcp-host=00:80:c9:40:00:c0,sunshine,10.0.0.77

Nur mit einer Option wie send host-name "Hostname" in der Konfigurationsdatei des DHCP-Clients des ISC – bei Debian und dessen Derivaten /etc/dhcp3/dhclient.conf – sendet dieser den Hostnamen. Alternativ übermittelt send dhcp-client-identifier eine DHCP-Client-Identifikation (siehe man dhcp-options). OpenSuse verwendet standardmäßig dhcpcd als DHCP-Client, der standardmäßig den Hostnamen sendet. Alternativ aktivieren Sie den ISC-Client mit dhclient in der Variable DHCLIENT_BIN in der Datei /etc/sysconfig/dhcp auf Ihrem System. In /etc/dhclient.conf findet sich die Konfiguration.

Die MAC-Adresse einer Netzwerkschnittstelle ermittelt direkt am Linux-System ip link oder ifconfig -a. Im ARP-Cache befinden sich die MAC-Adressen der Rechner, mit denen ihr Linux-System zuletzt Kontakt hatte. Der Befehl ip neigh oder arp zeigt den Inhalt des Caches an. Fehlt das gewünschte Gerät in der Liste, so befördert ein ping auf die IP-Adresse dessen MAC-Adresse in den ARP-Cache. Alternativ holen Sie vom Client via DHCP ein dynamisches Lease und beobachten mit tail -f /var/log/daemon.log | grep DHCP unter Debian und Co. oder tail -f /var/log/messages | grep DHCP unter OpenSuse das Protokoll von Dnsmasq (Abbildung 2).

Abbildung 2: So richten Sie einen DHCP-Host-Eintrag mit MAC-Adresse ein.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Suche im Netz
    Welche IP-Adresse hat der Router, der Laptop, die Kaffeemaschine? Clevere Linux-Tools geben hier schnell Auskunft.
  • Das eigene Netz dynamisch konfigurieren
    Um Computern in einem Netzwerk die Kommunikation zu ermöglichen, muss normalerweise jeder beteiligte Rechner von Hand konfiguriert werden. Diese Arbeit lässt sich vermeiden, wenn einer davon IP-Adressen und weitere Einstellungen dynamisch per DHCP verteilt.
  • Lokales Netzwerk aufbauen
    Um über einen Router mit integriertem DHCP-Server ins Internet zu gelangen, verbinden Sie einfach Ihren Rechner über ein Kabel mit diesem und los gehts. Was aber tun, wenn Sie feste IP-Adressen brauchen, um etwa einen Server zu nutzen?
  • DHCP-Server fürs lokale Netzwerk
    Werden mehrere Rechner zu einem Netzwerk zusammengeschlossen, wächst der Konfigurationsaufwand. Besser man zentralisiert das Ganze so, dass ein DHCP-Server IP-Adressen und andere Werte an die Clients vergibt.
  • Netzwerk unter der Lupe
    Trotz Datenflut bahnen sich Datenpakete zielstrebig ihren Weg durch das weltweite Netz. IP kennt den Weg, TCP sorgt für eine sichere Verbindung.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...