[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis()]] [http://thekelleys.org.uk/dnsmasq/doc.html Dnsmasq] {en} ist ein einfacher DNS- und DHCP-Server für kleine Netzwerke. Es werden die Namen aus dem lokalen Netz entsprechend der Datei [:hosts:/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 = Installation = Das Programm ist in den Paketquellen von Ubuntu vorhanden. Es kann über das Paket {{{#!vorlage Paketinstallation dnsmasq, universe [2] }}} installiert werden [1]. = Konfiguration als DNS-Server = Dnsmasq greift zur lokalen Namensauflösung auf die '''[:hosts: /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 sollte hier eine Bezeichnung nutzen, die nicht im Internet vorkommt. Weiterhin sollte die Endung .local nicht verwendet werden, da diese von Avahi benutzt wird und es dabei zu Konflikten kommen kann. === 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 genau dieser 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: {{{#!vorlage Befehl $ 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 [:IP-Adresse_wechseln: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.254,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 [wikipedia:Private_IP-Adresse:Private IP-Adressen] vorgesehen sind. Im angegebenen Beispiel würde der DHCP-Server Adressen aus dem Bereich ''"192.168.0.100"'' bis ''"192.168.0.254"'' vergeben und die Zuordnung Rechner <-> IP jeweils 12 Stunden lang beibehalten. Die Adressen ''"192.168.0.0"'' und ''"192.168.0.255"'' dürfen keinem Endgerät zugeordnet werden, da dies die Netz- bzw. Broadcast Adressen sind. == 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 [wikipedia: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 [wikipedia:Gateway_(Computer):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 [:Systemzeit: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 [wikipedia:Preboot_Execution_Environment: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 [:Logdateien: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: {{{#!vorlage Befehl $ sudo ufw allow bootps $ sudo ufw disable && sudo ufw enable }}} = Links = * [http://wiki.debian.org/HowTo/dnsmasq dnsmasq] {en}, HowTo im Debian-Wiki * [ubuntu_doc:Dnsmasq:] {en} # tag: Netzwerk, Server, dhcp, dns