**!!! 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!