[X-Post from forum.hetzner.de] SolusVM RDNS -> Hetzner API

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Heyho,

da Hetzner (obwohl einem meiner Meinung nach bei DEN Preisen das Geld aus der Tasche gezogen wird), nicht die Möglichkeit bietet, für einzelne Adressen oder ganze Adressranges einen NS für PTR anzulegen, der dann auf einen eigenen Server zeigt, hab ich mir selber ein Script zusammengeschrieben, das genau *das* macht, nur eben mit der Hetzner API und der SolusVM eigenen Datenbank:

Code:
#!/bin/bash

sqluser=*mysql solusvm username*
sqlpass=*mysql solusvm password*
sqlname=*mysql solusvm database name*
apiuser=*hetzner api username*
apipass=*hetzner api password*

mysql -N -e 'SELECT ipaddress, rdns FROM ipaddresses; SELECT ipaddress, rdns FROM ipv6;' -B -u$sqluser -p$sqlpass $sqlname | while read line
do
	ip=$(echo "$line" | awk '{print $1}')
	rdns=$(echo "$line" | awk '{if ($2 == "NULL"){print "";}else{print $2}}')
	if [ ! -f "/var/lib/rdns/$ip" -o "x$(cat /var/lib/rdns/$ip 2> /dev/null)" != "x$rdns" ]
	then
		echo "$ip -> $rdns"
		if [ "x$rdns" == "x" -o "x$rdns" == "xNULL" ]
		then
			curl -s -f -u $apiuser:$apipass https://robot-ws.your-server.de/rdns/$ip -X DELETE
		else
			curl -s -f -u $apiuser:$apipass https://robot-ws.your-server.de/rdns/$ip -d ptr="$rdns"
		fi
		exitcode=$?
		if [ "$exitcode" == "0" ]
		then
			echo -n "$rdns" > /var/lib/rdns/$ip
		else
			echo "FAILED: $ip -> $rdns = $exitcode"
		fi
	fi
done

Kommentare gerne erwünscht, Verwendung und Abändern des Scripts selbstverständlich gestattet.

Konfiguration ist hierbei eigentlich ziemlich simpel:

Mit
Code:
"mysql -e 'CREATE DATABASE rdns;' -u$sqluser -p$sqlpass
eine simple Datenbank (auf dem selben Host wo auch SolusVM installiert ist) erstellen und im SolusVM einfach einen PowerDNS Server hinterlegen: Configuration > PowerDNS > Add > *name eingeben ("rdns") >
IP Address -> localhost (Wichtig, nicht 127.0.0.1 verwenden!)
SQL Port -> 3306
SQL Username -> *mysql solusvm username*
SQL Password -> *mysql solusvm password*
SQL Database -> rdns
Nachdem das getan wurde, eine neue RDNS Zone anlegen ("Add Reverse DNS Zone") >
Zone Name -> in-addr.arpa
Nameserver 1 -> ns1.local
2 -> ns2.local
Hostmaster Email -> irgendwer@irgendwo.de

Dann das oben genannte Script auf dem Master installieren (z.B unter /usr/local/bin/hetznerptr.sh) und das Verzeichnis /var/lib/rdns/ anlegen. Die Parameter natürlich abändern und dann einmal ausführen lassen. Danach kann das Script mit einem Cronjob in /etc/crontab geschrieben werden (bei mir ist das */15 * * * * root /root/rdns.sh).

Hoffe damit doch noch die paar Leute, die hier eventuell SolusVM benutzen, geholfen zu haben :)
 
Back
Top