Dynamic DNS

From Elch-Wiki
Jump to navigationJump to search

Dynamic DNS auf trash.net

  • Voraussetzung ist ein eigenes Zonenfile für djbdns oder BIND
  • Abhängig vom verwendeten URI muss das Zonefile entweder für www (Aufruf über eigenen Domain-Namen) oder für den eigenen User (z.B. romanf) schreibbar sein
  • Mein Script für die Zone von djbdns ist sehr einfach:
#!/bin/sh
echo "Content-type: text/plain"
echo ""
ZONEFILE=/etc/djbdns/tinydns/root/datafiles/truniger.ch
FOUND=`grep "^+privat.truniger.ch:$REMOTE_ADDR:" $ZONEFILE`
if [ -n "$FOUND" ] ; then
  exit
fi
ed -s $ZONEFILE <<EOF >/dev/null
/^+privat.truniger.ch:/s/^.*$/+privat.truniger.ch:$REMOTE_ADDR:300
w
q
EOF
mailx -s "New IP Adress $REMOTE_ADDR" truniger@trash.net </dev/null
  • Für eine signierte BIND Zone so:
#!/bin/sh
echo "Content-type: text/plain"
echo ""
ZONEFILE=/var/named/truniger.ch/zone.db
FOUND=`grep "^privat\.truniger\.ch\..*${REMOTE_ADDR}$" $ZONEFILE`
if [ -n "$FOUND" ] ; then
  exit
fi
ed -s $ZONEFILE <<EOF >/dev/null
/^privat.truniger.ch..*IN.*A/s/^.*$/privat.truniger.ch. 300     IN      A
$REMOTE_ADDR
w
q
EOF
mailx -s "New IP Adress $REMOTE_ADDR" truniger@trash.net </dev/null
  • Abgelegt ist dieses Script als ~/public_html/cgi-bin/update-dns.cgi
  • Dort liegt auch noch ein AccessFile (.htaccess) für die Zugangskontrolle:
  AuthType Basic
  AuthName "Privat Area"
  AuthUserFile /home/truniger/html_auth/htpasswd
  Require user dnsupdate
  • Wo das File ~/html_auth/htpasswd den Account dnsupdate enthält (anlegen/verwalten mit "htpasswd")
  • Aufgerufen wird das CGI mit einem Cronjob:
    33      *       *       *       *       /usr/bin/curl --ipv4 -s -o /dev/null --user dnsupdate:20dns+update11 http://www.trash.net/~romanf/cgi-bin/update-dns.cgi