DuckDNS: Een Raspberry Pi benaderen vanaf het internet

Met behulp van het wan-ip-adres van je router kun je vanaf het internet toegang krijgen tot je router en alle devices die zijn aangesloten op je netwerk. Hiervoor moet je gebruik maken van portforwarding op je router. Heb je dit goed ingesteld dan kun je een Raspberry Pi zonder enig probleem benaderen vanaf het internet met het wan-ip-adres.

In de meest gevallen wordt het wan-ip-adres van je router dynamisch toegekend door je internet provider. Hierdoor is het mogelijk dat het wan-ip-adres plotseling wijzigt, bijvoorbeeld na een reset van de router of na werkzaamheden aan het netwerk van de provider. Ben je dan niet op de hoogte van het nieuwe ip-adres dan kun je geen verbinding meer maken.

Dit probleem kun je oplossen door gebruik te maken van een dynamische DNS dienst: deze koppelt namelijk een subdomeinnaam als mijnraspberrypi.duckdns.org aan het wan-ip-adres van je router. in plaats van verbinding te maken met het wan-ip-adres gebruik de ingestelde domeinnaam.

Om te voorkomen dat de koppeling wan-ip-adres/subdomeinnaam wordt verbroken, kun je om een bepaald aantal minuten automatisch een update van het wan-ip-adres versturen naar de dynamische DNS waardoor je Raspberry Pi bereikbaar blijft op de domeinnaam.

Er zijn meerdere van deze DDNS diensten beschikbaar op het internet, ben je opzoek naar een gratis en betrouwbare variant dan kun je gebruik maken van duckdns.org.

DuckDNS account aanmaken

Ga naar duckdns.org en maak een nieuw account aan. Nadat dit gedaan kun je een nieuw domain toevoegen aan de duckdns. Belangrijk hierbij is het token dat automatisch wordt gegenereerd. Je kunt maximaal vijf domains toevoegen.

duckdns raspberry pi

DuckDNS activeren

Om er voor te zorgen dathet IP adres dat wordt gekoppeld aan je IP adres altijd up to date is moeten we een script op de Raspberry Pi plaatsen dat dit regelt.

Log in in op de Raspberry Pi en volg de onderstaande stappen:

mkdir duckdns
cd duckdns
nano duck.sh

Plak in het bestand het onderstaande commando:

echo url="https://www.duckdns.org/update?domains=naam&token=code&ip=" | curl -k -o ~/duckdns/duck.log -K -

Vervang naam door de DNS naam die je wilt gebruiken, in dit voorbeeld is dat duckpi, code vervang je door het token wat we eerder hebben gegenereerd. In het geval van het aangemaakt duckpi domein wordt het volledige commando:

echo url="https://www.duckdns.org/update?domains=duckpi&token=10a71c9d-5df8-41f2-97ff-8f5ea5881b11&ip=" | curl -k -o ~/duckdns/duck.log -K -

Sla de wijzigingen op met ctrl + X, y, enter

Geef het duck.sh script de goede rechten:

chmod 700 duck.sh

Hierna voegen we het script toe aan crontab, hierdoor zal iedere 5 minuten het IP adres worden geupdate.

Open crontab:

crontab -e

Voeg onderaan het bestand de volgende regel toe:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Sla de wijzigingen op met ctrl + X, y, enter

Werking testen

Nadat de cronjob is aangemaakt kunnen we de DuckDNS werking gaan testen:

./duck.sh; cat duck.log

Het script update het IP adres op de DuckDNS servers, in het logbestand duck.log zal nu OK verschijnen als alles is goed gegaan, verschijnt KO dan heb je een fout gemaakt in de domein naam of het token.

Wanneer er OK verschijnt dan is je domein naam gereed voor gebruik. Je kunt nu met ping domeinnaam.duckdns.org je router pingen.

ping domeinnaam.duckdns.org

Een portforward instellen

Om bijvoorbeeld toegang vanaf het internet toegang te krijgen tot SSH op je Raspberry Pi zul je een portforwarding moeten instellen naar poort 23 (TCP). De instellingen hiervoor verschillen per router. Op de onderstaande webpagina kun je voor bijn alle routers terugvinden hoe je dit moet instellen:

portforward.com

4 gedachten over “DuckDNS: Een Raspberry Pi benaderen vanaf het internet”

  1. RealVNC connect werkt ook perfect, kom je wel op de GUI van Raspbian maar dit werk ook mooi zonder port forwarding ed te moeten aanzetten op routers ed.
    Heb het nu ook via een ziggo hotspot werken.

    Beantwoorden
  2. Weet niet wat ik fout gedaan heb, maar dit is de output:

    sudo ./duck.sh; cat duck.log
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0Warning: Failed to create the file /root/duckdns/duck.log: No such file or
    Warning: directory
    100 2 0 2 0 0 2 0 –:–:– –:–:– –:–:– 2
    curl: (23) Failed writing body (0 != 2)

    Beantwoorden

Plaats een reactie