DDNS - Client - Abgleich

m!cele

Active Member
Heyho,

um auch von aussen auf meinen router zugreifen zu können würde ich auf meiner FreeBSD 4.7 Kiste gerne einen Client installieren, der bei jeder Einwahl meinen DDNS Acocunt bei DtDNS abgleicht.
Was nehme ich da am besten und wie mache ich das am besten ?

mfg und thx
m!cele
 
Original geschrieben von m!cele
Heyho,

um auch von aussen auf meinen router zugreifen zu können würde ich auf meiner FreeBSD 4.7 Kiste gerne einen Client installieren, der bei jeder Einwahl meinen DDNS Acocunt bei DtDNS abgleicht.
Was nehme ich da am besten und wie mache ich das am besten ?

mfg und thx
m!cele

Hallo

Schaue mal hier rein. http://www.dyndns.org/services/dyndns/clients.html

Unter den aufgeführten Programmen wirst du auch *BSD-Portierungen finden.

Gruß

CW
 
Ich habe mir basierend auf der URL aus der Firmware meines
DI-604 Routers folgendes Script zusammengebastelt:
Code:
#!/bin/sh
# [url]http://[/url]$U:$P@members.dyndns.org/nic/update?system=dyndns&hostname=$H&myip=$I&wildcard=OFF&mx=&backmx=NO&offline=NO

U=<loginname>
P=<denkste>
# dynamic hostname
H=<hostname>
# remote ip
I=192.168.0.1


out=$(/usr/local/bin/wget -nv "http://$U:$P@members.dyndns.org/nic/update?system=dyndns&hostname=$H&wildcard=OFF&mx=&backmx=NO&offline=NO" -O -)

echo $out
Im Kommentar oben die URL, wie sie im Firmware-Binary
drinsteht. Dazu muss ich aber noch sagen, dass der Host
"members.dyndns.org" durch einen DNS-Server-Hack auf
einen anderen Rechner zeigt. Im Router lässt sich nämlich
nicht konfigurieren, dass er einen anderen Server anspricht.
 
Hallo.

Bei den Howto habe ich mal was dazu geschrieben:
http://www.bsdforen.de/forums/showthread.php?s=&threadid=148

Das eigentliche howto geht um IPFW und NATD, aber ein paar posts weiter unten steht dann:

Moin.

ddclient nutze ich zwar nicht, sondern ddup, aber das Prinzip sollte das gleiche sein wie Du das Problem lösen könntest. Hmm, könnte ja mal ein Howto schreiben von wegen dyndns und ddup. Ja, werde ich beizeiten mal machen.

Aber zu Deinem Problem.
Schreibe doch ein Script, 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 ddup, sollte aber bei ddclient nicht grossartig anders sein):

Legt unter /usr/local/etc/rc.d ein Skript mit dem Namen "020.ddup_start.sh" und dem Inhalt an:

#!/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




Pack das Script mit dem Namen "ddup_udate.sh" nach /etc/periodic/

#!/bin/sh

#Variablen
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"

# die nachfolgenden 2 anpassen an ddclient
ddclient_cmd="/usr/local/sbin/ddup"
ddclient_flags="--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 ddclient
# -sende eine email
# -yberschreibe oldfile mit newfile
if [ -r "$newfile" ]; then
$ddclient_cmd $ddclient_flags --host $host_net
$ddclient_cmd $ddclient_flags --host $host_com
$ddclient_cmd $ddclient_flags --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

$ddclient_cmd $ddclient_flags --host $host_net
$ddclient_cmd $ddclient_flags --host $host_com
$ddclient_cmd $ddclient_flags --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:
*/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.
 
Zurück
Oben