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