Sophos UTM freedns DNS Update

Die Sophos UTM unterstützt zwar freedns.afraid.org aber leider gibt mir mein DSL Provider auf dem PPP0 Interface keine Native IPv6 Adresse.

Ich bekomme lediglich ein großzügiges IPv6 Delegated Prefix /56 Subnetz was ich mir dann selber einteilen kann.

Daraus nehme ich mir ein /64 Subnetz und weise es dem Interface was auch die PPPoE Verbindung macht als externes IPv6 Adresse zu.

Leider kommt der eingebaute DynDNS Dienst damit gar nicht klar. Da dieser nur die IPv4 Adresse auf dem WAN Interface sieht und somit auch nur diese übermittelt.

Hierzu hab ich mir ein kleines Script geschrieben das die jeweiligen Interfaces abträgt und dann mittels URL + Token + IP Adresse das update durchführt.

#!/bin/bash
TOKENv4="TOKEN IPv4"
DEVv4="ppp0"

TOKENv6="TOKEN IPv6"
DEVv6="eth0"

# Update Function
update_ipv4 () {
	curl "https://freedns.afraid.org/dynamic/update.php?${TOKENv4}&address=${IPv4}"
	echo ${IPv4} > /tmp/IPv4
}

update_ipv6 () {
	curl "https://freedns.afraid.org/dynamic/update.php?${TOKENv6}&address=${IPv6}"
	echo ${IPv6} > /tmp/IPv6
}

# Check if HA and Master
if [ -e /opt/tmpfs/ha ]; then
	if [ -e /opt/tmpfs/ha/master ]; then
                # Get IPv4
                IPv4=$(ip -4 a |grep -A 2 ${DEVv4} | egrep "inet.*scope global" --max-count=1 | awk '{print $2}' | awk -F "/" '{print $1}')

		if [ ! -z "${IPv4}" ]; then
	                # Check IPv4 Adress change
        	        case `grep -Fx "${IPv4}" /tmp/IPv4 >/dev/null; echo $?` in
	                0)
        	          # Found
                	  ;;
	                1)
        	          # not Found Update IPv4
			  update_ipv4
	                  ;;
        	        2)
                	  # Error 
	                  update_ipv4
        	          ;;
	                esac
		fi


                # Get IPv6
                IPv6=$(ip -6 a |grep -A 2 ${DEVv6} | egrep "inet6.*scope global" --max-count=1 | awk '{print $2}' | awk -F "/" '{print $1}')
		
		if [ ! -z ${IPv6} ]; then
	                # Check IPv6 Adress change
        	        case `grep "${IPv6}" /tmp/IPv6 >/dev/null; echo $?` in
                	0)
	                  # Found
        	          ;;
                	1)
	                  # not Found <Down>Update IPv6
			  update_ipv6
	                  ;;
        	        2)
	                  # Error
	                  update_ipv6
        	          ;;
                	esac
		fi
	fi
fi

Das Script prüft nach ob die aktuelle Node die Master node ist. Und ob Sich die IP Adresse seit dem letzten Aufruf geändert hat.

Die benötigten Token bekommt man auf der DynamicDNS Seite unten bei seinen DNS Namen unter quick cron example.

in dem Example gibt es eine Zeile wo der Token steht

# Example #1:
# wget --no-check-certificate -O - https://freedns.afraid.org/dynamic/update.php?TOKEN

Das muss man lediglich für IPv4 (A) und IPv6 (AAAA) sich raus suchen.

Das ganze dann noch als Cronjob einrichten und gut ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*