Aufgrund von Einschränkungen seitens des Internetproviders wie DSL Light (CGNAT) oder Mangels Zugriff auf die Firewall kann es hilfreich sein auf das sogenannte Argo Tunnel Angebot von Cloudflare zurückzugreifen.
Dieses ist in der Grundausstattung kostenfrei und ermöglicht auf einfache Weise eine Bereitstellung von Diensten im Internet.
Voraussetzung ist eine eigene Domain und der Wille sowie die technische Möglichkeit, die Nameserver (NS) auf das Angebot von Cloudflare umzustellen.
Nach der Registrierung auf der Cloudflare Webseite kann über den Punkt Add Site die eigene Domain hinterlegt werden.
Etwas versteckt findet sich im darauffolgenden Schritt die Option zur kostenfreien Nutzung.
Daraufhin findet seitens Cloudflare eine Überprüfung vorhandener DNS Einträge statt und bei Bedarf können diese übernommen oder über den Punkt Edit bearbeitet oder gelöscht werden.
Die zu definierenden DNS NS Records werden im nächsten Schritt angezeigt und auf seitens des Anbieters, bei dem die Domain verwaltet werden kann, müssen die entsprechenden Einträge angepasst werden.
Erst nachdem die Änderungen aktiv sind, kann mit der Einrichtung des Tunnels begonnen werden. Sollte dies noch nicht der Fall sein, werden die Domains in der Übersicht im Status Pending angezeigt.
Standardmässig versucht Cloudflare bereits bestehende DNS-Records zu übernehmen. Daher müssen alle Einträge in der DNS-Verwaltung von Cloudflare entfernt werden, bevor der Tunnel erstellt werden kann.
Zum Aufbau des Tunnels kommt auf dem Zielsystem die Software cloudflared zum Einsatz, welche für unterschiedliche Plattformen und Distributionen bereitgestellt wird
Auf einem Debian System kann dazu das entsprechende .deb Paket für die passende Architektur gewählt werden, welches nach dem Download mittels sudo dpkg -i /pfad/zum/Paket.deb installiert werden kann.
Nach der Installation erfolgt die Anmeldung an Cloudflare mit folgendem Befehl:
cloudflared tunnel login
Ausgegeben wird eine URL, welche auf einem beliebigen System aufgerufen werden kann, um den Tunnel zu autorisieren.
Die eigentliche Einrichtung des Tunnels kann erst ausgeführt werden, sobald das System berechtigt wurde. Der Name des Tunnels kann dabei beliebig definiert werden, es bietet sich allerdings an einen ähnlichen Namen wie die zu verbindende Domain zu wählen.
cloudflared tunnel create meindomaintunnel
Jeder Tunnel erhält eine eindeutige UUID, die nach der Erstellung ausgegeben wird. Im Folgenden muss diese anstatt MEINE_TUNNEL_ID eingesetzt werden:
cp $HOME/.cloudflared/cert.pem $HOME/.cloudflared/MEINE_TUNNEL_ID.pem
Nun kann das entsprechende systemweite Konfigurationsverzeichnis angelegt werden und eine globale Konfigurationsdatei erstellt werden. Die Parameter müssen dabei an die lokalen Gegebenheiten angepasst werden.
sudo mkdir /etc/cloudflared
sudo vim /etc/cloudflared/config.yml
tunnel: MEINE_TUNNEL_ID
credentials-file: /home/MEIN_BENUTZER/.cloudflared/MEINE_TUNNEL_ID.json
origincertpath: /home/MEIN_BENUTZER/.cloudflared/MEINE_TUNNEL_ID.pem
ingress:
- hostname: meinedomain.tld
service: http://localhost:80
- hostname: www.meinedomain.tld
service: http://localhost:80
- service: http_status:404
Daraufhin können die DNS-Einträge auf den Tunnel angepasst werden:
cloudflared tunnel route dns meindomaintunnel meinedomain.tld
cloudflared tunnel route dns meindomaintunnel www.meinedomain.tld
Den Tunnel aktiviert man mit folgendem Befehl:
cloudflared tunnel run
Um den Dienst beim Systemstart zu aktivieren, kann zunächst der entsprechende Service installiert werden:
cloudflared service install
Starten lässt sich dieser wie folgt:
systemctl start cloudflared
Ein lokal auf Port 80 laufender Webserver sollte jetzt über Cloudfare bei einem Aufruf der Domain erreichbar sein.
Kleiner Hinweis. Der Link zu der Github Seite von cloudflared im Artikel ist fehlerhaft.