Home / LinuxUser / 2009 / 03 / Zentrale Kontrolle

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Zentrale Kontrolle

DNS und DHCP mit Dnsmasq

23.02.2009 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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1161 Hits
Wertung: 92 Punkte (3 Stimmen)

Schlecht Gut

Infos zum Autor

Martin Steigerwald

Martin Steigerwald

Martin Steigerwald arbeitet als Trainer, Consultant und Systemadministrator bei der team(ix) GmbH in Nürnberg. Schwerpunkte seiner Tätigkeit sind Linux-Schulungen, die Konzeption, Installation und Wartung solider IT-Infrastruktur auf Basis von Debian Linux sowie Second Level Support für Linux als Business-Desktop bei Kunden von teamix(ix).


Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...