Einen Cloudflare Tunnel erstellen
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:
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:
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.
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:
Somit ist unser Tunnel nun eingerichtet!