Da ich nach einer eigenen DynDNS Möglichkeit gesucht habe, hier meine Lösung.
Voraussetzungen:
Router (dyndns.sh):
#!/bin/sh
IP=$(ifconfig eth1 | grep "inet addr:" | cut -d: -f2 | awk '{ print $1}')
OLDIP=$(dig +short dyn.domain.tld @ns1.domain.tld)
if [ "$IP" != "$OLDIP" ]
then
ssh server "echo $IP > /USERNAME/.home.ip";
else
exit 0;
fi
Server (dyndns.pl):
#!/usr/bin/perl
use strict;
my $date=`date +%Y%m%d%H`;
my $oldip=`dig \@ns1.domain.tld +short dyn.domain.tld`;
my $newip=`cat /USERNAME/.home.ip`;
chomp $date;
chomp $oldip;
chomp $newip;
if ( $oldip ne $newip ) {
my @template=`cat /etc/nsd/template/dyn.domain.tld.template`;
open (ZONEFILE, '>/etc/nsd/dyn.domain.tld.zone') or die "Error opening file";
foreach my $line (@template) {
$line =~ s/SERIAL/$date/g;
$line =~ s/NEWIP/$newip/g;
print ZONEFILE $line or die;
}
close (ZONEFILE);
system("/usr/bin/systemctl restart nsd.service");
}
Beide Scripte sollten per cron automatisiert werden.
Zonendatei Vorlage (/etc/nsd/template/dyn.domain.tld.template):
; zone file for dyn.domain.tld
$TTL 300
@ IN SOA ns1.domain.tld. hostmaster.domain.tld. (
SERIAL
10800
3600
604800
300
)
NS ns1.domain.tld.
NS ns2.domain.tld.
@ A NEWIP
$ORIGIN dyn.domain.tld.
Fertig.
20.06.2012