Zum Inhalt

Cloudflare Tunnel

Übersicht

Alle internen Dienste sind über einen Cloudflare Tunnel erreichbar — kein offener Port nach außen nötig. WARP-Routing ist aktiv, d.h. das gesamte Heimnetz ist per Cloudflare WARP VPN erreichbar.

Tunnel: pve-tunnel
Container: LXC 102 (cloudflared, 192.168.178.16) auf Proxmox
Credentials: /root/.cloudflared/7737e28d-0316-4419-a66f-092d0e54abdc.json


Vollständige config.yml

/root/.cloudflared/config.yml:

tunnel: pve-tunnel
credentials-file: /root/.cloudflared/7737e28d-0316-4419-a66f-092d0e54abdc.json
originRequest:
  connectTimeout: 30s
  noTLSVerify: true
  disableChunkedEncoding: true
  keepAliveTimeout: 1h
warp-routing:
  enabled: true
ingress:
  - hostname: ha.diebrocks.com
    service: http://192.168.178.5:8123
  - hostname: pve.diebrocks.com
    service: https://192.168.178.15:8006
    originRequest:
      connectTimeout: 30s
      keepAliveTimeout: 1h
  - hostname: oc.diebrocks.com
    service: http://192.168.178.18
  - hostname: el.diebrocks.com
    service: ssh://192.168.178.19:22
  - hostname: eh.diebrocks.com
    service: ssh://192.168.178.17:22
  - service: http_status:404

Ingress-Übersicht

Hostname Dienst Ziel
ha.diebrocks.com Home Assistant http://192.168.178.5:8123
pve.diebrocks.com Proxmox Web-UI https://192.168.178.15:8006
oc.diebrocks.com OpenCCU (Homematic) http://192.168.178.18
el.diebrocks.com SSH ebusd-lueftung ssh://192.168.178.19:22
eh.diebrocks.com SSH ebusd-heizung ssh://192.168.178.17:22

noTLSVerify: true ist gesetzt, weil Proxmox ein selbstsigniertes Zertifikat verwendet.


DNS-Eintrag anlegen (bei neuem Hostname)

cloudflared tunnel route dns pve-tunnel <hostname>
systemctl restart cloudflared

Windows-Client Setup (SSH via Tunnel)

1. cloudflared installieren

winget install --id Cloudflare.cloudflared -e

2. Wrapper-Script (wegen AAAA-DNS-Problem)

C:\cloudflared\cloudflared-ssh.cmd:

@echo off
set GODEBUG=netdns=cgo
"C:\cloudflared\cloudflared.exe" %*

Warum GODEBUG=netdns=cgo? Lokaler DNS gibt nur AAAA-Records zurück. cloudflared (Go) kann damit nicht umgehen → Wrapper erzwingt Windows-DNS-Resolver.

3. SSH-Config (~/.ssh/config)

Host ebusd-lueftung
  HostName el.diebrocks.com
  User codex
  IdentityFile ~/.ssh/ebusd_lueftung
  ProxyCommand C:/cloudflared/cloudflared-ssh.cmd access ssh --hostname %h
  StrictHostKeyChecking no

Host ebusd-heizung
  HostName eh.diebrocks.com
  User codex
  IdentityFile ~/.ssh/ebusd_lueftung
  ProxyCommand C:/cloudflared/cloudflared-ssh.cmd access ssh --hostname %h
  StrictHostKeyChecking no

4. SSH-Key generieren (Ersteinrichtung)

ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\ebusd_lueftung" -C "ebusd-zugang"
Get-Content "$env:USERPROFILE\.ssh\ebusd_lueftung.pub"
# Public Key auf jeweiligem Server in ~/.ssh/authorized_keys eintragen