Kleine Netze mit dnsmasq verwalten
Dnsmasq (http://thekelleys.org.uk/dnsmasq/doc.html) 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
Es ist nicht empfehlenswert mehrere DNS (Bind) und DHCP Server parallel laufen zu lassen. Daher bitte sicher stellen, dass es zu keinen Konflikten kommt.
Installation
yum install dnsmasq
Konfiguration
DNS
Dnsmasq greift zur lokalen Namensauflösung auf die /etc/hosts zurück. Daher sollte man diese Datei mit einem Editor mit Root-Rechten bearbeiteten.
## Local host 127.0.0.1 serverlein.creutz.net serverlein localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 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
Damit alle DNS-Anfragen über Dnsmasq verarbeitet und bei Bedarf an externe DNS-Server weitergereicht werden, ist der einfachste Weg, die lokale Datei /etc/resolv.conf des Servers zu bearbeiten. Es können bis zu 3 einträge in der Datei verwendet werden. Der erste Eintrag ist der aktive DNS Server. Die weiteren Einträge greifen nur, wenn sich der erste Server nicht meldet.
vim /etc/resolv.conf
nameserver 127.0.0.1 nameserver 62.27.27.62Welchen externen DNS Server soll ich eintragen?
Hier ist es ratsam den DNS des eigenen Providers zu verwenden. Dazu unter www.denic.de eine Domänenabfrage des Providers durchführen. Auf der Ergebnisseite sind im unteren Bereich zwei DNS IP-Adressen verzeichnet. Dies sind die DNS des Providers und können von uns verwendet werden.
Einschalten
service dnsmasq start
Test
Das erfolgreiche lokale Cachen überprüft man am Terminal:
dig yahoo.de
Die Antwort muss in Etwa so aussehen:; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.4 <<>> yahoo.de ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11319 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;yahoo.de. IN A ;; ANSWER SECTION: yahoo.de. 201 IN A 77.238.178.122 yahoo.de. 201 IN A 87.248.120.148 ;; Query time: 11 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Oct 9 10:44:40 2012 ;; MSG SIZE rcvd: 58Die Zeile ;; SERVER: 127.0.0.1#53(127.0.0.1) gibt Auskunft, dass der gefragte DNS unser Localhost ist.
DHCP
Soll Dnsmasq zusätzlich noch als DHCP-Server fungieren, so muss man noch die Datei /etc/dnsmasq.conf entsprechend bearbeiten. Üblicherweise braucht hier nicht viel eingestellt zu werden. Die wichtigsten Optionen werden im folgenden vorgestellt.
IP-Range
dhcp-range=192.168.0.100,192.168.0.254,2hDer DHCP weist die Adressen von 192.168.0.100 bis einschließlich 192.168.0.254 zu. Die Leasetime beträgt 2 Stunden
Feste IP zuweisen
dhcp-host=00:07:95:26:2B:C9,meteosat,192.168.1.2,24hDer Host mit der angegebenen MAC Adresse bekommt immer die angegebene IP-Adresse und ist unter dem Namen meteosat zu erreichen. Die Leasetime beträgt 24 Stunden (nicht vergessen: /etc/hosts anpassen)
Optionen
Nummer | Funktion | Beispiel |
---|---|---|
1 | subnet masq | dhcp-option=1,255.255.255.0 |
3 | default router | dhcp-option=3,192.168.1.254 |
6 | DNS server | dhcp-option=6,192.168.1.254 |
12 | hostname | |
15 | DNS domain (unneeded with option 'domain') | |
28 | broadcast address | dhcp-option=28,192.168.1.255 |
42 | time server | dhcp-option=42,130.133.1.10 |
Weitere Informationen unter http://de.wikipedia.org/wiki/Preboot_Execution_Environment
Leases anzeigen
cat /var/lib/misc/dnsmasq.leaseszeigt die aktuell vergebenen Adressen an
Firewall
wenn eine lokale firewall auf dem Server läuft, muss sicher gestellt werden, dass bootp-Anfragen nicht gefiltert werden.