Linux - DHCPD u. DDNS
A. Netzwerkkonfiguration
Starten der virtuellen Machinen:
xm ceate -c nwtk-srv
xm ceate -c nwtk-ws
WS
/etc/sysconfig/network:
NETWORKING=yes
HOSTNAME=ws.homedomain.at
GATEWAY=192.168.18.254
SRV
etc/sysconfig/network:
HOSTNAME=srv.homedomain.at
GATEWAY=192.168.0.1
IP Adressen vergeben:
SRV
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.0.18
NETMASK=255.255.255.0
ONBOOT=YES
NAME=eth0
BOOTPROTO=none
TYPE=ethernet
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
IPADDR=192.168.4.254
NETMASK=255.255.255.0
ONBOOT=YES
NAME=eth1
BOOTPROTO=none
TYPE=ethernet
WS
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=ethernet
ifup eth0
ifup eth1
Zustand der Interfaces überprüfen:
ifconfig
DNS-Server und Domäne am SRV in der Datei /etc/resolv.conf eintragen:
nameserver 192.168.0.1 # Router
domain homedomain.at # gleich wie "search" - bei domain aber nur 1 domain möglich
Eintrag in /etc/sysctl.conf ändern:
net.ipv4.ip_forward = 1 (statt 0)
Netzwerk-Service neu starten:
/etc/init.d/network restart
B) DHCP-Server
DHCP-Server für die innere Schnittstelle (eth1) konfigurieren und testen:
Einträge im File /etc/dhcpd.conf:
ddns-update-style none;
allow unknown-clients;
default-lease-time 300;
max-lease-time 1800;
option domain-name "homedomain.at";
option domain-name-servers 192.168.18.254;
option ntp-servers 192.168.0.100;
subnet 192.168.18.0 netmask 255.255.255.0 {
range 192.168.18.128 192.168.18.253;
option broadcast-address 192.168.18.255;
option subnet-mask 255.255.255.0;
option routers 192.168.18.254;
}
DHCP-Server starten:
service dhcpd start
Auf der WS DHCP-Client starten:
dhclient
WS anhand ihrer MAC-Adresse eine statische IP-Adresse zuweisen:
MAC Adresse der WS vom SRV aus herausfinden:
grep DHCP /var/log/messages
In der Datei /etc/dhcpd.conf statische Adresse eintragen:
ddns-update-style none;
allow unknown-clients;
default-lease-time 300;
max-lease-time 1800;
option domain-name-servers 192.168.18.254;
option domain-name "homedomain.at";
option ntp-servers 192.168.18.100;
subnet 192.168.18.0 netmask 255.255.255.0 {
range 192.168.18.128 192.168.18.253;
option broadcast-address 192.168.18.255;
option subnet-mask 255.255.255.0;
option routers 192.168.18.254;
}
host ws {
hardware ethernet aa:00:00:38:15:e6;
fixed-address 192.168.18.42;
}
DHCP-Server auf dem SRV neu starten:
service dhcpd restart
Auf der WS neues DHCP Lease holen
dhclient -r
dhclient
--> nun sollte die WS die statisch eingetragene IP-Adresse bekommen haben
Sperren der Vergabe von Adressen an unbekannte Clients:
Eintrag in der Datei /etc/dhcpd.conf ändern:
allow unknown-clients; --> deny unknown-clients;
DHCP-Server und DHCP-Client zur Überprüfung neu starten. (Schlauerweise Server VOR Client).
Für den weiteren Verlauf der Übung werde ich allerdings unknown-clients wieder zulassen, und meine WS mit der alten
nicht MAC-basierenden Adresse führen.
C. DNS-Server
DNS-Server konfigurieren, der die lokalen Adressen der Domäne homedomain.at auflöst
und andere Anfragen weiterleitet.
/etc/named.conf:
zone "18.168.192.in-addr.arpa" IN {
type master;
file "reversedomain.zone";
allow-update { none; };
};
zone "homedomain.at" IN {
type master;
file "homedomain.zone";
allow-update { none; };
};
/var/named/chroot/var/named/homedomain.zone:
$ORIGIN .
$TTL 38400
homedomain.at IN SOA homedomain.at. admin.homedomain.at. (
2002060301
10800
3600
604800
38400
)
$ORIGIN homedomain.at.
NS srv
srv A 192.168.4.254
ws A 192.168.4.253
Einrückungen sind zu beachten!
/var/named/chroot/var/named/reversedomain.zone:
$ORIGIN .
$TTL 38400
18.168.192.in-addr.arpa IN SOA homedomain.at. admin.homedomain.at.(
2002060301
10800
3600
604800
38400
)
$ORIGIN 18.168.192.in-addr.arpa.
NS srv.homedomain.at.
254 PTR srv.homedomain.at.
42 PTR ws.homedomain.at.
Zonefiles aus der chroot-Umgebung nach /var/named linken:
ln -s /var/named/chroot/var/named/homedomain.zone /var/named/homedomain.zone
ln -s /var/named/chroot/var/named/reversedomain.zone /var/named/reversedomain.zone
Um unseren eigenen DNS zur Auflösung von Namen zu benutzen, muss
der Inhalt der Datei /etc/resolv.conf wie folgt geändert werden:
/etc/resolv.conf
nameserver 127.0.0.1
domain homedomain.at
Starten des DNS Servers:
service named start
Nun sollte der DNS in der Lage sein sowohl Adressen aus dem Internet, als auch SRV und WS auflösen zu können.
ACL erstellen
acl dns-local{
192.168.18.0 /24;
127.0.0.0 /8;
};
In den global options muss man daraufhin folgende Options setzen:
allow-query { dns-local; };
allow-recursion { dns-local; };
Allow-query grenzt den Kreis der Adressen ein, die ein Query absetzen dürfen, und allow-recursion schränkt ein wer
rekursive DNS-Queries starten darf.
D) Dynamische DNS Updates
Schlüssel erzeugen
dnssec-keygen –a HMAC-MD5 –b 128 –n USER DHCP_UPDATER
Im aktuellen Verzeichnis werden daraufhin zwei Dateien erzeugt:
Kdhcp_updater.xxx.key
Kdhcp_updater.xxx.private
In der .private Datei ist der von uns benötigte Schlüssel enthalten.
Achtung: Den Schlüssel auf "/" und "\" überprüfen - ansonsten Error!
Wir fügen das kompletten Inhalt in unsere /etc/dhcpd.conf ein (evtl vorher backuppen!):
cat Kdhcp_updater.+157+14839.private >> /etc/dhcpd.conf
Datei /etc/dhcpd.conf wie folgt ändern:
ddns-domainname "homedomain.at";
ddns-update-style ad-hoc;
default-lease-time 3000;
max-lease-time 18000;
allow unknown-clients;
option domain-name-servers 192.168.18.254;
option domain-name "homedomain.at";
option ntp-servers 192.168.18.100;
update-static-leases true;
subnet 192.168.18.0 netmask 255.255.255.0{
range 192.168.18.128 192.168.18.253;
option broadcast-address 192.168.18.255;
option subnet-mask 255.255.255.0;
option routers 192.168.18.254;
}
host ws {
hardware ethernet aa:00:00:38:15:e6;
fixed-address 192.168.18.42;
}
key DHCP_UPDATER{
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret <erzeugtes Passwort>
}
zone homedomain.at.{
primary 192.168.18.254;
key DHCP_UPDATER;
}
zone 18.168.192.in-addr.arpa.{
primary 192.168.4.254;
key DHCP_UPDATER;
}
/etc/named.conf wie folgt ändern:
key DHCP_UPDATER{
algorithm hmac-md5;
secret <erzeugtes Passwort>;
};
zone "18.168.192.in-addr.arpa" IN{
type master;
file "reversedomain.zone";
allow-update {key DHCP_UPDATER;};
};
zone "homedomain.at" IN{
type master;
file "homedomain.zone";
allow-update { key DHCP_UPDATER; };
};
Berechtigungen setzen
Sollte named keine Schreibbrechtigung haben, kann er die Zonefiles nicht updaten.
--> /var/log/messages prüfen.
chmod 770 /var/named
chmod 770 /var/named/chroot/var/named
chown named /var/named
chown named /var/named/chroot/var/named
/etc/dhclient.conf auf WS editieren
send fqdn server-update on;
send fqdn.fqdn "ws.homedomain.at."
send fqdn.encoded on;
Bevor man das ganze testet, sollte man die WS noch aus den bestehenden Zonefiles löschen.
Nach restart von dhcpd und named sollte named versuchen in der chroot-Umgebung ein journal-File (*.jnl) anzulegen.
Falls alles richtig konfiguriert wurde und der Vorgang erfolgreich abgeschlossen wird, kann man bereits versuchen
die WS aufzulösen. Die Einträge in den Zonefiles erscheinen wenig später.
Useful Links
http://www.zytrax.com/books/dns/ch7/queries.html