Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Dnsmasq
ist ein einfacher DNS- und DHCP-Server für kleine Netzwerke. Es werden die Namen aus dem lokalen Netz entsprechend der Datei /etc/hosts aufgelöst. Unbekannte Namensanfragen werden weitergeleitet und im Cache gespeichert.
Dnsmasq ist somit
ein Nameserver-Forwarder
ein DHCP-Server
optimiert für Netzwerke mit Dialup-Außenverbindung
Das Programm ist in den Paketquellen von Ubuntu vorhanden. Es kann über das Paket
dnsmasq (universe, [2])
installiert werden [1].
Dnsmasq greift zur lokalen Namensauflösung auf die /etc/hosts zurück. Daher sollte man diese Datei mit einem Editor mit Root-Rechten bearbeiteten [3] und Zeilen in dieser Art hinzufügen.
## Lokales Netzwerk # = IP = = Domainname = = Rechnername = 192.168.1.1 router.foo.bar router # Der Router 192.168.1.2 neo.foo.bar neo # Workstation 192.168.1.3 felidae.foo.bar felidae # ein Rechner 192.168.1.5 link.foo.bar link # Notebook 192.168.1.11 zeus.foo.bar zeus # Das Serverchen 192.168.1.66 bridge.foo.bar bridge # WLAN-Bridge
Als Beispiel-Domain wird "foo.bar" genutzt. Üblicherweise besitzt man in einem LAN keine echte Domain, man kann hier also irgendeine Bezeichnung nutzen, die nicht im Internet vorkommt.
Damit alle DNS-Anfragen über Dnsmasq verarbeitet und bei Bedarf an externe DNS-Server weitergereicht werden, ist der einfachste Weg die Datei /etc/resolv.conf zu bearbeiten. Dabei ist sicher zu stellen, dass der lokale DNS-Server (Dnsmasq) als erste Zeile eingetragen wird (127.0.0.1). Als nächste Zeile muss mindestens ein weiterer DNS-Server definiert werden, damit Dnsmasq die Anfragen weiterreichen kann. Beispiel mit Weiterleitung an den DNS-Cache der Fritz-Box:
nameserver 127.0.0.1 nameserver 192.168.178.1
Achtung: Bei der Verwendung von WICD wird resolv.conf automatisch verwaltet bzw. überschrieben, daher müssen statische DNS in ebendieser Reihenfolge festgelegt werden.
Das erfolgreiche lokale Cachen überprüft man am Terminal:
$ dig ubuntuusers.de
antwortet am Ende mit
;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1)
Soll Dnsmasq wirklich nur als DNS-Server arbeiten, braucht man nichts mehr zu konfigurieren. Rechner im LAN, die diesen DNS-Server nutzen müssen, sollten danach so konfiguriert werden, dass sie den Server auch nutzen. Bei Windows-Systemen geht dies in den Netzwerkeinstellungen, und auch bei Linux-Clients lässt sich der zu nutzende DNS-Server leicht einstellen.
Soll Dnsmasq zusätzlich noch als DHCP-Server fungieren, so muss man noch die Datei /etc/dnsmasq.conf entsprechend bearbeiten [3]. Üblicherweise braucht hier nicht viel eingestellt zu werden. Die wichtigsten Optionen werden im folgenden vorgestellt.
# Uncomment this to enable the integrated DHCP server, you need # to supply the range of addresses available for lease and optionally # a lease time. If you have more than one network, you will need to # repeat this for each network on which you want to supply DHCP # service. dhcp-range=192.168.0.100,192.168.0.255,12h ## 12h ist die Lease-Time
In diesem Abschnitt wird festgelegt, aus welchem Bereich der DHCP-Server Adressen vergibt. Üblicherweise kann man hier IP-Bereiche eintragen, die für Private Netze
vorgesehen sind. Im angegebenen Beispiel würde der DHCP-Server Adressen aus dem Bereich "192.168.0.100" bis "192.168.0.255" vergeben und die Zuordnung Rechner <-> IP jeweils 12 Stunden lang beibehalten.
Für manche Anwendungen ist es praktisch, wenn ein Rechner immer unter der selben IP-Adresse zu erreichen ist. Wenn man dies möchte, so kann man der MAC-Adresse der Netzwerkkarte des betroffenen Rechners eine feste IP-Adresse zuordnen.
dhcp-host=00:07:95:26:2B:C9,neo,192.168.1.2,infinite
In diesem Beispiel würde also der Netzwerkkarte mit der MAC-Adresse "00:07:95:26:2B:C9" immer der Name "neo" und die IP-Adresse "192.168.1.2" für eine unbestimmte Zeit zugewiesen.
Benutzt man zum Beispiel ein Notebook, das im Wechsel mal per Kabelnetzwerk, mal via WLAN vernetzt ist, wird dies anhand der MAC-Adresse erkannt und eine freie IP-Adresse vergeben.
dhcp-host=00:00:0E:D2:DA:BE,link,infinite dhcp-host=00:02:2d:a9:55:92,link,infinite
Zahlreiche weitere Beispiele und Konfigurationsmöglichkeiten sind in der /etc/dnsmasq.conf selber aufgeführt.
Der DHCP-Server kann seinen Client-Rechnern nicht nur IPs zuweisen, sondern auch alle notwendigen Netzwerkinformationen übermitteln. Diese und noch weitere Einstellungen lassen sich ebenfalls in der /etc/dnsmasq.conf setzen.
## Syntax: erst die Option, dann die entsprechende Adresse dhcp-option=3,192.168.1.1
Die IP-Adresse des Gateways, um Daten in das Internet schicken zu können. Läuft Dnsmasq auf demselben Rechner, der sich auch in das Internet einwählt, so ist das die lokale IP-Adresse des Rechners.
dhcp-option=42,130.133.1.10 # Timeserver time.fu-berlin.de
Der zu nutzende NTP Zeitserver, um die exakte Uhrzeit aus dem Internet zu beziehen.
dhcp-boot=/pxelinux.0,zeus,192.168.1.11
Eine lokaler Rechner mit PXE-Boot-Images, um über das Netzwerk den Rechner booten zu können
log-queries
Für Tests kann man den Loglevel erhöhen, also die Menge der Informationen, die mitgeloggt wird. So kann man bei Fehlern oder Problemen schnell auf die Lösung kommen. Welche IP-Adressen Dnsmasq gerade vergeben hat kann man in der Datei /var/lib/misc/dnsmasq.leases nachlesen.
server=/localnet/IP-Adresse_des_MasterDNS
Sollten sich im Netzwerk noch weitere DNS-Server befinden, so kann man diese hier noch zusätzlich angeben.
Diese Revision wurde am 17. September 2009 um 15:02 Uhr
von dergluda erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Netzwerk, Server, dhcp, dns
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten