Seite 1 von 1

[Tutorial] Cloudflare als DDNS-Service nutzen

Verfasst: Mi 27. Apr 2016, 04:00
von martinallnet
Hier mein etwas umfangreicheres Tutorial, wie man Cloudflare als Tutorial nutzen kann.
Da das ganze recht viele Schritte erfordert, werde ich das ganze ein wenig splitten.

1. Cloudflare Free Account anlegen und eine Domain darauf schalten.

Den Account gibt es unter http://www.cloudflare.com und man braucht eine beliebige Domain, die auf Cloudflare verweisen muss.
Wie man eine Domain auf Cloudflare einrichtet, wird beim anmelden bei Cloudflare ausreichend erklärt.

Mein Tipp: Kostenlos kann man z. B. eine Domain auf http://www.dot.tk bekommen.

2. Ggf. Subdomain einrichten:

Unter den Einstellungen bei Cloudflare im Reiter DNS kann eine Subdomain eingerichtet werden.
Mein Skript funktioniert derzeit nur mit IPv4, daher reicht ein A-Record.

Bild

Im Reiter DNS muss für Dienste abseits eines Webservers über HTTP oder HTTPS zwingend der Cloudschutz ausgeschaltet werden (siehe Bild), die Wolke neben dem Eintrag muss grau sein!
Wenn man hingegen von zu Hause einen Webserver laufen lassen möchte, kann der Cache sogar ein Vorteil sein, da er den oft begrenzten Upload schont, das muss man je nach gewünschtem Verwendungszweck entscheiden.

Bild

//edit: devil7 (Bildformatierung angepasst)

Re: [Tutorial] Cloudflare als DDNS-Service nutzen

Verfasst: Mi 27. Apr 2016, 04:16
von martinallnet
Jetzt kommt der etwas nervigere Teil des Tutorials.

Erst einmal brauchen wir den Cloudflare API-Key, der ist rechts oben beim Klick auf die E-Mail-Adressen unter My Settings zu finden.

Bild

Etwas herunter scrollen und dort sollte der Key stehen.
Dazu auf den Button "View API Key" klicken.

Bild

Dieser Key muss nun in folgendes Skript eingesetzt werden:

Code: Alles auswählen

#!/bin/sh
        curl https://www.cloudflare.com/api_json.html -d 'a=rec_load_all' \
                -d 'tkn=[API Key]' \
                -d 'email=[E-Mail Adresse]' \
                -d 'z=[Root Domain]'
Hier das fertige Skript zum Download: http://dl.viewanime.net/ni/cf_ddns/clou ... _get_id.sh

Das Skript in eine Datei schreiben, Ausführungsrechte geben und ausführen.

Jetzt gibt es in der Konsole jede Menge JSON-Code, diesen am besten in einem JSON-Parser (z. B. http://json.parser.online.fr/) kopieren.

Nun hat man das ganze übersichtlich auf dem Bildschirm und kann sich die Domain heraussuchen.
Von der entsprechenden Domain oder Subdomain benötigen wir die "rec_id".

//edit: devil7 (Bildformatierung angepasst)

Re: [Tutorial] Cloudflare als DDNS-Service nutzen

Verfasst: Mi 27. Apr 2016, 04:24
von martinallnet
Jetzt müssen wir nur noch das DDNS-Skript an sich einrichten.

Code: Alles auswählen

#!/bin/sh

CURRENT_IP_FILE="/tmp/cloudflare_ddns_current_ip.txt"
NEW_IP=$(wget -O - -q http://dyn4.viewanime.net)

WHILE_KEEPALIVE=1

while [ $WHILE_KEEPALIVE = 1 ]
do

if [ -f $CURRENT_IP_FILE ]
        then
                CURRENT_IP=$(cat $CURRENT_IP_FILE)

                if [ "$NEW_IP" = "$CURRENT_IP" ]
                        then
                                echo "IP-adress not changed."
                        else
                                curl https://www.cloudflare.com/api_json.html \
                                 -d 'a=rec_edit' \
                                 -d 'tkn=4...................................8' \
                                 -d 'email=m..........e@gmail.com' \
                                 -d 'z=v.......e.net' \
                                 -d 'id=4.......8' \
                                 -d 'type=A' \
                                 -d 'name=m.....t.v.......e.net' \
                                 -d 'ttl=1' \
                                 -d "content=$NEW_IP"
                                echo $NEW_IP > $CURRENT_IP_FILE
                fi

                WHILE_KEEPALIVE=0
        else
                touch $CURRENT_IP_FILE
fi

done
Download: http://dl.viewanime.net/ni/cf_ddns/clou ... ns_ipv4.sh

Interessant ist hier der CURL-Teil:
curl https://www.cloudflare.com/api_json.html \
-d 'a=rec_edit' \
-d 'tkn=[API Key]' \
-d 'email=[E-Mail-Adresse]' \
-d 'z=[Root Domain]' \
-d 'id=[Ermittelte rec_id]' \
-d 'type=A' \
-d 'name=[Sub-Domain]' \
-d 'ttl=1' \
-d "content=$NEW_IP"
Dann das Skript z. B. per Cronjob regelmäßig starten und fertig ist der selbstgebaute DDNS-Dienst.