asg
push it, don´t hype
Hallo.
Ich habe das folgende kleine howto schon bei den Howtos im thread zu IPFW/NATD gepostet, nun bekommt es seinen eigenen Platz.
Es gibt viele die gerne von aussen auf Ihre Box drauf wollen, dank des 24 Stunden disconnects damit aber ein Problem bekommen, denn die neue IP ist nicht bekannt. Zum anderen möchte man sich keine IP merken wollen, sondern einen, gleichbleibenden Domainnamen wie beispielsweise grunix.homeunix.net.
Dafür gibt es dynamische DNS Dienste die sich diesem Problem annehmen, und bei einem disconnect wird diesem Dienst die neue IP mitgeteilt, und schon ist der Rechner wieder unter dem bekannten domain namen erreichbar.
Wie richtet man dies nun ein?
1. Ein account bei dyndns ist erforderlich.
2. Installation von "ddup" (/usr/ports/net/ddup).
ACHTUNG! Der Pfad für "ddup" hat sich geändert. So ist im Portstree das Verzeichnis "dns" hinzugekommen. Ihr findet "ddup" nun unter /usr/ports/dns/ddup.
Danach muss man ddup ersteinmal konfigurieren, was aber schnell von der Hand geht.
#ddup --makeconf
Hierbei wird die ddup.conf unter /usr/local/etc erstellt.
Diese Datei enthält das Passwort welche bei der Einrichtung bei dyndns.org vergeben wurde und die User die berechtigt sind ein update der IP durchzuführen.
Der Inhalt dieser Datei sieht dann in etwa so aus:
Jetzt muss man einfach ein Script schreiben welches via cronjob alle X Minuten aufgerufen wird, und überprüft ob die IP gleich geblieben ist, oder nicht. Wenn nicht, rufe ddclient auf und aktualisere dyndns, wenn doch, mache nichts.
Beispiel für ein solches Skript:
Legt unter /usr/local/etc/rc.d ein Skript mit dem Namen "020.ddup_start.sh" und folgenden Inhalt an. Es ist auch darauf zu achten das dieses Skript für den User "root" ausführbar ist und mit der Endung ".sh" endet:
Das nachfolgende Script mit dem Namen "ddup_update.sh" muss unter /etc/periodic/ abgelegt werden. Auch hier ist darauf zu achten, dass dieses Script für den User "root" ausführbar sein muss:
Füge in Deine /etc/crontab folgendes ein:
Und lege unter das Verzeichnis "dyndns" unter /var/log an (schreibrechte für root).Dort werden Deine logs gelagert, wie ich sie oben im script angegeben hatte.
Ich habe das folgende kleine howto schon bei den Howtos im thread zu IPFW/NATD gepostet, nun bekommt es seinen eigenen Platz.
Es gibt viele die gerne von aussen auf Ihre Box drauf wollen, dank des 24 Stunden disconnects damit aber ein Problem bekommen, denn die neue IP ist nicht bekannt. Zum anderen möchte man sich keine IP merken wollen, sondern einen, gleichbleibenden Domainnamen wie beispielsweise grunix.homeunix.net.
Dafür gibt es dynamische DNS Dienste die sich diesem Problem annehmen, und bei einem disconnect wird diesem Dienst die neue IP mitgeteilt, und schon ist der Rechner wieder unter dem bekannten domain namen erreichbar.
Wie richtet man dies nun ein?
1. Ein account bei dyndns ist erforderlich.
2. Installation von "ddup" (/usr/ports/net/ddup).
ACHTUNG! Der Pfad für "ddup" hat sich geändert. So ist im Portstree das Verzeichnis "dns" hinzugekommen. Ihr findet "ddup" nun unter /usr/ports/dns/ddup.
Danach muss man ddup ersteinmal konfigurieren, was aber schnell von der Hand geht.
#ddup --makeconf
Hierbei wird die ddup.conf unter /usr/local/etc erstellt.
Diese Datei enthält das Passwort welche bei der Einrichtung bei dyndns.org vergeben wurde und die User die berechtigt sind ein update der IP durchzuführen.
Der Inhalt dieser Datei sieht dann in etwa so aus:
Code:
%less ddup.conf
auth=12dsdsäjkdfu24sfsdsds
allowed_user=root
allowed_user=asg
Jetzt muss man einfach ein Script schreiben welches via cronjob alle X Minuten aufgerufen wird, und überprüft ob die IP gleich geblieben ist, oder nicht. Wenn nicht, rufe ddclient auf und aktualisere dyndns, wenn doch, mache nichts.
Beispiel für ein solches Skript:
Legt unter /usr/local/etc/rc.d ein Skript mit dem Namen "020.ddup_start.sh" und folgenden Inhalt an. Es ist auch darauf zu achten das dieses Skript für den User "root" ausführbar ist und mit der Endung ".sh" endet:
Code:
#!/bin/sh
case "$1" in
start)
[ -x /etc/periodic/ddup_update.sh ] && /bin/sh /etc/periodic/ddup_update
.sh && echo -n ' dyndns_update_complete'
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac
exit 0
Das nachfolgende Script mit dem Namen "ddup_update.sh" muss unter /etc/periodic/ abgelegt werden. Auch hier ist darauf zu achten, dass dieses Script für den User "root" ausführbar sein muss:
Code:
#!/bin/sh
#Variablen
#Eure eingerichteten hostnames bei dyndns
host_net="deine.dynadresse.net"
host_com="deine.dynadresse.com"
host_org="deine.dynandresse.org"
interface="tun0"
email="deinemail@adresse.de"
oldfile="/var/log/dyndns/ddclient_OLD"
newfile="/var/log/dyndns/dddclient_NEW_temp"
ddup_cmd="/usr/local/sbin/ddup"
ddupflags="--wildcard"
#bestehende Konfiguration in newfile packen
/sbin/ifconfig $interface | /usr/bin/grep inet > $newfile
if [ -r "$oldfile" ]; then
# wenn oldfile vorhanden haben wir infos
# wenn oldfile und newfile identisch, dann loesche newfile
/usr/bin/cmp -s $oldfile $newfile && /bin/rm -f $newfile
date
# wenn dem nicht so ist dann:
# -starte ddup
# -sende eine email
# -yberschreibe oldfile mit newfile
if [ -r "$newfile" ]; then
$ddup_cmd $ddupflags --host $host_net
$ddup_cmd $ddupflags --host $host_com
$ddup_cmd $ddupflags --host $host_org
/usr/bin/mail -s "$host_net $host_com $host_org update" $email < $newfile
/bin/mv -f $newfile $oldfile
fi
else
# der erste Lauf oder keinerlei Info
$ddup_cmd $ddupflags --host $host_net
$ddup_cmd $ddupflags --host $host_com
$ddup_cmd $ddupflags --host $host_org
/usr/bin/mail -s "$host_net $host_com $host_org update" $email < $newfile
/bin/mv -f $newfile $oldfile
fi
Füge in Deine /etc/crontab folgendes ein:
Code:
*/5 * * * * root /etc/periodic/ddup_update.sh >> /var/log/dyndns/dyndns.log
Und lege unter das Verzeichnis "dyndns" unter /var/log an (schreibrechte für root).Dort werden Deine logs gelagert, wie ich sie oben im script angegeben hatte.