...der Treffpunkt für Linuxbegeisterte im Landkreis Trauntein....

TwoDNS

Wer will nicht seine zu Hause betriebene Maschinen von extern erreichen. Für besitzer einer Fritzbox ist das vergleichbar einfach gelöst. Man nutzt den Fritz Dienst zur Namensauflösung. Da dieser mir aber nicht gefällt, habe ich mich für etwas anderes entscheiden, nämlich TwoDNS.
Da DynDNS mitlerweile kostenpflichtig ist, lohnt sich der Blick auf diese alternative.
Zunächst müssen wir dort einen Account anlegen und die, wie in den Bildern Beschrieben Schritte durchführen.

Nach dem Anlegen des gewünschent Hostname, den API-Token abrufen:

Im Bereich TwoDNS wars das auch schon. Jetzt müssen wir die Fritzbox vorbereiten und mit TwoDNS verheiraten.

Anbieter Benutzerdefiniert
Update-URL https://update.twodns.de/update?hostname=&ip=
Domainname hostname.my-wan.de // hostname.dynvpn.de
Benutzername
Kennwort xxxxxxx

Das wars eigentlich schon.
Nur wer keine FritzBox sein eigen nennen kann, ist angewiesen auf ein Script, welches Ihm die Aufgabe abnimmt.

Das BaseDir ( MY_DIR ) des Script ist /opt/scripts/dyndns/

update_dns.sh

#!/bin/bash
########################################################################################
##
## ALLOWS YOU TO ATOMATICALLY UPDATE YOUR HOST ON TWODNS.ORG
##
## VERSION: 	0.9.1
## DATE: 	08.10.2015
## MAINTAINER: 	matthias.schweizer
## LICENZE: 	GPLv3
##
########################################################################################
## set -x
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MY_DIR="/opt/scripts/dyndns"

USER_AGENT="Mozilla/5.0"
URL_MYIP="http://checkip.two-dns.de/"

##########################################
## PROVIDER: twodns.de
## PWD: d7aeba9e-7398
##########################################
## TWODNS CREDENTIALS
if [ -f ${MY_DIR}/config/twodns.cfg ]; then
	. ${MY_DIR}/config/twodns.cfg
else
	echo "NO CONFIG PROVIDED: PLEASE REGISTER AT TWODNS.DE AND FOLLOW THE INSTRUCTIONS"
	exit 73
fi

## TMP - FILES
IP_CACHE="/var/tmp/._my.ip"

##########################################
## GET MY EXTERNAL IP
##########################################
function get_myip () {
	MY_IP="$( curl -q -s --user-agent \"${USER_AGENT}\"  ${URL_MYIP} -o - 2>/dev/null | egrep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' )"
}

##########################################
## UPDATE IP AT DNS PROVODER
##########################################
function update_dns () {

	get_myip
	if [ ! "${MY_IP}" = "${OLD_IP}" ]; then
		
		echo "UPDATING IP -> ${MY_IP}" | logger -t ${0##*/}
		echo "UPDATING IP -> ${MY_IP}" 
		echo ${MY_IP} > ${IP_CACHE}

		## MUST BIE EXECUTED BY AN EXTERNAL SCRIPT BECAUSE OF SPECIAL MASKED SYNTAX
		echo "curl -q -s -X PUT -u \"${MAIL_ADDRESS}:${TOKEN}\" -d '{\"ip_address\": \"${MY_IP}\",  \"activate_wildcard\": \"true\"}' https://api.twodns.de/hosts/${DOMAIN}" | /bin/bash 
	fi

}

##########################################
## CHECK GATHERED IP IF VALID
##########################################
if [ -f "${IP_CACHE}" ]; then
	OLD_IP="$( cat ${IP_CACHE} )"
	
	## CHECK IP
	if [[ ${OLD_IP} =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
		## SPLITTING INTO 4 PARTS SEPARATED BY SPACE AND REMOVE LEADING "0" EG 098 -> 98
		OCTETS=$( echo ${OLD_IP} | tr -s '.' ' ' | sed 's/^0*//g; s/\.0*/\./g' )
		for OCTET in ${OCTETS}
		do
			## IF ONE OCTET IS GRATER THAN 255 IT'S NOT VALID
			if [ ${OCTET} -gt 255 ]; then
				(( ERROR ++ ))
			fi
		done
	else
		(( ERROR ++ ))
	fi

	## GOT AN ERROR REGATHERING IP AND UPDATING DNS
	if [ "${ERROR}" ]; then
		echo "${OLD_IP} :: NOT VALID.. GATHERING AGAIN"
		get_myip
		update_dns
		exit 1
	fi
fi

update_dns

Zu diesem Script gehört eine Config. Diese findet sich im Unterverzeichnis config/twodns.cfg
Deren Inhalt sieht in etwa wie folgt aus.

## TWODNS CREDENTIALS
TOKEN="fb8xxxxxxxxxxxxxxxxxxxxxxxxxxxcb"
MAIL_ADDRESS=mein at user.name" ## emailadresse bei twodns
#DOMAIN=""
DOMAIN="hostname.my-wan.de"

Author: Matthias Schweizer

Der Autor übernimmt keinerlei Gewähr für die Aktualität, Richtigkeit und Vollständigkeit der bereitgestellten Informationen auf unserer Website. Haftungsansprüche gegen den Autor, welche sich auf Schäden materieller oder ideeller Art beziehen, die durch die Nutzung oder Nichtnutzung der dargebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht wurden, sind grundsätzlich ausgeschlossen, sofern seitens des Autors kein nachweislich vorsätzliches oder grob fahrlässiges Verschulden vorliegt. Alle Angebote sind freibleibend und unverbindlich. Der Autor behält es sich ausdrücklich vor, Teile der Seiten oder das gesamte Angebot ohne gesonderte Ankündigung zu verändern, zu ergänzen, zu löschen oder die Veröffentlichung zeitweise oder endgültig einzustellen.

Categories:

Linux