Update DNS via script

http://www.ops.ietf.org/dns/dynupd/secure-ddns-howto.html

 

DNS with SQL Backend

http://www.powerdns.com/content/home-powerdns.aspx

http://packages.ubuntu.com/maverick/pdns-server

 

Using dynamic DNS / nsupdate

CLI tool: "nsupdate"

Secure DNS strongly advised!

Additional hint from the austrian LUGA mailing list (german):

Wenn man das austomatische Eintragen in die Bind Zonen einmal
aktiviert hat, kann/will man die Zonefiles auch nicht mehr einfach so
editieren. Dazu gibt es die Kommandos freeze/thaw im rndc ...

 

lmgtfy:
http://www.ops.ietf.org/dns/dynupd/secure-ddns-howto.html
http://dag.wieers.com/howto/bits/bind-ddns.php

Jedes der dort gezeigten Scripts kannst du für deine Zwecke anpassen.

Oder allgemeiner:
http://www.google.ch/search?q=bind+dynamic+update

Wildcard DNS

Nice workaround for a single server: Wildcard DNS

Example zone excerpt:

;wildcard

*               A       213.185.164.158


Note: using a wildcard combined with a CNAME record does not work (bind9)

Perl Module

from the german LUGA mailinglist:

Alternativ und viel eleganter geht es mittels Perl und dem Net::DNS
Paket. Das sähe dann grob in etwa so aus:

my $host = `/bin/hostname`;
my $domain = "dom.ain";
my $keyname="YYYY";
my $key="XXXX";

my $update = Net::DNS::Update->new($domain);
$update->push(pre    => nxrrset("${host}.${domain}. A"));
$update->push(update => rr_add("${host}.${domain} 3600 A $inip"));
$update->sign_tsig($keyname, $key);
my $res = Net::DNS::Resolver->new;
$res->send($update);

Voraussetzung ist, dass du einen Key für die zu verändernde Zone
erstellst, den du auch auf dem aufrufenden Host installierst. Damit kann
der aufrufende Host dann halt in der einen Zone alles machen. Aber immer
noch besser, als wenn der Webserver-User Schreibrechte auf alle
Zonenfiles kriegt.

Pull Method

A script or web service writes new DNS entries into a file or directory. The DNS server periodically pulls the changes from that source and implements it.