Einleitung

Heute möchten wir einen einfachen Cloudflare Tunnel einrichten, um interne Dienste sicher hinter einer Firewall zu betreiben, ohne Ports im Internet freizugeben. Dafür benötigen wir selbstverständlich einen Cloudflare-Account und eine Domain, die bei Cloudflare konfiguriert ist.

Ein Cloudflare Tunnel ist eine Technologie, die es ermöglicht, private Netzwerke sicher mit dem Cloudflare-Netzwerk zu verbinden. Dies geschieht, indem der Datenverkehr von internen Diensten durch verschlüsselte Verbindungen zu Cloudflare-Servern geroutet wird. Dadurch können interne Dienste sicher und zuverlässig über das Internet erreichbar gemacht werden, ohne dass dafür Portweiterleitungen in der Firewall erforderlich sind. Dies erhöht die Sicherheit und schützt interne Ressourcen vor direkten externen Zugriffen.

Einen Tunnel erstellen

Wir loggen uns in unser Cloudflare-Dashboard ein und erstellen unter Zero Trust -> Access -> Tunnels -> Create a tunnel einen neuen Tunnel.

Jetzt vergeben wir einen Namen und klicken auf Save tunnel.

Nun kopieren wir uns den Tunnel Token:

screen-1-token

Im nächsten Schritt installieren wir einen Connector. Die Pazdzewicz IT hat dafür einen eigenen optimierten Docker-Container entwickelt.

Connector Installieren

Jetzt melden wir uns auf einem Linux-Server mit vorinstalliertem Docker an und klonen das Repository:

git clone git@gitlab.com:pazdzewicz_docker/cloudflared.git
cd cloudflared

Um den Connector verfügbar zu machen benötigen wir nun das Connector Token aus dem vorherigen Schritt und fügen diesen in unsere .env Datei ein:

cp .env.template .env
nano .env
CLOUDFLARE_TOKEN="<Tunnel Token>"

Anschließend können wir den Tunnel mittels docker-compose starten:

docker-compose pull
docker-compose up -d

Verfügbarkeit überprüfen

In der Übersicht der Tunnels überprüfen wir nun ob der Tunnel HEALTHY ist:

screen-2-tunnels

Routen einrichten

Nun klicken wir auf den Tunnel Namen und anschließend auf Configure. Unter Public Hostname -> Add a plublic hostname können wir nun eine öffentliche Subdomain mit einem internen Service verbinden. In diesem Beispiel werden wir unseren internen Entwicklungsserver unter dev.pazdzewicz.de auf der IP 192.168.88.5 verfügbar machen.

screen-3-hostname

Mit Save hostname können wir nun den Hostnamen abspeichern.

Nach dem aufrufen von https://dev.pazdzewicz.de im Web-Browser sollten wir unsere Seite sehen:

screen-4-server

Somit ist unser Tunnel nun eingerichtet!

borat-success