Sitemap | Nicht eingeloggt

Layout: V2_DayTime
V2_DayTime
| V2
V2
| V2 Dark
V2 Dark
| Alle

DE

Tux

DNS und DHCP Server einrichten unter Linux

Was ist ein DNS Server?

DNS bedeutet: Domain Name System
Ein DNS löst Netzwerknamen in IP-Adressen auf. Das heisst wenn Du zum Beispiel google.ch in Deinem Browser eingibts, wird auf dem DNS Server die dazugehörige IP Adresse gesucht und dann dem Browser übermittelt. Wenn es keine DNS Server gäbe müssten wir google.ch zum Beispiel so aufrufen:

http://173.194.40.23

Zu Hause kann der DNS Server nützlich sein, weil er ein Cache anlegt, der die zuletzt aufgerufenen Namen und die dazugehörigen IP Adressen zwischenspeichert und dadurch der Aufruf von Internetseiten oder anderen Diensten nicht noch an den externen DNS Server gesendet werden müssen.

Was ist ein DHCP Server?

DHCP vergibt gültige IP-Adressen an die DHCP Clients. Wenn Du Dein Gerät an ein neues Netzwerk anschliesst (auch per WLAN), bekommst Du in der Regel automatisch eine richtige, gültige IP Adresse zugewiesen und kannst damit auf andere Geräte im Lokalen Netzwerk (LAN) oder das Internet zugreifen.
Ohne DHCP Server muss man die IP Adresse statisch vergeben und alle benötigten Infos manuell eintragen.

Heutzutage hat jeder Router für zu Hause einen DHCP Server integriert. Normalerweise muss man auch nicht viel konfigurieren, damit alles einfach funktioniert (Adminpasswort auf dem Router ändern!).
Trotzdem kann man einen "richtigen" DHCP Server selber konfigurieren und hat dadurch viel mehr Kontrolle darüber wie er funktioniert.

Voraussetzungen

Dokumentation

Mehr Infos über dnsmasq und die Einstellungen dafür findet man wenn man hier klickt.

Installation

Bitte ein Terminal öffnen und den Befehl ausführen:

sudo apt-get install dnsmasq

Links

Ubuntu Wiki -> DNS

Linux.com -> dnsmasq

Konfiguration

DNS

Damit der DNS Server etwas zu tun hat, muss er natürlich konfiguriert werden. Das geht mit dnsmasq aber sehr schnell und einfach.
Zuerst ändern wir die Datei /etc/resolv.conf. Die Datei ist dafür da die Nameserver auf einem Linux-Computer einzutragen. Mit DHCP wird die Datei automatisch befüllt. Wir schreiben die Datei so um, dass unsere eigener Nameserver (die Maschine, auf der dnsmasq läuft) zuoberst steht. Danach folgen alle anderen Nameserver. Mindestens ein externer Nameserver muss eingetragen werden, oder wir haben danach keine Verbindung zum Internet, da die Namen nicht aufgelöst werden können:

nameserver 127.0.0.1
nameserver zusätzliche Nameserver angeben
nameserver GATEWAY

Für die interne Namensauflösung wird /etc/hosts verwendet. DNSMASQ übernimmt die Einträge aus der eigenen /etc/hosts Datei und fragt sie bei internen Aufrufen ab. Deshalb kann man Namen die fest auf eine IP zeigen sollen hier eintragen:

127.0.0.1 localhost
127.0.1.1 Name der lokalen Maschine

#Router / Gateway
192.168.0.1 ci-dlink-router.domainname ci-dlink-router

#Maschinen / Server im Netz mit fester IP
192.168.0.51 ci-sv-raspbian1.domainname ci-sv-raspbian1
192.168.0.52 ci-sv-raspi2web.domainname ci-sv-raspi2web

#Desktops mit fester IP
192.168.0.14 ci-ws-ubuntu1.domainname ci-ws-ubuntu1

#Testserver
192.168.0.52 ci-sv-raspbian2.domainname ci-sv-raspbian2

#Webseiten
192.168.0.52 easeli.ch.domainname easeli.ch
192.168.0.52 intranet.domainname intranet

Jetzt ist sichergestellt, dass wenn ich bei mir zu Hause im Browser http://easeli.ch.domainname (oder nur http://easeli.ch) eingebe, mein Entwicklungsserver (192.168.0.52) angesprochen wird, anstatt die externe Adresse meines Hosters.
Intranet ist eine andere Webseite auf dem Apachen. Mit dem Eintrag stelle ich sicher, dass Geräte die bei mir im lokalen Netzwerk sind im Browser http://intranet.domainname (oder nur http://intranet) eingeben und so auf meine Intranet Seite zugreifen können. Ohne einen DNS müsste man bei jedem Gerät die Hosts-Datei abändern, damit diese Lösung funktioniert.

So kann man dnsmasq neu starten, wenn man Änderungen an den DNS-Konfiguration oder Dateien gemacht hat:

sudo service dnsmasq restart

Der DNS Dienst läuft auf diesem Rechner nach einem Neustart des Services oder des Computers bereits.
Damit der DNS Server auch von den Geräten im Netz verwendet wird, ist es nötig, den Server manuell als DNS Server einzutragen, oder, was ich bevorzuge, per DHCP den DNS Servereintrag and die Geräte zu übermitteln.

Domain einrichten

Auf dem DNS-Server öffnen wir die datei dnsmasq.conf:

sudo nano /etc/dnsmasq.conf

...und ändern die folgende Zeile:

#domain=thekelleys.org.uk

...auf diesen Wert:

domain=domainname

Jetzt öffnen wir die datei resolv.conf:

sudo nano /etc/resolv.conf

Und füllen die Datei mit folgendem Inhalt:

domain domainname weiteredomain
search domainname weiteredomain
nameserver 127.0.0.1
nameserver GATEWAY-IP (falls Gateway DNS Relay macht)
nameserver WEITEREDNSSERVER-IPs (falls Gateway kein DNS Relay macht; z.B. DNS von Deinem Provider)

Anschliessend entweder den Server komplett neu starten, oder nur den DNS Dienst neu starten:

sudo service dnsmasq restart

Auf den Maschinen mit statischen IPs muss die resolv.conf selber befüllt werden.
Wenn die Maschinen zuerst mit DHCP ans Netz kommen, wird die resolv.conf automatisch befüllt.
Reine DHCP Maschinen müssen nicht angepasst werden, da die Optionen vom DHCP festgelegt werden.

Wir öffnen also auf den Maschinen mit fester IP die Datei resolv.conf:

sudo nano /etc/resolv.conf

Und füllen die Datei mit folgendem Inhalt:

domain meinedomain weiteredomain
search meinedomain weiteredomain
nameserver IPdesDNSServers

Ab jetzt können die Maschinen mit dem Namen und Domain angesprochen werden:

ping easeli.ch

Oder:

ping easeli.ch.domainname

Weiteres Beispiel:

ping weitererserver

Oder:

ping weitererserver.domainname

DHCP

Um den in DNSMASQ integrierten DHCP Server zu aktivieren, muss man wiederum die Datei /etc/dnsmasq.conf öffnen und folgende Linien auskommentieren und auf die gewünschten Werte ändern.

Wenn man diese Linie auskommentiert ist der DHCP Server schon minimalistisch konfiguriert.
Mit den Parametern kannst Du spezifizieren, wie die tiefste und höchste automatisch zu vergebende IP lautet. In diesem Fall ist der Bereich von 192.168.0.100 - 192.168.0.199 und die Leasetime (die "Leihzeit") einer dynamischen IP ist 12h. Ich ändere den Wert hier auf 168h, damit die Leihzeit 7 Tage beträgt.

dhcp-range=192.168.0.100,192.168.0.199,12h

So kann man dnsmasq neu starten, wenn man Änderungen an den DHCP-Konfigurationen gemacht hat:

sudo service dnsmasq restart

Der DHCP Dienst läuft jetzt schon. Es ist sehr zu empfehlen alle anderen lokalen DHCP Server zu deaktivieren, da man sonst nicht wirklich kontrollieren kann, welcher DHCP Server verwendet wird!

Wenn der dnsmasq Server nicht gleichzeitig auch ein Gateway ist, ist es nötig den DHCP-Clients den richtigen Gateway mitzugeben.
Bei mir ist der Router der Gateway (DHCP darauf ist deaktiviert, da ich ja dnsmasq nutze) und muss manuell in der dnsmasq Konfiguarationsdatei eingetragen werden. Deshalb die Datei /etc/dnsmasq.conf erneut öffnen und folgende Linien auskommentieren und auf die gewünschten Werte ändern:

dhcp-option=3,192.168.0.1

... wobei die IP Adresse die Adresse Deines Routers sein muss.

Nachdem der Dienst wieder neu gestartet wurde kann man einen Client auf DHCP umstellen und die Einstellungen zum Beispiel mit Pings testen.

Infos zum Dokument
Author: Christoph Iseli
Datum: 12.08.2014
Letzte Änderung: 14.08.2014

1 Kommentar

#1 Von Easelee in Jona am 13.3.2015 um 15:28 Uhr

Die leases findet man in

/var/lib/misc/dnsmasq.leases

Dort kann man die jeweiligen Linien löschen, damit die Clients einen neuen Lease beantragen.

Einen neuen Kommentar hinzufügen

Info: Wenn Du eingeloggt bist, musst Du keine Userdaten mehr eingeben.

Ort:
(Optional)

Kommentar:

Impressum
Programmierung: Christoph Iseli | Design: Christoph Iseli
Webseitencode: Darf frei kopiert / verwendet werden (Downloads) | Inhalt: Darf frei verwendet werden, solange ein Link auf diese Seite mitgegeben wird.