Linux-Magazin-Logo Die Zeitschrift für Linux-Professionals

Aus dem Alltag eines Sysadmin: DNSmasq

Pizza Nome, per favore!

Charly Kühnast

Ein eigener Domain Name Service hätte selbst in kleinen LANs seinen Charme. Denn ab etwa fünf Rechnern ist das Pflegen aller »/etc/hosts«-Dateien nervig. Andererseits geht das Administrieren des DNS-Daemon Bind nicht eben wie 's Pizzabacken.

Inhalt

72 | MySQL-Datenbanken sichern
Der zweite Teil unserer Reihe beschreibt eine Failover-Lösung mit Bordmitteln, bei der zudem die Slave-Datenbanken Anfragen entgegennehmen können.

75 | DSH-Einsatz in Rechnerpools
Wer nicht von Rechner zu Rechner laufen will, um stets dasselbe Kommando einzugeben, nutzt die DSH. Sie führt die Befehle aus und sammelt die Ausgaben.

78 | Admin-Workshop
Der Init-Prozess sorgt dafür, dass nach dem Booten auch zahlreiche Hilfsprogramme zur Verfügung stehen, ohne die praktisch nichts geht.

Für Heim- oder ähnlich kleine Netze das Nameservice-Schwergewicht Bind ins Spiel bringen wäre Overkill. Bis diese Kanone einen Schuss abgibt, sind die Spatzen längst eines natürlichen Todes gestorben. Aber es gibt Leichtgewichte: DNSmasq[1] ist ein solches. Der Nameserver - primär ein NS-Forwarder - ist für den Betrieb an kleinen Netzen mit Dialup-Außenanbindung optimiert. Er läuft unter Linux und FreeBSD und gehört in einigen Distributionen (Debian, Gentoo) zur Serienausstattung.

Das Konzept ist nicht kompliziert

DNS-Anfragen nach externen Adressen leitet DNSmasq an den übergeordneten Nameserver aus »/etc/resolv.conf« weiter. Falls die Leitung nicht steht, liefert DNSmasq sofort einen Timeout - und nicht erst nach Minuten, in denen der Client gebannt auf Antwort wartet. Die Namen der Rechner im internen Netz zieht sich DNSmasq aus der lokalen »/etc/hosts«-Datei, die ich somit nur noch an einem, dem DNSmasq-Rechner pflegen muss.

Als Clou bringt die GPL-Software ihren eigenen DHCP-Server mit. Die Hochzeit von DNS und DHCP macht es möglich, dass einem bestimmten Client - identifizierbar an seiner MAC-Adresse - immer dieselbe IP zugeteilt wird und per DNS auch der richtige Name.

Genug der Theorie

Jetzt nehme ich DNSmasq in Betrieb: Soll die Software als reiner Nameserver ohne DHCP laufen, bin ich rapito fertig. Denn mit der vorhandenen »/etc/resolv .conf«-Datei für den übergeordneten DNS und den Einträgen aus »/etc/hosts« für die Lokalrechner ist schon finito! Ich kann DNSmasq einfach starten.

Wenn's etwas mehr Komfort sein soll, zum Beispiel die automatische Ergänzung des Domainnamens, wenn nur ein Hostname eingegeben wird, reicht ein Zweizeiler in der Konfigurationsdatei. Sie heißt »/etc/dnsmasq.conf«:

expand-hosts
domain=meinedomain.tld

Soll auch DHCP zum Zuge kommen, bedarf es eines weiteren Eintrags. Soll der DHCP-Server die Adressen 10.0.0.20 bis 10.0.0.50 mit einer Lease-Time von sechs Stunden verteilen, sieht er so aus:

dhcp-range=10.0.0.20,10.0.0.50,255.255.255.0,6h

Jetzt möchte ich, dass meine Workstation mit dem Hostnamen »salami« (alle meine Rechner heißen nach Pizzen) immer die IP-Adresse 10.0.0.10 statisch zugewiesen bekommt. Das ginge theoretisch mit der Zeile:

dhcp-host=salami,10.0.0.10,infinite

Aber ich will auch die MAC-Adresse geprüft haben - andernfalls könnte ja jede Pizza kommen und sich »salami« nennen! Daher heißt meine Zeile:

dhcp-host=11:de:ad:be:ef:11,salami,10.0.0.10,infinite

Damit habe ich eine funktionierende Basiskonfiguration. DNSmasq besitzt noch viele Schräubchen zum Drehen. Das mitgelieferte »exmaple«-Konfigfile kann ich hierfür heiß empfehlen, denn es ist mustergültig kommentiert. (jk)

Infos

[1] DNSmasq: [http://thekelleys.org.uk/dnsmasq/doc.html]

Der Autor

Charly Kühnast administriert Unix-Betriebssysteme im Rechenzentrum Niederrhein in Moers. Zu seinen Aufgaben gehören die Sicherheit und Verfügbarkeit der Firewalls und der DMZ (demilitarisierte Zone). In seiner Freizeit lernt er Japanisch, um endlich die Bedienungsanleitung seiner Mikrowelle lesen zu können.