!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!
Diese Seite wurde zuletzt am 9. Juli 2014 um 10:57 Uhr geändert.
Der virtuelle Server, der DNS anbieten soll, soll einen DNS-Server auf einem eigenen loopback-Device und einen DNS-Cache auf der eigentlichen IP-Adresse beherbergen.
Die anderen virtuellen Server richten Ihre Anfragen dann an den DNS-Cache, welcher sowohl das interne Netz als auch das Internet cached.
in der Konfiguration (/etc/vservers/…) des Hosts folgende Dateien mit darunter stehendem Inhalt anlegen:
/apps/init/runlevel:
3
/apps/init/style:
plain
djbdns installieren:
aptitude install djbdns adduser --system --ingroup nogroup --home /var/log/dns --no-create-home dnslog adduser --system --ingroup nogroup --home /etc/dnscache --no-create-home dnscache adduser --system --ingroup nogroup --home /etc/tinydns --no-create-home tinydns
tinydns konfigurieren:
tinydns-conf tinydns dnslog /etc/tinydns 127.0.0.1 cd /service/tinydns/root ./add-ns vserver.lan 127.0.0.1 ./add-ns 10.in-addr.arpa 127.0.0.1 ./add-mx vserver.lan 10.0.0.25 ./add-host server.vserver.lan 10.0.0.10 ./add-host php.vserver.lan 10.0.0.80 ./add-alias www.vserver.lan 10.0.0.80 [[...]] make ln -s /etc/tinydns /etc/service
und gleich weiter mit dem dnscache:
dnscache-conf dnscache dnslog /etc/dnscache 10.0.0.53 echo 127.0.0.1 > /etc/dnscache/root/servers/vserver.lan echo 127.0.0.1 > /etc/dnscache/root/servers/10.in-addr.arpa echo 1 > /etc/dnscache/env/FORWARDONLY touch /etc/dnscache/root/ip/10 ln -s /etc/dnscache /etc/service
mit folgendem Befehl kann man gucken, wie lange die Dienste laufen (wenn sie immer nur ein paar Sekunden laufen, stimmt etwas nicht):
svstat /service/tinydns
oder
svstat /service/dnscache
wenn dann noch eine Auflösung erfolgreich ist:
dnsip www.vserver.lan 10.0.0.80 dnsip www.heise.de 193.99.144.85 dnsip www www.vserver.lan 10.0.0.80 dnsqr a php.vserver.lan 1 php.vserver.lan: 50 bytes, 1+1+0+0 records, response, noerror query: 1 php.vserver.lan answer: php.vserver.lan 86223 A 10.0.0.80
kann er in die Datei „/etc/resolv.conf“ der anderen virtuellen Server eingetragen werden:
search vserver.lan nameserver 10.0.0.53
Möchte man zwei „primäre“ DNS-Server auf Basis von djbdns anbieten, könnte man sie wie folgt untereinander abgleichen…
Zusätzliche Pakete installieren:
aptitude install incron openssh-server rsync echo "root" > /etc/incron.allow
… passwortfreies Login per Schlüssel als root nur vom anderen DNS-Server einrichten (ssh-keygen, ssh-coppy-id, /etc/hosts.deny, /etc/hosts.allow,…)…
/usr/local/sbin/tinydns-rsync-data:
#!/bin/bash # dependencies: # - incron (/etc/tinydns/root IN_MOVED_TO,IN_CLOSE_WRITE /usr/local/sbin/tinydns-rsync-data $#) # - ip # - rsync # - ssh (as root, without password, only from the other nameserver!) # - make # simple configuration DIR="/etc/tinydns/root/" FILE="data" LOG="/var/log/dns/edit_rsync_make_data.log" # functions mylog() { [[|-n "$1" ]] && echo -e "$( date +"%Y %m %d %H %M %S" ) - $1" >> "$LOG" } # simple checks ## expect exactly one parameter! [[|$# -eq 1 ]] || { mylog "wrong call of $0... TERMINATING!\n- - - - - - - - - - - - - - - - - - - - - - - - -" exit 1 } ## do nothing, if the the affected file ist not "data"! [[|"$1" = "data" ]] || exit 0 mylog "/etc/tinydns/root/data was changed! starting roll out changes..." # identify ip of the other nameserver case "$( ip addr )" in *10.0.0.22* ) REMOTE_IP="10.0.0.23" ;; *10.0.0.23* ) REMOTE_IP="10.0.0.22" ;; esac mylog "the ip of my twin was set to $REMOTE_IP..." # rsyncing (the "reverse"-rsync has nothing to do and will not trigger this script!) rsync -aze ssh "$DIR$FILE" "$REMOTE_IP:$DIR$FILE" mylog "rsync with my twin done..." # aktivate changes on both nameservers cd "$DIR" make mylog "data.cdb was updated..." mylog "done!\n- - - - - - - - - - - - - - - - - - - - - - - - -" exit 0
Neue inotify-Regel per „incrontab -e“ hinzufügen
/etc/tinydns/root IN_MOVED_TO,IN_CLOSE_WRITE /usr/local/sbin/tinydns-rsync-data $#
(/etc/tinydns/root/data direkt überwachen läuft ins Leere, weil Tools wie rsync, Editoren, /usr/bin/tinydns-edit erst in eine andere Datei schreiben, die alte löschen und die neue in die alte umbenennen, was zu dann zu einem einem „inotify-IGNORE“ führen würde!)
Einen der beiden DNS-Server wie gewohnt pflegen und glücklich sein!