menu.jpg  ::  Home ::  Computing ::  Downloads ::  Scooter ::  Links ::  Music ::  Nonsense ::  Mail :: 

PC: dnsmasq als lokaler DHCP- und DNS-Server

1. Intro

Es ist eine nette Sache, im eigenen LAN

zu betreiben. Man erspart es sich dadurch weitestgehend, ziemlich identische Netzwerk-Konfigurationen auf allen Klienten vorzunehmen und ggfs. ändern zu müssen, sondern hält die Angaben zentral vor.

Die Standard-Programme hierfür sind BIND und DHCP vom ISC, die aber eine relativ komplexe Konfiguration mit sich bringen und für überschaubare LANs deutlich überdimensioniert sind.

Eine deutlich schlankere Alternative ist dnsmasq, der

Ich verwende dnsmasq jetzt schon seit geraumer Zeit auf meinem Router und bin mit dem Programm glücklich und zufrieden.

2. Meine Konfiguration

dnsmasq wird hier im wesentlichen durch die folgenden Dateien konfiguriert:

2.1 /etc/dnsmasq.conf

Eine relativ minimalistische Konfigurationsdatei von dnsmasq, die jedoch alle für mein LAN erforderliche DNS- und DHCP-Funktionalität bietet.

   # /etc/dnsmasq.conf -- configuration for DHCP/DNS server dnsmasq
   #
   # $Id$

   # domain name
   #
   domain=example.invalid

Die Domain, für die der DHCP-Teil von dnsmasq zuständig ist und die ggfs. auch anfragenden Hosts mitgeteilt wird.

   # interfaces to listen on
   #
   interface=lo
   interface=eth0

Da dnsmasq auf meinem Router installiert ist, soll er nur Anfragen auf dem loopback-device und auf eth0 (der hier ins LAN zeigenden NIC) annehmen.

   # general DNS stuff
   #
   bogus-priv
   domain-needed
   expand-hosts
   resolv-file=/etc/ppp/resolv.conf

   # return this host as the MX mail handler
   #
   mx-target=router.example.invalid
   localmx

Mit diesen Anweisungen wird dnsmasq daran gehindert, Anfragen nach privaten IP-Bereichen oder Hostnamen ohne Domain-Teil an seine forwarder weiterzugeben, Hostnamen ohne Domain-Teil aus der /etc/hosts bei Anfragen zu ergänzen und die in der /etc/ppp/resolv.conf eingetragenen DNS als forwarder zu verwenden. Ausserdem wird noch ein MX-Record (MailExchanger) gesetzt.

   # general DHCP stuff (see RFC 2132)
   #
   # 1:  subnet masq
   # 3:  default router
   # 6:  DNS server
   # 12: hostname
   # 15: DNS domain (unneeded with option 'domain')
   # 28: broadcast address
   # 42: time server
   #
   dhcp-authoritative
   dhcp-leasefile=/var/lib/misc/dnsmasq.leases
   dhcp-option=1,255.255.255.0
   dhcp-option=3,192.168.1.254
   dhcp-option=6,192.168.1.254
   dhcp-option=28,192.168.1.255

Hier wird dnsmasq als massgeblicher DHCP-Server mit einer Lease-Datenbank unterhalb von /var/lib/misc definiert. Ausserdem soll er anfragenden Klienten neben Hostname und IP bestimmte weitere Informationen übermitteln.

   # dynamic DHCP range with a 2 hour lease
   #
   dhcp-range=192.168.1.101,192.168.1.110,2h

   # static DHCP hosts with a 6 hour lease
   #
   dhcp-host=00:11:09:b9:e8:7c,fixed01,6h
   dhcp-host=00:50:bf:54:e7:16,fixed02,6h
   dhcp-host=00:08:02:d4:a4:00,fixed03,6h
   dhcp-host=08:00:20:80:7b:1b,fixed04,6h
   dhcp-host=00:00:6b:77:9f:7c,router,6h

Klienten mit einer unbekannten MAC müssen ihre von dnsmasq erhaltene IP und Hostnamen nach 2 Stunden, Klienten mit bekannter MAC brauchen die Angaben erst nach 6 Stunden zu re-leasen.

2.2 /etc/hosts

Diese Datei, die normalerweise eine statische Tabelle zur Namensauflösung der libc darstellt, verwendet dnsmasq zur Auflösung und Übermittlung von lokalen Adressen und Namen.

   # /etc/hosts -- hostname-to-address mappings for the TCP/IP subsystem
   #               and zone file for DHCP/DNS daemon dnsmasq(8)
   #
   # $Id$

   # Localhost
   #
   # IPv4 version
   127.0.0.1       localhost

   # LAN (fixed adresses, IPv4 versions)
   #
   192.168.1.1     fixed01.example.invalid  fixed01
   192.168.1.2     fixed02.example.invalid  fixed02
   192.168.1.3     fixed03.example.invalid  fixed03
   192.168.1.4     fixed04.example.invalid  fixed04
   192.168.1.254   router.example.invalid   router

   # LAN (DHCP leases, IPv4 versions)
   #
   192.168.1.101   dynamic01.example.invalid   dynamic01
   192.168.1.102   dynamic02.example.invalid   dynamic02
   192.168.1.103   dynamic03.example.invalid   dynamic03
   192.168.1.104   dynamic04.example.invalid   dynamic04
   192.168.1.105   dynamic05.example.invalid   dynamic05
   192.168.1.106   dynamic06.example.invalid   dynamic06
   192.168.1.107   dynamic07.example.invalid   dynamic07
   192.168.1.108   dynamic08.example.invalid   dynamic08
   192.168.1.109   dynamic09.example.invalid   dynamic09
   192.168.1.110   dynamic10.example.invalid   dynamic10

Klienten, die eine dnsmasq unbekannte MAC haben und aus dem IP-Bereich 192.168.1.101 bis 192.168.1.110 bedient werden, sind hier auch schon als komplette Records einschliesslich Hostnamen erfasst, damit jedwede vorherige Konfiguration der Klienten überflüssig wird.

2.3 /etc/resolv.conf

Mit dieser Datei wird die Namensauflösung der libc konfiguriert. Sie braucht bloss auf dem Rechner, auf dem dnsmasq läuft, angelegt zu werden, da sie über die DHCP-Mechanismen auf den Klienten bei Vergabe einer IP dynamisch vom DHCP-Clienten aus den vom DHCP-Server erhaltenen Informationen angelegt wird.

   # /etc/resolv.conf -- resolver configuration
   #
   # $Id$

   nameserver      127.0.0.1
   domain          example.invalid
   search          example.invalid

2.4 /etc/ppp/resolv.conf

Auf diese Datei greift bloss dnsmasq zu, um seine forwarder, also die DNS, die er wiederum zur Namensauflösung befragt, zu erfahren. In aller Regel werden hier also die DNS des Internet-Providers eingetragen.

   # /etc/ppp/resolv.conf -- forwarders for dnsmasq(8)
   #
   # $Id$
   #
   # use DNS in Hamburg and Hannover

   nameserver 217.237.150.225
   nameserver 217.237.149.161
   nameserver 194.25.0.61

3. Links


Valid XHTML 1.0

Zurück zur Main-Site
Impressum
Created with GNU-Emacs on Sun Apr 16 11:19:02 CEST 2006

Valid CSS