Ostatnio jeden z „komentatorów” zainspirował mnie do nakręcenia wideo do wpisu dotyczącego zmiany duetu Apache2 + MOD-PHP na Apache2 + PHP-FPM. Tym razem jego „boje z no-ip.com” skłoniły mnie do przygotowania tego wpisu – czyli jak wykorzystać Cloudflare jako klienta DDNS (DNS dla dynamicznego IP).
Spis treści w artykule
Cloudflare jako Dynamic DNS (DDNS)
Wprawdzie na co dzień Cloudflare wykorzystuje jako „frontend” dla stron internetowych, to tym razem użyjemy tego serwisu w formie dynamicznego DNSa – korzystając z faktu, że właściwie każda zmiana w DNSach w ramach Cloudflare odbywa się w czasie rzeczywistym.
Dynamiczny adres IP, DDNS i własna domena
Gdy mamy publiczny i stały adres IP – sprawa jest prosta, w kilka(naście) minut możemy postawić u siebie serwer dostępny „z internetu”. Sytuacja trochę się komplikuje gdy wprawdzie mamy publiczny adres IP, ale jest on zmienny – jak np. w przypadku Neostrady.
W takiej sytuacji nadal możemy uzyskać „z internetu” dostęp do swojego serwera pod stałym adresem (domena/subdomena) korzystając z popularnych serwisów oferujących usługi pozwalające pod konkretną domenę/subdomenę podstawiać dynamicznie aktualny adres IP.
Własna domena
Często są to usługi bezpłatne, choć w takim wariancie nie możemy np. podpiąć własnej domeny – co dla niektórych z Was może być sporym minusem/problemem. W takim przypadku możecie przejść na konto „premium”, lub skorzystać z metody którą za chwilę przedstawię…
Cloudflare jako DNS z dynamicznie aktualizowanym adresem IP
Wykorzystanie Cloudflare w formie DDNS ma sporo zalet, m.in.:
- Usługa w pełni bezpłatna (choć są pakiety płatne)
- CDN (sieć serwerów serwujących kontent)
- Dodatkowa ochrona (adresu IP, jak i serwera)
- Dowolna ilość własnych domen (kierujących na serwer, nawet z dynamicznym IP)
- Pełne wykorzystanie możliwości domeny (obsługa nie tylko rekordu A, ale i pozostałych)
To rozwiązanie ma też jedną – potencjalną – wadę, bo o ile:
- Na komputerze domowym (jeśli ma robić jako serwer) możecie zainstalować klienta DDNS
- Większość routerów posiada obsługę kilku serwisów DDNS
To w przypadku rozwiązania opartego na Cloudflare trzeba będzie skorzystać z dedykowanego skryptu – ale w końcu jest to przykład oparty na serwerze działającym na Raspberry Pi, więc i wymienione minusy są nam nie straszne. Nas nie dotyczą… ;-)
W przypadku świeżo zarejestrowanych domen czasem trzeba poczekać 10-15 minut, aż odświeżą/zaktualizują się dane w rejestrze operatora danej domeny zanim będzie można dodać domenę do konta (komunikat o niezarejestrowanej domenie).
Należy też pamiętać, że zależnie m.in. od rejestratora domeny, czy ISP (dostawca internetu, u którego często znajdują się przypisane do łącza internetowego DNSy) zmiana adresów serwerów DNSów dla domeny na te od Cloudflare może zająć nawet 24-48 godzin.
Cloudflare API
By móc płynnie zmieniać IP dla rekordu A domeny skorzystamy z API Cloudflare, czyli będzie potrzebny klucza API – znajdziecie go w ustawieniach swojego konta:
Oprócz tego potrzebny będzie adres e-mail przypisany do konta – ale ten na pewno znacie… ;-)
CRON + cURL
Wykorzystamy tu też systemowe harmonogram zadań (CRON) i cURL – najprawdopodobniej macie w systemie, ale na wszelki wypadek:
sudo apt-get install cron
sudo apt-get install curl
Jeszcze tylko…
Zakładam, że serwer WWW lub np. VPN z którego chcecie korzystać za pośrednictwem domeny już jest gotowy do pracy. Oczywiście potrzebne będzie konto na Cloudflare i podpięta do niego domena – ale to chyba oczywiste… ;-)
Tyle teorii czy przygotowań, bierzemy się za „mięcho”, czyli skrypt:
Skrypt Cloudflare DDNS
Skrypt który przygotowałem może wydawać się rozbudowany, ale dzięki temu cała obsługa sprowadza się do modyfikacji kilku parametrów – a „zainteresowani” zawsze mogą wyciągnąć z niego odpowiednie fragmenty…
#!/bin/bash
# --------------------------------------------------
#
# ----- ---- --- Cloudflare DDNS --- ---- -----
#
# Code from: https://Webinsider.pl/cloudflare-ddns
#
# Cloudflare API DOC:
# https://www.cloudflare.com/docs/client-api.html
#
# --------------------------------------------------
IP_CONTROL_LAST=0 # 1 - check the latest IP (file $IP_LOG), 0 - always sends the new IP
# Use Your fav IP chceck URL:
IP_CHECK_URL=
# e.g.:
# https://cdn.pryc.eu/add/myip.php
if [ -z "$IP_CHECK_URL" ]
then
echo "IP_CHECK_URL is empty!"
exit 0
else
IP_NOW=`wget -O - -q $IP_CHECK_URL` # Get current IP, if IP_CONTROL_LAST=1
fi
IP_LOG=/boot/last-ip.txt # Last IP LOG file
if [ ! -f $IP_LOG ] && [ "$IP_CONTROL_LAST" = "1" ]
then
sudo touch $IP_LOG
fi
if [ $IP_LOG ] && [ "$IP_CONTROL_LAST" = "1" ]
then
IP_LAST=$(cat $IP_LOG)
fi
CF_API_KEY= #insert here Your API key
CF_EMAIL= #insert here Your e-mail
DOMAIN= #insert here domain name
DOMAIN_RECORD_NAME= #insert here domain or subdomain name
CF_DOMAIN_REC_ID= #insert here record ID # First time read it - see below
CF_DOMAIN_READ_REC_ID=1 # 1 - ONLY read domain REC_ID, 0 - controls (changing) IP
CF_PROXY4RECORD=1 # Status of Cloudflare Proxy, 1 = orange cloud, 0 = grey cloud.
if [ -z "$CF_API_KEY" ] || [ -z "$CF_EMAIL" ] || [ -z "$DOMAIN" ] || [ -z "$DOMAIN_RECORD_NAME" ]
then
echo "Check script config!"
exit 0
fi
if [ "CF_DOMAIN_READ_REC_ID" = "0" ] && [ -z "$CF_DOMAIN_REC_ID" ]
then
echo "Check CF_DOMAIN_REC_ID"
exit 0
fi
# --------------------------------------------------
function f_cf_api_rec_load_all() {
curl https://www.cloudflare.com/api_json.html \
-d 'a=rec_load_all' \
-d 'tkn='$CF_API_KEY \
-d 'email='$CF_EMAIL \
-d 'z='$DOMAIN
}
function f_cf_api_rec_edit() {
curl https://www.cloudflare.com/api_json.html \
-d 'a=rec_edit' \
-d 'tkn='$CF_API_KEY \
-d 'email'=$CF_EMAIL \
-d 'z='$DOMAIN \
-d 'id='$CF_DOMAIN_REC_ID \
-d 'type=A' \
-d 'name='$DOMAIN_RECORD_NAME \
-d 'content='$IP_NOW \
-d 'service_mode='$CF_PROXY4RECORD \
-d 'ttl=1'
}
# --------------------------------------------------
if [ "$CF_DOMAIN_READ_REC_ID" = "1" ]
then
echo "Read CF DOMAIN REC_ID..."
f_cf_api_rec_load_all
exit 0
fi
# ----- ----- -----
if [ "$IP_CONTROL_LAST" = "1" ]
then
if [ "$IP_NOW" != "$IP_LAST" ]
then
echo "New IP - changing..."
echo $IP_NOW | sudo tee $IP_LOG > /dev/null
f_cf_api_rec_edit
else
echo "IP is OK"
fi
else
echo "Changing IP..."
echo $IP_NOW | sudo tee $IP_LOG > /dev/null
f_cf_api_rec_edit
fi
# --------------------------------------------------
exit 0
Skrypt możecie skopiować z „listingu” powyżej, lub – chyba bezpieczniej – pobrać z tego adresu. Ew możecie pobrać do bezpośrednio na serwer za pomocą komendy:
wget https://webinsider.pl/add/download/?link=cloudflare_ddns -O /ścieżka/do/zapisania/cloudflare_ddns
Konfiguracja skryptu
Konfiguracja skryptu sprowadza się do zmiany wartości kilku zmiennych:
- IP_CONTROL_LAST – Gdy zmienna ma wartość „1” to po uruchomieniu skryptu następuje połączenie z serwerem w celu sprawdzenia aktualnego adresu IP (IP_NOW), po czym następuje jego porównanie z wcześniej zapisanym (IP_LAST) i dopiero jeśli te 2 wartości są różne – następuje wysłanie nowego adresu (IP_NOW) do Cloudflare. Gdy zmienna ma wartość „0” – adres IP jest wysyłany do Cloudflare przy każdym uruchomieniu skryptu, niezależnie od tego czy od ostatniego uruchomienia został zmieniony.
- IP_CHECK_URL – Tu należy podać adres skryptu/strony wyświetlającej adres IP. W skrypcie są podane przykładowe, ale jeśli macie taką możliwość, to warto użyć własnego pliku. Więcej na ten temat za chwilę…
- IP_NOW – Pobranie „z internetu” aktualnego adresu IP. W skrypcie są podane 2 przykładowe strony z których można pobrać adres IP w „czystej postaci” – możecie też podstawić tu własny adres…
- IP_LOG – Adres (ścieżka) pliku służącego do zapisywania ostatniego adresu IP. Ma szczególne znaczenia gdy zmienna IP_CONTROL_LAST ma wartość „1”.
- IP_LAST – Adres IP pobierany z pliku IP_LOG
- CF_API_KEY – Klucz API Waszego konta w Cloudflare
- CF_EMAIL – E-mail przypisany do Waszego konta w Cloudflare
- DOMAIN – Domena na której skrypt będzie pracował. W przypadku korzystania z subdomen w tym miejscu wpisujecie domenę, nie subdomenę.
- DOMAIN_RECORD_NAME – Nazwa rekordu. W przypadku modyfikacji rekordu A dla domeny będzie to nazwa domeny, w przypadku modyfikowania rekordu A dla subdomeny będzie to nazwa subdomeny.
- CF_DOMAIN_REC_ID – Jedna z ważniejszych zmiennych, dzięki której skrypt i Cloudflare wiedzą który rekord chcemy zmodyfikować. Więcej na ten temat za chwilę…
- CF_DOMAIN_READ_REC_ID – Ustawiamy wartość na „1” gdy chcemy uzyskać CF_DOMAIN_REC_ID. W każdym innym przypadku wartość ustawiamy na „0”. Więcej na ten temat za chwilę…
- CF_PROXY4RECORD – Włączenie (1) lub wyłączenie (0) usługi Cloudflare dla rekordu.
Sprawdzanie aktualnego IP
Wprawdzie możecie skorzystać z adresu podanego w skrypcie:
https://cdn.pryc.eu/add/myip.php
To jeśli macie taką możliwość – warto rozważyć skorzystanie z własnego plik/adresu… Bo zawsze „adres niezależny” może przestać istnieć, czy… A wystarczy na serwerze WWW – oczywiście nie tym z dynamicznym IP na którym działa skrypt – stworzyć plik PHP o takiej zawartości:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
I jego adres ustawić dla zmiennej IP_CHECK_URL.
Odczyt ID wybranego rekordu
By odczytać ID rekordu uzupełniamy wszystkie niezbędne dane – oczywiście poza CF_DOMAIN_REC_ID którego jeszcze nie znamy – i ustawiamy wartość „CF_DOMAIN_READ_REC_ID” na „1”.
Następnie zapisujemy i uruchamiamy skrypt.
Jak konfiguracja nie zawiera żadnych błędów zobaczycie wynik podobny do tego:
To wynik dla domeny z tylko 3 rekordami, więc przy bardziej rozbudowanych konfiguracjach DNS będzie tego więcej – ale tylko wygląda to strasznie… ;-)
To co nas interesuje to pozycja „rec_id” występująca tuż przed „rec_hash” i „zone_name” interesującego nas rekordu.
Wartość z „rec_id” wpisujemy jako wartość zmiennej CF_DOMAIN_REC_ID i ustawiamy „CF_DOMAIN_READ_REC_ID” na „0”.
Kilka regułek „kontrolnych”
W skrypcie znalazło się kilka regułek kontrolnych, którym zadaniem jest sprawdzanie, czy wszystkie niezbędne pola zostały odpowiednio wypełnione/skonfigurowane.
Jeśli coś będzie nie tak – dostaniecie stosowną informację…
Działanie skryptu
Oczywiście skrypt trzeba gdzieś zapisać, ja w przypadku Raspberry Pi wszystkie skrypty trzymam w katalogu:
/boot/bin
który jest „podlinkowany” jako „bin” w katalogu każdego użytkownika, dzięki czemu skrypt można wywołać bez potrzeby wpisywania całej ścieżki.
Dodatkową zaletą trzymania skryptów na partycji „boot” jest to, że jest ona w formacie FAT32, a więc można odczytać i modyfikować znajdujące się na niej pliki właściwie na każdym komputerze, a nawet smartfonie (OTG).
Po wywołaniu skonfigurowanego skryptu – zależnie od konfiguracji – sprawdza on (lub nie) adres IP, i gdy trzeba przesyła odpowiednią komendę do Cloudflare w celu jego aktualizacji:
Może się zdarzyć, że system nie będzie chciał uruchomić pliku – w tym celu należy skorzystać z polecenia:
sudo chmod +x /ścieżka/do/pliku/cloudflare_ddns
Harmonogram (CRON)
Oczywiście naszym celem jest automatyzacja całego procesu, dlatego warto skonfigurować systemowy harmonogram (CRON) do wywoływania skryptu o określonej godzinie, czy co określony przedział czasu.
Z racji tego, że już kiedyś pisałem artykuł poświęcony temu tematowi – odsyłam do niego…
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
jaki radzisz interwal dla crona
To już zależy jak często Ci się zmienia IP – zazwyczaj jest to raz na dobę, w godzinach nocnych… Ale najlepiej zapytać operatora jak to u niego wygląda…
Trzeba też mieć na uwadze, że teoretycznie – również zależy od danego operatora – przy każdym restarcie „pierwszego urządzenia” (zazwyczaj będzie to router) też może być przydzielony nowy IP. Również warto zapytać operatora – lub zrobić mały test… :-)
Zależy też od tego, ile „w razie czego” jesteś w stanie poczekać aż się ew. zaktualizuje IP – gdybyś trafił jeszcze na „stary”.
Jak się zmienia tylko raz dziennie, np o 3 – to CRONa wystarczy ustawić raz an dobę, trochę po 3… Jak się zmienia „różnie i w różnych godzinach” – CRONa trzeba ustawić częściej… I tu kwestia tego, ile ew. wytrzymasz w razie czego czekając na aktualizację IP. ;-)
Ale wydaje mi się, że niezależnie od tego – częściej niż co 5-10 minut nie ma co… A może nawet rzadziej – zwłaszcza że raczej nie stawiasz na dynamicznym IP jakiegoś serwera/usługi o wysokiej dostępności… Wtedy lepiej skorzystać z hostingu lub serwera VPS.
PS. Dziś (2014.09.11 ~07:30) zaktualizowałem trochę skrypt – głównie funkcje „kontrolne” czy konfiguracja jest OK – więc możesz zaktualizować i u siebie…
Zauwazylem ze u mnie ip zmienia sie tylko jak odlacze ruter od pradu i ponownie wlacze. Nawet jak robie programowy restart rutera to ip pozostaje ten sam.
A przy włączonym „non stop” routerze nie zmienia Ci się IP np. raz an dobę? Jak faktycznie tylko przy wyłączeniu i włączeniu routera to skrypt może się uruchamiać relatywnie rzadko – zależy ile ew. wytrzymasz (np. w przypadku zaniku prądu i ponownego uruchomienia routera = nowe IP) bez dostępu do serwera… ;-)
Można też ustawić system tak, by przyjmował komendy shella przez konto Jabbera (XMPP) i za pomocą niego w razie potrzeby wydać ręcznie polecenie uruchomiania skryptu aktualizującego IP w Cloudflare…
mam jakis problem
New IP – changing…
{„request”:{„act”:”rec_edit”},”result”:”error”,”msg”:”You entered '<html>’ which is not a valid IP address.”,”err_code”:”content-moj-rec-id”}curl: (6) Couldn’t resolve host ”
[Patryk robi ciach ;-)]
jest jeszcze duzo znacznikow html, ale nie pokazaly sie w powyzszym komentarzu
Już powinno być OK :-)
Po prostu plik do pobierania IP zwracał w źródle strony dodatkowe informacje, które przetwarzał wget… Dlatego jeśli mamy taką możliwość – warto taki plik umieścić na swoim hostingu – nie zniknie, czy nie zmieni się z czasem… ;-)
juz jest ok
Hej, dokonałem konfiguracji według powyższego opisu. Mam jednak mały problem ( albo może coś źle robię ). Otóż, moja subdomena odpowiada adresem IP cloudflare ( 104.28.22.109 ), jak jednak odpalę skrypt pojawia się w nim aktualny adres IP operatora. Nie mogę się przez to połączyć vpn-em podając swoją nazwę hosta ( właśnie z racji że odpowiada IP cloudflare), dodam że jak podaję publiczny adres IP swojego łącza, to połączenie nawiązywane jest poprawnie. Czy można coś na to poradzić?
Musiałbyś wyłączyć ochronę Cloudflare dla danego rekordu (szara chmurka), bo inaczej wpisując domenę trafiasz do serwera CF, a tam konta VPN raczej nie masz ;-)
Ale:
Pewnie masz ustawiony w DNSach w Cloudflare domyślny rekord CNAME „direct” właśnie dla takich sytuacji, i to przez adres direct.domena łączysz się gdy potrzebujesz pominąć IP Cloudflare, np. dla VPN czy FTP.
Wersja alternatywna – i chyba najlepsze rozwiązanie: Zmień „direct” na coś własnego, np. „vpn” i ustaw/zostaw dla tego rekordu (CNAME) brak ochrony (szara chmurka). Dzięki temu strona WWW będzie schowana za Cloudflare, ale połączenie vpn.domena będzie kierować bezpośrednio na Twoje IP…
Oczywiście powyższe dotyczy sytuacji gdy serwer WWW i VPN działają na tym samym IP. Gdy jest inaczej – różne IP – to po prostu tworzymy oddzielny rekord A dla VPNa i dla niego wyłączamy ochronę Cloudflare.
Dziękuje bardzo. Wszystko działa :)
:-)
coś sie u mnnie ten skrypt wykrzacza.
wszystko bylo dobrze, a teraz otrzymuje taki komunikat:
„result”:”error”,”msg”:”You entered ” which is one of Cloudflare’s IPs. You should enter the IP address of your server.”,”err_code”:
w powyrzszym komentarzu wycielo adres IP, ktiry jest dla mnie zupełnie obcy
Już powinno być Ok – dla hosta gdzie jest skrypt został włączony Cloudflare, a tym samym zwracał IP nie klienta a Cloudflare…
dzieki,
aktualnie nie mam drugiego serwera, ani łącza ze stalym IP.
Spoko, dzięki temu przypomniałem sobie by dodać IP Cloudflare do wykluczeń ;-)
Mam problem. Jak dodaję domenę na stronie Cloudflare to dostaję
„not a registered domain (Code: 1049)”
Jak to mam zrobić? Bo jak uruchamiam ten skrypt to tak samo mam error „Zone does not exist.”
Tzn. co to jest za domena którą mam wpisać w „Add site”? To jest ta moja domena którą chce żeby była dla mojej strony? np. jak chce mieć własną stronę pod adresem mojastrona.pl to w tym „Add site” mam wpisać ten adres nawet jak nie istnieje? Udało mi się założyć własny serwer na Raspberry PI, i widzę tą stronę z poziomu PCta podłączonego do rutera, ale muszę wpisywać adres w postaci X.X.X.X
To jest rozwiązanie dla domen skonfigurowany do działania z usługą Cloudflare, a więc domena musi być zarejestrowana (czasem po rejestracji domeny potrzeba chwili, aż będzie można ją dodać do Cloudflare – muszą się odświeżyć dane u rejestratora), dodana do Cloudflare (wraz z wymaganą konfiguracja – m.in. ustawione DNSy dla domeny na te podane podczas dodawania domeny przez Cloudflare).
Należy też pamiętać, że zależnie m.in. od rejestratora domeny, czy naszego ISP (dostawca internetu, u którego często znajdują się przypisane do łącza internetowego DNSy) zmiana DNSów na te od Cloudflare może zająć nawet 24-48 godzin.
Aha, bo dopiero teraz zrozumiałem, że trzeba zarejestrować domenę co wiąże się z kosztami i dopiero potem można dodać do Cloudflare. Ja próbowałem z noip.com, ale nie udało mi się.
NoIP ma swojego własnego klienta, i do tego Cloudflare nie jest potrzebne, a nawet jak widzisz nie zadziała. Opisane rozwiązanie ma zamienić Cloudflare w taki DDNS (jak np. NoIP) dla zarejestrowanych/własnych domen.
Ale własna domena to nie są obecnie duże sumy – najtańsze to chyba gdzieś w granicach jednego piwka rocznie… ;-)
Zawsze tez możesz spróbować skorzystać z którejś z darmowych domen oferowanych w ramach Freenom (choć nie pamiętam, czy w CF przypadkiem – wzorem Google Apps – nie ma jakiś ograniczeń dla tych domen).
Hehe
Tak się zapaliłem do zrobienia własnego serwera że zapomniałem o najważniejszym. O rejestracji domeny. Ale są gdzieś inne domeny i one są darmowe, ale z jakąś końcówką której nikt nie chce. A właśnie kupiłem router TP-LINK i tam mam już w configu routera wbudowane DDNS z serwisami noip.com, dyn.com, comexe.cn. Ale jeszcze walcze z tym, bo jak ustawiam swój adres z tą końcówką to przekierwouje mnie na błędny adres i wyświetla się strona dostawcy.
Tak, w przypadku większości routerów, nawet tych najtańszych/najprostszych obecnie zazwyczaj jest w standardzie wsparcie dla najpopularniejszych systemów DDNS. Opisane rozwiązanie z Cloudflare jest pewną alternatywą dla tego typu usług, w którym możemy bezpłatnie (oczywiście poza kosztem domeny) korzystać z własnej domeny – często w standardowych serwisach DDNS albo nie ma takiej możliwości, albo jest dostępna w wyższych/płatnych pakietach.
I jeszcze jedno – bo może to być przyczyną Twoich problemów z przekierowaniem na stronę dostawcy – by wszystko działało potrzebujesz publicznego adresu IP (stały nie musi być, w końcu masz DDNS).
Mam taką sytuację: ISP przydziela mi publiczny lecz dynamiczny adres ip, który zmienia się przy zerwaniu sesji. Mam serwer dedykowany do którego tylko ja chcę mieć dostęp (najlepiej po IP). Tu pojawia się pytanie czy powyższy artykuł mogę wykorzystać w swoim przypadku aby dedyk odświeżał sobie adres IP z mojego rutera i umożliwiał mi połączenie?
Raczej to inna sytuacja – w opisywanym przypadku to raczej musiałby być wykorzystany jakiś skrypt, który by sprawdzał adres IP komputera i podstawiał go w odpowiednim miejscu na serwerze. Moim zdaniem szkoda zachodu, w takiej sytuacji lepiej wdrożyć inne mechanizmy zabezpieczające, jak choćby logowanie z wykorzystaniem klucza czy uwierzytelnienie dwuskładnikowe.
hej, próbowałem postmanem ogarnąć te endpointy ale chyba nie istnieją w obecnej wersji – widzę że api jest już v4, mógłbyś rzucić okiem na to ?
albo zasadniczo jak mógłbyś wskazać jakiego endpointa należy użyć – co dokładnie nadpisać – postaram się przepisać Twój skrypt żeby działał z v4 – z góry dzięki :)
Kilka dni temu skrypt w wersji z tego artykułu testowałem, tak samo jak dziś rano – i u mnie on działa nadal. Ale uznałem, że może faktycznie trochę temat odświeżyć i wykorzystać API w nowej wersji (v4). Zapraszam do artykułu „Cloudflare jako usługa Dynamic DNS (Dynamiczny DNS, DDNS) z wykorzystaniem API v4 (nowa wersja skryptu)” :-)
kurde człowieku, jesteś wielki – popołudniu sprawdzę czy działa :)
I jak, testowałeś? Działa? :-)
hej przetestowałem działa wszystko pięknie – powód dla którego nie działało u mnie był banalny i niezwiązany – otóż odpalałem skrypt „sh cloudflare_dns”. Będąc w zsh którego chwile już używam skrypt bashowe uruchamiamy komendą „bash cloudflare_dns”
jeszcze raz dzięki :) teraz myślę czy nie przepuścić tego skryptu przez jenkinsa zamiast crona :)
No właśnie trochę mnie zaskoczyłeś z tym, że skrypt nie działa, bo – tak jak pisałem – kolega dla którego „dawno temu” pisałem go nie pisał nic o jakichś problemach,a z tego co wiem, korzysta z niego cały czas. Zresztą tuż przed napisaniem pierwszej odpowiedzi na Twój komentarz (pierwszy w tej sprawie) sam sprawdziłem, czy wszystko jest OK. W każdym razie i tak od jakiegoś czasu miałem w planach przepisanie go na nową wersję ich API, przy okazji trochę go zmodyfikowałem…
Co do wywoływania (wykonywania) skryptów, to ja zazwyczaj nadaje im atrybut wykonywalności, i umieszczam albo a katalogu „bin” użytkownika, albo globalnie, w katalogu „/usr/local/bin”, dzięki czemu działają jak normalne polecenia, bez potrzeby „baszowania” ich.
Co do „jenkins zamiast crona” się nie wypowiem, bo nie korzystam z Jenkinsa, a z CRONa tak… :-)
Witam,
dziękuję za ciekawy artykuł. Niestety po uważnym wypełnieniu skryptu i jego uruchomieniu otrzumyję komunikat jak poniżej.
„IP_NOW= [mojeIP]
Read CF DOMAIN REC_ID…
This API has been deprecated in favor of API v4, available at https://api.cloudflare.com”
Proszę o infomrację odnośnie błędu.
Dzięki,
To jest archiwalny artykuł i obecnie należy korzystać z nowego API v4: Cloudflare jako usługa Dynamic DNS (Dynamiczny DNS, DDNS) z wykorzystaniem API v4 (nowa wersja skryptu).
W artykule jest informacja i link do nowej wersji artykułu.