Fernzugriff auf den Raspberry Pi via Internet und DuckDNS.org

7 Kommentare Autor: Jürgen (jdo)

Fernzugriff auf den Raspberry Pi bekommst Du 2026 auf zwei Arten: klassisch mit dem kostenlosen DDNS-Dienst DuckDNS.org plus einer Portfreigabe im Router — oder ganz ohne offene Ports mit Tailscale. In diesem Guide zeige ich Dir beide Wege Schritt für Schritt. Hast Du keine fixe IP-Adresse von Deinem Provider (das ist der Normalfall), dann kommt beim klassischen Weg sogenanntes DDNS ins Spiel. Das steht für dynamisches DNS und ist schnell erklärt. Es gibt diverse kostenlose DDNS-Services und einer davon ist DuckDNS.org.

Ich erkläre Dir, warum ich mich für diesen Anbieter entschieden habe und warum ich wegen Let’s Encrypt wechseln musste. Stichwort: DNS TXT Record. Danach schauen wir uns die Alternativen an, die heute für viele der bessere Weg sind: Tailscale, WireGuard und Cloudflare Tunnel.

Werfen wir aber zunächst einen Blick auf eine ganz normale DNS-Abfrage. Die läuft so ab:

DNS-Anfrage einfach dargestellt

So läuft eine DNS-Anfrage ab

Da die IP-Adressen von fast allen ISP (Internet Service Provider) dynamisch vergeben werden, können wir uns nicht wie in der Abfrage oben auf immer die gleiche IP-Adresse verlassen.

Wichtiger Hinweis! Ist Dein Raspberry Pi über das Internet erreichbar, dann ändere auf jeden Fall Dein Passwort! Benutze ein sicheres Passwort und überlege Dir auch die Installation von fail2ban, um Brute-Force-Angriffe abzuschwächen. Machst Du Deinen Raspberry Pi oder einen anderen Rechner öffentlich erreichbar, ist das mit Risiken verbunden! Über die solltest Du Dir im Klaren sein! Jeder offene Port im Router ist eine Angriffsfläche, die rund um die Uhr aus dem gesamten Internet erreichbar ist. Willst Du das nicht — oder hängst Du hinter DS-Lite beziehungsweise CGNAT und kannst gar keine Ports freigeben — dann spring direkt zum Abschnitt über Tailscale weiter unten. Damit bleibt Dein Router komplett zu.

Was ist DDNS?

Das ist einfach erklärt. Du darfst Dir bei einem DDNS-Anbieter eine Subdomain aussuchen. Auf Deinem Raspberry Pi läuft eine Routine, die den DDNS-Anbieter regelmäßig kontaktiert.

Ich habe mir zum Beispiel die Adresse meinbeispiel.duckdns.org reserviert und muss dem DDNS-Anbieter, also duckdns.org, nun sagen, welche IP-Adresse mir der ISP zugewiesen hat. Sobald das hinterlegt ist, werden alle Anfragen an meinbeispiel.duckdns.org an meine temporäre IP-Adresse weitergeleitet.

Port Forwarding im Router

Nun landen die Anfragen also bei meinem Router. Allerdings weiß der Router nicht, was er damit machen soll und verwirft sie in der Regel. Deswegen muss ich dem Router sagen, welcher Port auf welche Maschine intern weitergeleitet werden soll. In meinem Fall ist es Port 443, weil ich https auf meine interne Nextcloud auf dem Raspberry Pi* oder einen anderen internen Server weiterleiten will. Der interne Rechner hat in meinem Fall die IP-Adresse 192.168.100.3.

Port Forwarding im Router

Port Forwarding im Router

Rufe ich also nun die Adresse https://meinbeispiel.duckdns.org/nextcloud/ auf, dann lande ich im Bild oben auf der Nextcloud-Installation des internen Rechners mit der IP-Adresse 192.168.100.3.

Willst Du auf Deinem Raspberry Pi oder eine andere Linux-Maschine via SSH zugreifen, dann musst Du per Standard Port 22 auf die entsprechende Maschine weiterleiten.

Hinweis: Ich habe die DDNS Domain in meinem Pi-hole unter DNS als Local domain name hinterlegt und kann nun auch aus dem LAN auf die Domain zugreifen. Da gibt es mehrere Methoden und auch in einigen Routern kannst Du das konfigurieren. Ich wollte es nur ansprechen, weil es nicht selbstverständlich ist, dass Du aus dem LAN auch auf die Domain Zugriff hast. Da kann es zu komischen Phänomenen kommen, wenn Anfragen nach außen und dann über den Router wieder nach innen geleitet werden sollen.

Bei DuckDNS.org muss man sich anmelden

Was Datenschützer nun anprangern könnten: Bei Duck DNS musst Du Dich anmelden. Derzeit kannst Du Dich via X (Twitter), GitHub oder Google anmelden / registrieren. Der Login via reddit wurde laut Anbieter aus rechtlichen Gründen eingestellt und der Persona-Button ist nur noch ein Relikt — Mozilla hat den Dienst schon 2016 beerdigt.

Weiterhin wird DuckDNS.org auf AWS gehostet. Auch da könnten einige die Nase rümpfen. Ich sehe das in diesem Fall etwas entspannter, weil irgendwo muss der Service ja gehostet sein. Ich benutze den Service schon länger und muss sagen, dass er mich noch nie im Stich gelassen hat. Er funktioniert zuverlässig und ich habe keinen Grund zur Annahme, dass meine Daten irgendwie missbraucht werden. Muss aber jeder für sich entscheiden, Du kannst Dir ja die Datenschutzrichtlinie des Anbieters durchlesen. Klar sollte Dir schon sein, dass der Anbieter die IP-Adresse speichern muss, um den Service anbieten zu können.

DuckDNS.org bietet mehrere Möglichkeiten, sich anzumelden

DuckDNS.org bietet mehrere Möglichkeiten, sich anzumelden

Sobald Du angemeldet bist, bekommst Du zwei Bereiche zu Gesicht. Oben befinden sich Deine Konto-Informationen und auch der Token, den Du später wieder brauchst. Weiter unten ist noch ein Bereich, bei dem Du bis zu 5 Domains anlegen darfst. Das ist ganz praktisch, solltest Du an mehreren Stellen Maschinen haben, die Du via DDNS erreichen möchtest oder musst. Vielleicht steht ja irgendwo ein Raspberry Pi mit einem Sense Hat, der Dich über Wetterdaten auf dem Laufenden hält.

Duck DNS auf dem Raspberry Pi oder unter Linux einrichten

Das Schöne an Duck DNS ist, dass Du keinen speziellen DDNS Client brauchst, um die IP-Adresse zu aktualisieren. Es funktioniert über einen Web-Aufruf und funktioniert bequem über curl und einen Cronjob. An dieser Prozedur hat sich seit Jahren nichts geändert — die folgenden Schritte entsprechen der offiziellen Anleitung (Linux Cron), Stand Juli 2026.

Die Entwickler stellen Anleitungen für viele Systeme zur Verfügung — von Linux über macOS und Windows bis zu diversen Routern. Du wählst einfach Deine Subdomain aus und klickst dann auf das System, für das Du den DDNS Service einrichten möchtest.

DuckDNS.org auf einem Raspberry Pi einrichten

DuckDNS.org auf einem Raspberry Pi einrichten

Im Endeffekt ist die Prozedur sehr einfach. Öffne eine URL, die Deinen Token und Deine Subdomain enthält und die IP-Adresse aktualisiert sich. Auf einem Raspberry Pi oder einem anderen Linux-System erstellst Du am besten einen Ordner und eine Datei mit dem relevanten Befehl:

mkdir duckdns

cd duckdns

vi duck.sh

Taugt Dir vi nicht, dann nimm nano oder einen anderen Text-Editor. Dort hinterlegst Du folgende Zeile:

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

Folgst Du einer Anleitung wie oben im Screenshot zu sehen, sind die Werte bereits richtig hinterlegt. Du musst also wirklich nur kopieren und einfügen. Im Anschluss machst Du die Datei ausführbar:

chmod 700 duck.sh

Nun richtest Du den Cronjob ein, der alle 5 Minuten laufen soll. Du kannst das auch weniger oder mehr Zeit zwischen den Aufrufen lassen. Der Cronjob muss übrigens nicht als root laufen!

crontab -e

Füge am Ende der Datei diese Zeile ein:

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

Ich persönlich mag das mit der Tilde nicht und gebe eigentlich immer komplette Pfade ein. Also zum Beispiel:

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

Es funktioniert in dem Fall aber beides.

Datei manuell testen

Rufst Du die Datei manuell auf, wird die IP-Adresse sofort erneuert.

./duck.sh

Die Ausgabe ist wenig aufschlussreich, aber das kleine Skript erzeugt eine Datei, die sich duck.log nennt. Ist die Anfrage erfolgreich, steht OK drin. Ist etwas schiefgelaufen, dann ist sie mit KO gefüllt.

Wurde die IP-Adresse bei Duck DNS erfolgreich aktualisiert, erreichst Du Dein Netzwerk nun von außen über die Subdomain. Testen kannst Du das gut, indem Du die mobilen Daten auf Deinem Smartphone nutzt und einfach einen ping auf die Domain absetzt. Gibt ja genügend Tools dafür.

DuckDNS.org unterstützt DNS TXT Records

Die Unterstützung von DNS TXT Records ist ein weiterer Grund, warum ich duckdns.org mag. Die Erneuerung meines Let’s-Encrypt-Zertifikats bei meinem alten DDNS hat nicht mehr funktioniert, weil ein Token nicht per http erreichbar ist. Mein interner Server leitet alle Anfragen direkt auf https um und ich will ihn auch nicht öffnen. Die Fehlermeldung sieht so aus:

Kann Zertifikat nicht erneuern

Kann Zertifikat nicht erneuern

Nach ein bisschen Recherche stellte sich heraus, dass ich nicht der einzige bin, der das Problem hat. Ich habe sogar ausprobiert, das über Port 80 und http zu machen, aber auch das scheiterte. Grund ist wohl, dass man bei Let’s Encrypt nun beweisen muss, dass einem die Domain auch wirklich gehört.

Eine Möglichkeit ist, das über einen sogenannten DNS TXT Record zu machen. Dazu muss ich aber Certbot anweisen, die Challenge via DNS durchzuführen. Das sieht bei mir so aus:

certbot -d <MeineDomain>.duckdns.org --manual --preferred-challenges dns certonly

Damit bekommst Du eine Ausgabe wie die Folgende:

Wert für den DNS TXT Record

Wert für den DNS TXT Record

Wichtig ist nun der Wert für den DNS TXT Record. Trage das nun bei duckdns.org mit einem Link wie diesem ein. Ersetze dafür die Werte in <> und lasse die Klammern weg!

https://www.duckdns.org/update?domains=<MeineDomain>.duckdns.org&token=<MeinDuckDNSToken>&txt=<WertVonOben>

 Die URL kannst Du einfach im Browser aufrufen und solltest dann ein OK bekommen.

DNS TXT Record bei duckdns.org hinterlegt

DNS TXT Record bei duckdns.org hinterlegt

Nun kannst Du Dein Zertifikat wie gewohnt erneuern und auch über einen Cronjob automatisch erneuern lassen. Es war zwar etwas Arbeit, meine Nextcloud Clients auf die neue DDNS Domain umzustellen, aber dafür bekomme ich wieder ein frisches Zertifikat.

Alternativen 2026: Fernzugriff ohne offene Ports

Seit der ersten Version dieses Artikels hat sich einiges getan. DuckDNS plus Portfreigabe funktioniert nach wie vor — aber wer heute neu anfängt, sollte sich zuerst die folgenden Optionen anschauen. Alle drei kommen ohne Portfreigabe im Router aus beziehungsweise lösen das Problem eleganter, und alle drei funktionieren auch hinter DS-Lite / CGNAT, wo klassisches Port Forwarding gar nicht erst möglich ist.

Tailscale: der heute einfachste Weg

Tailscale ist ein Mesh-VPN auf WireGuard-Basis. Alle Deine Geräte — Raspberry Pi, Laptop, Smartphone — landen in einem privaten Netz und erreichen sich gegenseitig über feste interne IP-Adressen (100.x.y.z), egal wo sie gerade sind. Kein Port Forwarding, kein DDNS, keine öffentlich erreichbare Angriffsfläche. Für den Privatgebrauch ist der Personal-Plan kostenlos (bis zu 6 Benutzer, unbegrenzt viele Geräte).

Die Einrichtung auf dem Raspberry Pi dauert keine zwei Minuten und folgt der offiziellen Linux-Anleitung:

curl -fsSL https://tailscale.com/install.sh | sh

Danach startest Du den Client und meldest Dein Gerät an:

sudo tailscale up

Der Befehl gibt Dir eine URL aus, die Du im Browser öffnest, um Dich anzumelden (Google-, GitHub-, Microsoft- oder Apple-Konto beziehungsweise Passkey). Danach ist der Pi Teil Deines Tailnets. Seine interne IP-Adresse zeigt Dir:

tailscale ip -4

Installierst Du die Tailscale-App nun auch auf Deinem Smartphone oder Laptop und meldest Dich mit demselben Konto an, erreichst Du den Pi von überall — zum Beispiel per SSH:

ssh [email protected]

Mit aktiviertem MagicDNS geht das auch bequem über den Hostnamen. Optional kannst Du Tailscale SSH aktivieren, dann übernimmt Tailscale gleich die komplette SSH-Authentifizierung:

sudo tailscale set --ssh

Der Kompromiss: Du vertraust einem Anbieter, dessen Koordinierungsserver Deine Geräte vermittelt (der Datenverkehr selbst läuft Ende-zu-Ende-verschlüsselt zwischen Deinen Geräten). Und Deine Dienste sind nur aus dem Tailnet erreichbar, nicht öffentlich — für den Fernzugriff auf den eigenen Pi ist genau das aber der Sicherheitsgewinn.

WireGuard selbst hosten

Willst Du keinen Vermittler, kannst Du mit PiVPN in wenigen Minuten einen eigenen WireGuard-Server auf dem Raspberry Pi aufsetzen (curl -L https://install.pivpn.io | bash). Der klassische Selbstbau: alles bleibt in Deiner Hand. Dafür brauchst Du weiterhin eine Portfreigabe (Standard: UDP 51820) und eine DDNS-Adresse wie die von DuckDNS — beide Themen aus diesem Artikel bleiben hier also relevant. Ein einzelner offener UDP-Port für WireGuard ist allerdings deutlich unkritischer als ein offener SSH- oder HTTPS-Port, weil WireGuard auf unauthentifizierte Pakete schlicht nicht antwortet. Hinter DS-Lite/CGNAT fällt diese Option ohne Umwege aus.

Cloudflare Tunnel

Willst Du einen Dienst wie Nextcloud öffentlich erreichbar machen (also auch für Leute ohne VPN-Client), ist Cloudflare Tunnel eine Alternative. Der Daemon cloudflared auf dem Pi baut eine ausgehende Verbindung zum Cloudflare-Netz auf — eingehende Ports bleiben komplett zu, Deine IP-Adresse bleibt privat. Der Tunnel selbst ist kostenlos, Voraussetzung ist aber eine eigene Domain, deren DNS über Cloudflare läuft. Dafür entfällt DDNS komplett und HTTPS-Zertifikate übernimmt Cloudflare gleich mit. Der Preis: Dein Traffic läuft durch die Infrastruktur eines US-Anbieters.

Als VPN-Eigenbau nutzen

Hier ist noch eine Idee. Hast Du Fernzugriff auf Deinen Raspberry Pi via Port 22, könntest Du damit auch Dein eigenes VPN basteln. Mit Android würde das zum Beispiel über Ki4a funktionieren. Hast Du eine Linux-Maschine, wäre sshuttle ein VPN für Arme. Klar funktioniert auch SSH-Tunnel, den Du dann über einen SOCKS Proxy nutzt. Heute würde ich für diesen Zweck zwar eher zu Tailscale oder WireGuard greifen, aber die Methode funktioniert weiterhin und braucht null zusätzliche Software auf dem Pi. Hier eine Kurzanleitung, wie das funktionieren würde.

Erstelle zunächst einen Tunnel von Deinem Client wie zum Beispiel:

ssh -D 8234 -f -C -q -N <benutzername>@<MeineDomain>.duckdns.org

Hier noch eine kurze Erklärung der Schalter:

  • Hinter -D steht der Port, den Du später für die SOCKS-Konfiguration nimmst. Du darfst eine Zahl zwischen 1025 und 65536 wählen. Das ist der Port für die lokale Maschine. Der SSH-Zugriff auf Deinen Pi erfolgt per Standard über Port 22, den Du im Router weiterleiten musst.
  • -f schiebt den Prozess in den Hintergrund. Also die Kommandozeile wird wieder freigegeben und Du musst sie nicht offen halten.
  • Durch -C werden die Daten vor dem Verschicken komprimiert.
  • Das -q lässt die Software weniger geschwätzig sein (quiet).
  • -N teilt SSH mit, dass nach dem Etablieren des Tunnels kein Befehl geschickt wird. Willst Du wie in meinem Fall nur ein Port Forwarding durchführen, ist das genau, was wir wollen.

Du findest weitere Informationen zu den Schaltern in der Manpage von SSH: man ssh.

Firefox würdest Du dann zum Beispiel so konfigurieren.

Eigenen Proxy für Firefox nutzen

Eigenen Proxy für Firefox nutzen

Damit benutzt Du die Internet-Verbindung Deines ISPs zu Hause. Das ist ganz in Ordnung, aber Du bist an den Standort oder die IP-Adresse gebunden, die Deinem Router zugewiesen wird. Geoblocking kannst Du dann nur für das Land umgehen, in dem Dein Raspberry Pi steht.

Ja, ich gebe zu, dass diese Methode nur für technisch versierte Leute und nicht für Neulinge attraktiv ist. Sie funktioniert aber.

Nicht hübsch, funktioniert aber

Sehr schick sieht DuckDNS.org nicht aus, das muss man zugeben. Dafür funktioniert der Service hervorragend und hat mich in all den Jahren nicht im Stich gelassen.

Du musst keinen zusätzlichen Client installieren und der DDNS Service ist außerdem kostenlos. Die Unterstützung für DNS TXT Records schätze ich außerdem sehr. Mein Zertifikat von Let’s Encrypt aktualisiert sich damit automatisch und ich muss nicht mit einem selbst signierten Zertifikat hantieren.

Gibt es Alternativen zu DuckDNS.org?

Bei den reinen DDNS-Diensten: oh ja, jede Menge. Einige kosten Geld, die anderen sammeln natürlich ebenfalls gewisse Daten wie zum Beispiel die IP-Adresse. Wieder andere Anbieter setzen die Installation einer zusätzlichen Software wie zum Beispiel ddclient voraus.

Ich habe mir schon mal Gedanken gemacht, meinen eigenen Server zu benutzen. Dorthin könnte ich meine externe IP-Adresse ja einfach übermitteln. Derzeit ist es mir den Aufwand aber nicht wert, einen eigenen Service dafür zu nutzen. DuckDNS.org funktioniert und bis auf die DNS-Anfragen laufen ja keinerlei Daten drüber. Somit ist das in Ordnung, wie es derzeit ist.

Die spannenderen Alternativen sind heute aber ohnehin nicht andere DDNS-Anbieter, sondern die oben beschriebenen Wege ohne offene Ports — allen voran Tailscale. Wenn es weitere gute Alternativen gibt, bin ich natürlich immer für Tipps dankbar.

Nette Pi-Konstellation

Suchst Du ein VPN für den Raspberry Pi? NordVPN* bietet einen Client, der mit Raspberry Pi OS (32-Bit / 64-Bit) und Ubuntu für Raspberry Pi (64-Bit) funktioniert.

Aktualisiert am 17.07.2026 von Henry. Fakten geprüft.




 Alle Kommentare als Feed abonnieren

7 Kommentare zu “Fernzugriff auf den Raspberry Pi via Internet und DuckDNS.org”

  1. Patrick says:

    Sehr schöne Dokumentation eines der besten dynamischen DNS Anbieters weit und breit.
    Den Datenschutz hattest du ja bereits angesprochen, finde ich bei DuckDNS aber minimal invasiv. Ohne Protokollierung der IP funktioniert es eben nicht. Etwas umständlicher finde ich dagegen, daß man sich zwangsläufig durch einen Drittdienst wie Twitter oder Google authentifizieren muß. Dadurch entledigt sich der Anbieter natürlich eines großen Problems, finde es trotzdem etwas unschön.

    • jdo says:

      Da gebe ich Dir völlig Recht. Das ist auch der einzige Punkt, der mir etwas sauer aufgestoßen ist. Allerdings überwiegen die Vorteile so stark, dass ich damit leben kann.

  2. flavius says:

    Mein Lieblings-DNS-Anbieter ist he.net, bzw. dns.he.net. Nicht ganz so bunt, und man muss sich etwas einarbeiten, aber dafür ziemlich flexibel und super zuverlässig. Bieten auch eigene Nameserver, die ziemlich gut sind.

  3. Martin says:

    Sehr guter Artikel. Nur leider funktioniert es so nicht 100%. Darum hier der wichtige Tip: Bei der Anpassung der Rechte für duck.sh unbedingt chmod 755 duck.sh eingeben (und nicht chmod 700). Grund: Default user auf dem Raspberry ist pi. Und mit crontab -e editiert man die crontab von user pi. D.h. duck.sh wird von user pi ausgeführt und der hat mit der Zugriffsberechtigung 700 keine X-ecute Berechtigung!

    • jdo says:

      Quatsch ... legt Anwender pi die Datei duck.sh an, dann mach chmod 700 die Datei für den Anwender pi rwx, also auch ausführbar. Schau bitte mal nach, ob Du da mit den Usern irgendwie durcheinander gekommen bist. Bei mir funktioniert das wie beschrieben einwandfrei und das seit langer Zeit.

  4. Martin says:

    Hallo jdo. Hast recht, ist Quatsch was ich oben geschrieben habe. Wenn man es GENAU so macht wie von dir beschrieben, funktioniert es!

    Vermutlich habe ich duck.sh mit "sudo nano duck.sh" erstellt. Somit war der Besitzer der Datei root und Benutzer pi hatte darum keinen Zugriff.
    Als Neuling mit Raspberry Pi und Linux habe ich viele Befehlsbeispiele aus dem Internet ausprobiert. Diese Beispiele beginnen häufig mit "sudo nano..". "sudo" vor jedem Befehl war vermutlich in meinem Linux Gedächtnis "hardcoded" 🙂

    Verwirrt hat mich als Neuling auch die Tatsache, dass es mehrere crontabs gibt, systemweite und pro user. Somit ist "sudo crontab -e" nicht dasselbe wie "crontab -e". Dazu kann ich diesen Artikel empfehlen: http://raspberry.tips/raspberrypi-einsteiger/cronjob-auf-dem-raspberry-pi-einrichten.

    Also entschuldigt bitte meinen irreführenden Hinweis und macht beim Nachvollziehen der Befehle nicht dieselben Fehler wie ich. Duck DNS läuft bei mir nun zuverlässig (auch ohne chmod 755!) und ich kann den dyn dns Dienst wegen der einfachen Konfiguration jedermann empfehlen.

Antworten