DIeser Artikel beschreibt wie man einen DNS und DHCP Server mit 2 Subnetzen mit RNDC-Key Authentifizierung unter Debian Etch installiert:
Der bereits erwähnte Debian Router soll nun um einen DHCP Server erweitert werden. Der DNS Server wurde bereits im ersten Teil der Debian Router Installation installiert. Er muss nun noch konfiguriert werden.
Dabei sollen 2 Subnetze angelegt werden, ein sicheres (192.168.0.0) sowie ein Subnetz für Gäste (192.168.1.0)
Die Konfiguration des DHCP und DNS Servers erfolgt am einfachsten mit Webmin. Leider ist das Standard Webmin DNS Modul dafür nur bedingt geeignet. Man sollte sich das Bind9 Webmin Modul herrunterladen und installieren. (http://sourceforge.net/projects/b9ddns)
Nun kann man unter Webmin im Menü „Server“ den DNS Server unter „BIND 9 dynamic DNS Server“ den DNS Server konfigurieren:
Zuerst müssen drei neue „Master Zones“ angelegt werden:
Zone type: Forward Domain name / IP subnet: network.lan Master server: ROUTER. Email address: root@localhost Zone type: Reverse Domain name / IP subnet: 192.168.0 Master server: ROUTER. Email address: root@localhost Zone type: Reverse Domain name / IP subnet: 192.168.1 Master server: ROUTER. Email address: root@localhost
Nun muss man diese Zonen in dynamische Zonen umwandeln. Dies ist notwendig, damit der DHCP Server die Informationen des DNS Servers aktualisieren kann. Dazu wird unter „Access Controll List“ eine neue „ACL“ angelegt.
Name: dhcp Matching addresses: 127.0.0.1 192.168.0.1 192.168.1.1
In jeder Zone kann man nun unter „Edit Zone Options“ dhcp in das Feld „Allow updates from …“ eintragen. Der Titel „Static Master Zone“ sollte sich nun in „Dynamic Master Zone“ geändert haben.
Nun kann man die /etc/resolv.conf Datei anpassen. Dort sollten aktuell die Nameserver des Providers eingetragen sein, diese können entfernt werden und durch diesen Eintrag ersetzt werden:
nameserver 127.0.0.1 search network.lan
Jetzt muss natürlich verhindert werden, das bei der nächsten ppp Einwahl wieder die Nameserver des Providers eingetragen werden. Dazu editiert man die Datei /etc/ppp/peers/dsl-provider und kommentiert den Eintrag „usepeerdns“ aus.
Da der Router selbst natürlich seine IP Adressen nicht dynamisch vom DHCP Server bezieht (lokal), muss er manuell im DNS Server hinterlegt werden. Dazu bearbeitet man die „Master Zone“ „network.lan“. Unter dem Menüpunkt „Address“ kann man manuell einen „Address Record“ hinzufügen:
Name: ROUTER Address: 192.168.0.1 Create reverse record?: Yes or update existing
Damit wäre der DNS Server soweit konfiguriert und man kann sich nun den DHCP Server vornehmen.
Installation:
aptitude install dhcp3-server
Die Konfiguration erfolgt nun wieder mit Hilfe von Webmin. Diese ist in Webmin unter „Servers – > DHCP Server“ zu finden.
Wie bereits erwähnt, soll das Subnetz 192.168.0.0 als sicheres Subnetz dienen. Das heißt es sollen nur bekannte Clients und Server eine IP Adresse vom DHCP Server erhalten. Jeder dieser bekannten Clients und Server muss unter „Hosts“ einzeln angelegt werden:
Hostname: TESTCLIENT Hardware Address: XX:XX:XX:XX:XX:XX
Als nächstes müssen die entsprechenden Subnetze angelegt werden:
Network address: 192.168.0.0 Netmask: 255.255.255.0 Address ranges: 192.168.0.100 - 192.168.0.200 Dynamic DNS enabled?: Yes Dynamic DNS reverse domain: 0.168.192.in-addr.arpa Dynamic DNS domain name: network.lan Server is authoritative for this subnet?: Yes Allow unknown clients?: Ignore Hosts directly in this subnet: TESTCLIENT Network address: 192.168.1.0 Netmask: 255.255.255.0 Address ranges: 192.168.1.100 - 192.168.1.200 Dynamic DNS enabled?: Yes Dynamic DNS reverse domain: 1.168.192.in-addr.arpa Dynamic DNS domain name: network.lan Server is authoritative for this subnet?: Yes Allow unknown clients?: Allow
Außerdem muss man die globalen Clienteinstellungen unter „Edit Client Options“ anpassen:
Domain name: network.lan DNS servers: 192.168.0.1 192.168.1.1 Dynamic DNS enabled? Yes Dynamic DNS update style: Interim Allow unknown clients?: Ignore
Zum Schluß müssen noch die entsprechenden dynamischen Zonen, welche im DNS Server angelegt wurden, im DHCP Server eingetragen werden. Dies geschieht über „Add a new DNS zone“:
Name of zone: network.lan IP of primary NS: 127.0.0.1 Name of zone: 0.168.192.in-addr.arpa IP of primary NS: 127.0.0.1 Name of zone: 1.168.192.in-addr.arpa IP of primary NS: 127.0.0.1
Unter „Configfile“ kann man sich nun die entsprechend erzeugten Einträge ansehen. Hier muss man die „zone“ Einträge suchen und die „key ;“ Zeilen auskommentieren. Auf diese Einträge werden wir später noch eingehen.
Jetzt fehlen nur noch die entsprechenden Rechte und man kann DNS und DHCP Server mit der neuen Konfiguration starten:
chmod g+w /etc/bind /etc/init.d/bind9 restart /etc/init.d/dhcp3-server restart
Mit „dhclient eth0“ kann man nun auf dem Testclient eine IP-Adresse vom DHCP Server anfordern. Diese sollte man auch im Webmin unter „DHCP Leases“ einsehen können. Zusätzlich sollte im DNS Server auch in jeder der drei angelegten Zonen unter „Address“ ein Eintrag mit dem Namen und der Adresse des Testclients angelegt worden sein.
Nun wollen wir auf die „key“ Einträge zurückkommen. Diese dienen dazu die Verbindung zwischen DNS und DHCP Server weiter abzusichern. Im Syslog findet man aktuell noch Einträge dieser Art:
named[30576]: zone 'network.lan' allows updates by IP address, which is insecure named[30576]: zone '0.168.192.in-addr.arpa' allows updates by IP address, which is insecure named[30576]: zone '1.168.192.in-addr.arpa' allows updates by IP address, which is insecure
Dies liegt daran, dass die Authentifizierung anhand einer ACL, welche beim DNS Server eingerichtet wurde funktioniert. (siehe Beginn des Artikels) Diese Methode ist einfacher, und ist für die ersten Funktionstests ausreichend. Nun soll sie durch eine RNDC-Key Authentifizierung ersetzt werden. Der dafür notwendige Schlüssel wurde bereits bei der „bind9“ installation automatisch erzeugt und in der Datei /etc/bind/rndc.key gespeichert. Zuerst muss dieser Key nun kopiert werden:
cp /etc/bind/rndc.key /etc/rndc.conf
Danach wird die Datei /etc/rndc.conf bearbeitet, sodass sie folgendes Aussehen hat:
key "rndc-key" { algorithm hmac-md5; secret "HERE_IS_YOUR_OWN_KEY"; }; options { default-server localhost; default-key "rndc-key"; };
Nun muss dieser Schlüssel in die Datei /etc/bind/named.conf eingebunden werden. Dazu muss zuerst der entsprechende ACL-Eintrag
acl dhcp { 127.0.0.1; 192.168.0.1; 192.168.1.1; };
entfernt werden und durch den Schlüsseleintrag ersetzt werden.
include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 allow {localhost;} keys {rndc-key;}; };
Danach muss bei jeder Zone im DNS Server der Eintrag
allow-update { dhcp; };
durch diesen ersetzt werden
allow-update { key "rndc-key"; };
Nun kann man auch den DHCP Server auf die neue authentifizierung anpassen indem man folgende Zeile in der Datei /etc/dhcp3/dhcpd.conf hinzufügt:
include "/etc/bind/rndc.key";
Die vorher auskommentierten „key ;“ Einträge werden nun durch
key rndc-key ;
ersetzt.
Zum Schluss muss man nur noch DHCP und DNS Server neu starten
/etc/init.d/bind9 restart /etc/init.d/dhcp3-server restart
Links:
http://www.linux-home-server.de
http://wiki.slashconcept.com/index.php/BIND_9_DNS_Server_unter_Debian_GNU_Linux_4.0_Etch_Howto_(LAN)
http://linuxwiki.de/debian-dhcp
http://www.howtoforge.com/dhcp_server_linux_debian_sarge
http://www.schoki.org/ddns/ddns.html