Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

🚀 Näin määrität dynaamisen DNS:n Cloudflaren kautta Raspberry Pi:llä

🚀 Näin määrität dynaamisen DNS:n Cloudflaren kautta Raspberry Pi:llä

Kotipalvelimesi Raspberry Pi:llä pyörii 24/7, mutta operaattorisi vaihtaa ulkoisen IP-osoitteen joka päivä. Uuteen osoitteeseen manuaalisesti kolkuttelu on arkeologin hommaa. Ja DynDNS ja No-IP pommittavat sinua sähköposteilla: "kirjaudu kerran kuussa tai poistamme ilmaistilisi käytöstä."

Käy ilmi, että Cloudflare toimii dynaamisena DNS:nä, ilman mainossähköposteja, ilman päivitystiheyden rajoituksia ja ilman kolmannen osapuolen aliverkkotunnuksia. Onko sinulla jo verkkotunnus Cloudflaressa? Sitten tarvitset vain API-tokenin ja bash-skriptin Raspberry Pi:llä. Puolessa tunnissa saat pystyyn järjestelyn, joka päivittää A-tietueen automaattisesti aina IP-osoitteen vaihtuessa.

Ja jos haluat muutakin kuin "päästä konsoliin" ja aiot pystyttää täysiverisen kehityssivuston, vaikkapa WordPressillä, tästä asetelmasta tulee perusta: saat yhteyden palvelimeesi mistä päin maailmaa tahansa siistillä aliverkkotunnuksella kuten home.example.com.

💡 Nopea yleiskatsaus:

  • Vaihe 1: Luo A-tietue Cloudflaren DNS-paneelissa testi-IP:llä 0.0.0.0
  • Vaihe 2: Hanki API-token (ei yleisavainta, tokenit ovat turvallisempia ja kumottavissa yhdellä klikkauksella)
  • Vaihe 3: Suorita bash-skripti, joka kysyy nykyisen IP:n ja työntää sen Cloudflaren API:in
  • Vaihe 4: Aseta cron-työ ja unohda manuaaliset päivitykset ikuisiksi ajoiksi

Mitä tarvitset

  • Verkkotunnus, joka on lisätty Cloudflareen ja jota hallitaan heidän DNS:nsä kautta
  • Raspberry Pi (mikä tahansa malli käy, Pi 3, Pi 4, Pi Zero 2 W), jossa on Raspbian tai Raspberry Pi OS
  • Staattinen paikallinen IP Raspberry Pi:lle (määritettynä käyttöjärjestelmän graafisessa käyttöliittymässä tai reitittimestä)
  • Pääteyhteys Pi:hin SSH:lla tai suoraan

Se, mitä palveluita tarkalleen isännöit Raspberry Pi:llä ja miten ohjaat portit reitittimessä, on tämän oppaan ulkopuolinen aihe. Järjestely toimii samalla tavalla riippumatta siitä, onko kyseessä verkkopalvelin WordPressillä, VNC-yhteys vai valvontakamera.

1. Luo A-tietue kotipalvelimellesi

Valitse aliverkkotunnus, siitä tulee pysyvä sisääntulopisteesi. Itse käytän home, mutta voit valita minkä tahansa: dev, lab, cam.

  • Siirry Cloudflaren hallintapaneeliin ja valitse verkkotunnuksesi
  • Navigoi DNS-välilehdelle
  • Klikkaa Lisää tietue, valitse tyypiksi A
  • Nimi-kenttään syötä aliverkkotunnus (esimerkiksi home)
  • IPv4-osoite-kenttään määritä 0.0.0.0, väliaikaisesti, jotta voit testata skriptiä myöhemmin
  • Jätä Välityspalvelimen tila pois päältä (harmaa pilvi), välimuistia ja välityspalvelinta ei tarvita DDNS:lle
A-tietue kotiosoite testi-IP:llä 0.0.0.0 Cloudflare DNS:ssä

Tietue on valmis. Hankitaan nyt API-käyttöavain.

2. Hanki Cloudflaren API-token

Aiemmin kaikki oppaat ehdottivat yleistä API-avainta, joka antaa täydet oikeudet kaikkiin tilin verkkotunnuksiin. Tämä on vaarallista: jos avain vuotaa, kaikki vuotaa. Nyt Cloudflare suosittelee API-tokeneita, joissa on tarkat käyttöoikeudet. Token voidaan rajata tiettyyn verkkotunnukseen ja toimenpiteeseen, ja vaaratilanteessa sen voi kumota yhdellä klikkauksella.

  • Cloudflaren hallintapaneelissa siirry kohtaan: Oma profiiliAPI-tokenit
  • Klikkaa Luo token
  • Valitse Muokkaa vyöhykkeen DNS:ää -pohja (tai luo mukautettu)
  • Vyöhykeresurssit-osiossa määritä se tietty verkkotunnus, jolle olet määrittämässä DDNS:ää
  • Klikkaa Jatka yhteenvetoonLuo token
  • Kopioi token, se näytetään vain kerran

Token näyttää pitkältä merkkijonolta, joka alkaa cfut_. Säilytä se turvallisessa paikassa, Raspberry Pi:n skripti tarvitsee sitä hetken kuluttua.

3. Automaattinen päivitysskripti Raspberry Pi:llä

Yhdistä Raspberry Pi:hin SSH:lla tai avaa pääte. Luodaan kansio skriptille:

1mkdir -p ~/cf && cd ~/cf

Sitten itse skripti. Luo tiedosto cloudflare-ddns.sh:

1nano ~/cf/cloudflare-ddns.sh

Kopioi siihen seuraava koodi:

1#!/bin/bash
2
3 ## Settings (replace with yours)
4AUTH_EMAIL="[email protected]"
5API_TOKEN="cfut_your_token"
6ZONE_NAME="example.com"
7RECORD_NAME="home.example.com"
8
9 ## Get current public IP
10CURRENT_IP=$(curl -s https://api.ipify.org)
11
12 ## Get Zone ID
13ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" \
14 -H "Authorization: Bearer $API_TOKEN" \
15 -H "Content-Type: application/json" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4)
16
17 ## Get Record ID and current record IP
18RECORD=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME" \
19 -H "Authorization: Bearer $API_TOKEN" \
20 -H "Content-Type: application/json")
21
22RECORD_ID=$(echo "$RECORD" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4)
23DNS_IP=$(echo "$RECORD" | grep -o '"content":"[^"]*"' | head -1 | cut -d'"' -f4)
24
25 ## Update record if IP changed
26if [ "$CURRENT_IP" != "$DNS_IP" ]; then
27 UPDATE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
28 -H "Authorization: Bearer $API_TOKEN" \
29 -H "Content-Type: application/json" \
30 --data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120}")
31
32 echo "$(date): IP changed from $DNS_IP to $CURRENT_IP — updated" >> ~/cf/cloudflare-ddns.log
33else
34 echo "$(date): IP unchanged ($CURRENT_IP)" >> ~/cf/cloudflare-ddns.log
35fi

Korvaa "Settings"-lohkon neljä muuttujaa omilla arvoillasi. Sähköposti, sama jolla kirjaudut Cloudflareen. Token, se jonka kopioit vaiheessa 2. Zone name, verkkotunnuksesi ilman http://-alkua. Record name, koko aliverkkotunnus.

Tallenna tiedosto (Ctrl+O, Enter, Ctrl+X nanossa) ja tee siitä suoritettava:

1chmod +x ~/cf/cloudflare-ddns.sh

Aja manuaalisesti tarkistaaksesi:

1~/cf/cloudflare-ddns.sh

Jos kaikki on määritetty oikein, mene Cloudflaren DNS-paneeliin, A-tietueen IP-osoitteen pitäisi vaihtua 0.0.0.0:sta oikeaksi julkiseksi IP-osoitteeksesi. Loki kirjoitetaan tiedostoon ~/cf/cloudflare-ddns.log, tarkista sieltä jos jokin meni pieleen.

4. Automaatio cronilla

Manuaalinen ajo on vain testausta varten. Tästä eteenpäin cron hoitaa homman.

1crontab -e

Jos järjestelmä kysyy editorin valintaa, valitse nano (yleensä numero 2, se on yksinkertaisin). Lisää rivi tiedoston loppuun:

10 */6 * * * /bin/bash /home/pi/cf/cloudflare-ddns.sh

Tämä merkintä ajaa skriptin 6 tunnin välein. Vaikka operaattori vaihtaisi IP-osoitteen vain muutaman kuukauden välein, kuuden tunnin ikkuna on kohtuullinen kompromissi ajantasaisuuden ja API-kuorman välillä.

Jos haluat useammin, korvaa merkinnällä */30 * * * * (30 minuutin välein). Mutta muista: Cloudflare API:n ilmaisraja on 1200 pyyntöä minuutissa, joten edes minuutin välein tehtävät kutsut eivät ole ongelma yhdelle verkkotunnukselle.

Tallenna (Ctrl+X, Y, Enter). Cron poimii muutokset automaattisesti, palvelua ei tarvitse käynnistää uudelleen. Apua tähtien tulkintaan osoitteessa crontab.guru.

Lyhyt video-opas samasta aiheesta NetworkChuckilta, jossa demonstroidaan oikealla Raspberry Pi:llä ja selitetään jokainen vaihe:

Mitä tehdä, jos skripti ei löytänyt Zone ID:tä tai Record ID:tä

Joskus API ei palauta tunnisteita automaattisesti, varsinkaan jos tilillä on monta verkkotunnusta tai samannimistä tietuetta. Silloin hae ne manuaalisesti:

  • Mene Cloudflaren hallintapaneeliin, valitse verkkotunnus, DNS-välilehti
  • Avaa selaimen kehittäjätyökalut (F12Network-välilehti → XHR-alavälilehti)
  • Klikkaa A-tietueesi vieressä olevaa pilvikuvaketta, verkkopaneeliin ilmestyy pyyntö API:in
  • Klikkaa sitä hiiren kakkospainikkeella → CopyCopy link address (Chrome) tai Copy URL (Firefox)
  • Kopioidusta linkistä löydät zones/-kohdan jälkeisen osan, se on Zone ID, ja dns_records/-kohdan jälkeisen osan, se on Record ID

Korvaa ne skriptin ZONE_ID- ja RECORD_ID-muuttujiin, niin kaikki toimii. Varmista, että DNS-paneelin pilvi on harmaa (proxy pois päältä): Cloudflaren ei pidä välimuistittaa IP-osoitetta DDNS:ää varten.

⁉️🤔 Usein kysytyt kysymykset

Onko pakko käyttää API-tokenia globaalin avaimen sijaan?

Globaali avain toimii edelleen, mutta token on moderni ja turvallinen vaihtoehto. Tokenin voi rajata yhteen verkkotunnukseen ja DNS-muokkausoikeuksiin. Globaali avain antaa pääsyn koko tiliin. Jos skripti tai Pi vaarantuu, kumoat tokenin helposti, kun taas avain pitäisi vaihtaa kaikkialle.

Miten tämä lähestymistapa eroaa DuckDNS:stä tai No-IP:stä?

Kolmannen osapuolen DDNS-palvelut antavat kolmannen tason aliverkkotunnuksen, kuten myhome.duckdns.org. Cloudflare-lähestymistapa käyttää omaa verkkotunnustasi (home.example.com), tämä näyttää ammattimaisemmalta, ei ole riippuvainen jonkun toisen palvelusta eikä vaadi kuukausittaista kirjautumista aktiivisuuden vahvistamiseksi. Lisäksi saat käyttöösi koko Cloudflaren ekosysteemin: DDoS-suojauksen, SSL-varmenteet, palomuurisäännöt.

Täytyykö reitittimeen avata portteja?

Kyllä, jotta Raspberry Pi:hin pääsee internetistä. DDNS varmistaa vain, että verkkotunnus osoittaa aina nykyiseen IP-osoitteeseen. Mutta jotta liikenne siitä IP-osoitteesta pääsee Pi:lle, sinun on määritettävä reitittimeen porttiohjaus tarvittaville porteille (22 SSH:lle, 80/443 webille ja niin edelleen).

Mitä tehdä, jos Raspberry Pi on operaattorin NATin takana?

Jotkut operaattorit käyttävät Carrier-Grade NATia (CGNAT), jolloin sinulla ei ole omaa julkista IP-osoitetta eikä DDNS auta. Ratkaisu: pyydä operaattorilta valkoinen IP-osoite (usein ilmainen pyynnöstä) tai käytä Cloudflare Tunnel -palvelua, joka luo salatun kanavan Pi:ltä Cloudflareen ilman porttiohjausta.

Paljonko tämä ratkaisu maksaa?

Ei mitään. Cloudflare DNS on ilmainen rajattomille A-tietueille. Raspberry Pi:n ostit jo. Pi 3/4:n virrankulutus kuormitettuna on noin 3-5 W, vuodessa se on karkeasti 250-400 dollaria.

Voinko päivittää useita aliverkkotunnuksia?

Kyllä, kopioi skriptissä RECORD_NAME- ja DNS_IP-lohkot jokaiselle aliverkkotunnukselle tai kääri logiikka silmukkaan, joka käy läpi nimien taulukon.

Dynaaminen DNS Cloudflaressa: mitä asetat vuonna 2026

Cloudflare API:n ja cronin yhdistelmä on selvinnyt useista Raspberry Pi -sukupolvista eikä ole menettänyt ajankohtaisuuttaan. Saat oman alidomainin, et ole riippuvainen kolmannen osapuolen DDNS-palveluista etkä maksa senttiäkään.

Jos haluat mennä pidemmälle, tutustu valmiisiin Docker-imageihin: oznu/cloudflare-ddns päivittää IP:n 5 minuutin välein ja konfiguroidaan ympäristömuuttujilla. Pythonin ystäville on tarjolla aribasadme/rpi-cloudflare-ddns, joka on räätälöity nimenomaan Raspberry Pi:lle.

Tärkein asia, jonka teit tänään: Raspberry Pi on nyt tavoitettavissa mistä päin maailmaa tahansa pysyvällä osoitteella. Ja tämä on perusta mille tahansa: WordPress-kehityspalvelimesta omaan pilvitallennukseen.

🔗 Cloudflare DNS API -dokumentaatio