Daniels Blog
24Okt/110

Howto: Quick and dirty DHCP-Server und DNS-Cache mit dnsmasq unter Debian

DHCP im LAN ist praktisch. Man muss nicht mehr die Netzwerkkonfiguration jedes einzelnen Rechners im Netzwerk an den Clients selbst verwalten, sondern hat alles schön zentral auf dem Server. Durch DNS-Caching sparen die Clients ein wenig Zeit beim Auflösen von Hostnames, da die Anfragen für bekannte Hostnames vom lokalen Cache übernommen werden können und nicht mehr an einen Server im Internet gestellt werden müssen.

Ein kleiner DHCP-Server ist mit dnsmasq sehr schnell eingerichtet.

# dnsmasq installieren
apt-get install dnsmasq

Die Konfiguration findet zentral in der Datei /etc/dnsmasq.conf statt. Man sollte sich vor den geballten Konfigurationsoptionen in der Datei nicht abschrecken lassen. So gut wie alles dient nur als Beispiel und ist per default auskommentiert. Eine sehr kurze Konfig reicht bereits für ein funktionierendes Setup:

DHCP

# DHCP netmask
# Clients bekommen 255.255.255.0 als Netmask
dhcp-option=1,255.255.255.0

# default gateway
# Clients bekommen als Gateway 192.168.1.251
dhcp-option=3,192.168.1.251

# dns
# Clients bekommen als Nameserver 192.168.1.4
# Falls man dnsmasq auch als DNS-Cache benutzen möchte, sollte dies die
# IP des Servers sein, auf dem dnsmasq läuft
dhcp-option=6,192.168.1.4


# Für bekannte Rechner immer dieselbe IP anhand der MAC-Adresse vergeben:
# Hier bekommt der Rechner mit der MAC 00:11:22:33:44:55 die IP 192,168.1.1 für 12 Stunden

dhcp-host=00:11:22:33:44:55,lobby,192.168.1.1,12h
dhcp-host=00:11:22:33:44:66,lobby2,192.168.1.2,12h

# Alle Rechner, die nicht per MAC identifiziert werden können, erhalten IPs
# aus dem Pool 192.168.1.120 bis 150

dhcp-range=192.168.1.120,192.168.1.150,12h

DNS

Die DNS-Funktionalität von dnsmasq benötigt eigentlich keine Konfiguration.
dnsmasq besorgt sich seine Nameserver aus /etc/resolv.conf . Hier sollten die
bekannten Nameserver des Providers eingetragen werden und evtl noch als Fallback
die 8.8.8.8 für Googles DNS-Server.

Weitere Hostnames, die im lokalen Netz gelten sollen, können dnsmasq in der Datei
/etc/hosts bekannt gemacht werden. Hier eingetragene Hostnames stehen allen Rechnern
im LAN zur Verfügung.

Fallstricke

dnsmasq muss nach Konfigänderungen seine Konfigurationsdateien neu einlesen

/etc/init.d/dnsmasq restart

Falls Clients noch eine Lease vom alten DHCP-Server haben, kann man sie manuell dazu bringen, einen neuen DHCP-request zu starten.

#Linux
dhclient eth0

#Windows
ipconfig /RELEASE
ipconfig /RENEW

Dringend muss man darauf achten, den bisher genutzen DHCP-Server (meistens im Router zum Internet) zu deaktivieren. 2 DHCP-Server im LAN können viel Chaos generieren.