ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Dnsmasq

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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

Installation

Das Programm ist in den Paketquellen von Ubuntu vorhanden. Es kann über das Paket

  • dnsmasq (universe, [2])

installiert werden [1].

Konfiguration als DNS-Server

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.

Verwendung des Cache

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.

Bei Verwendung des NetworkManager muss resolv.conf nicht manuell bearbeitet werden. Statt dessen kann die Verbindung im Netzwerkmanager auf "Automatisch (DHCP), nur Adressen" oder auf "manuell" gesetzt werden. Dann können die IP-Adressen von bis zu drei DNS-Servern - durch Kommata getrennt - in das vorgesehene Feld eingetragen werden. Werden die Änderungen gespeichert, werden diese Einträge vom Netzwerkmanager in die Datei resolv.conf geschrieben.

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.

Konfiguration als DHCP-Server

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.

IP-Bereich

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

Feste IP-Adressen zuordnen

Beispiel 1

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.

Beispiel 2

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.

DHCP-Server Optionen

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.

Gateway

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

NTP-Server

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.

PXE-Server

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

Loglevel

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.

Weitere DNS-Server

server=/localnet/IP-Adresse_des_MasterDNS

Sollten sich im Netzwerk noch weitere DNS-Server befinden, so kann man diese hier noch zusätzlich angeben.

Firewall Einstellungen

Wenn ufw als Firewall läuft, dann müssen eingehende Verbindungen am bootps Port (67 wie in /etc/services festgelegt) erlaubt werden, damit Dnsmasq als DHCP Server fungieren kann:

$ sudo ufw allow bootps
$ sudo ufw disable && sudo ufw enable 


Diese Revision wurde am 24. Januar 2011 14:15 von philklaus erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, dhcp, dns