Zum Inhalt springen

Geräte und ihre Dienste (kh-tunnel)

Der Client kh-tunnel verbindet ein Gerät nach außen mit dem CDN. Darüber machen Sie Dienste aus Ihrem Netz erreichbar – als Website, Minecraft-Server oder offenen Port.

Wofür?

Viele Anschlüsse sind von außen nicht erreichbar: DS-Lite, viele Glasfaser- und Mobilfunk-Tarife teilen sich eine IPv4-Adresse mit anderen. Eine Portfreigabe am Router hilft dann nicht. Mit einem Gerät im CDN baut Ihr Netz die Verbindung selbst nach außen auf – das CDN reicht Besucher hinein. Ihre eigene Adresse bleibt dabei verborgen.

Typisch: NAS-Oberfläche, Home Assistant, eigener Webserver, Spieleserver (TCP), SSH auf einen Raspberry Pi.

Einrichten

  1. Im Portal unter Geräte → „Gerät hinzufügen“: Name und System wählen (Linux/Raspberry Pi, Docker/NAS, Windows, macOS).
  2. Den angezeigten Befehl auf dem Gerät ausführen – der Assistent zeigt live, wann sich der Client angemeldet und mit den Edges verbunden hat. Unter Linux z. B.:
    curl -fsSL https://portal.kernhosting.com/device/install.sh | sudo sh -s -- KH-XXXX-XXXX
  3. Beim Gerät unter Dienste → „Dienst hinzufügen“ drei Fragen beantworten: Was soll erreichbar sein (Website, Minecraft, anderes Programm), wo läuft es (auf diesem Gerät oder einem anderen im Heimnetz, mit Port) und unter welcher Adresse.
  4. Website und Minecraft gehen danach direkt in den Assistenten der Website bzw. des Spielservers – die Verbindung zum Gerät ist dort schon eingetragen, es fehlen nur noch Domain und DNS.

Website oder Spielserver über das Gerät

Für Websites und Minecraft legt das Portal eine Verbindung zum Gerät an (intern z. B. ha-x7k2.tunnel.internal:31234, unter „Details“) und trägt sie bei der Website bzw. beim Spielserver als Server ein. Von Hand brauchen Sie die Adresse nur für einen TCP-Load-Balancer oder wenn Sie eine bestehende Website umstellen.

Dann gibt es alles, was Websites und Spielserver im CDN haben: HTTPS mit Zertifikat, Cache, WAF, Bot-Schutz, Statistik. Der Server selbst ist aus dem Internet nicht erreichbar – nur die Edges verbinden sich über den Tunnel.

Wie es funktioniert

Verbindung
Der Client verbindet sich zu jedem Edge (TLS, ausgehend Port 7443 TCP). Fällt einer aus, laufen die anderen weiter.
Offene Ports
TCP oder UDP, Port aus 30000–39999 auf allen Edges. Der Client verbindet nur mit Zielen, die Sie eingetragen haben.
Zustand
Ab kh-tunnel 0.4.0 prüft der Client jede Minute, ob die Ziele antworten, und meldet es dem Portal – beim Dienst steht dann „erreichbar“ oder „Ziel antwortet nicht“ mit dem Grund.
Echte Besucher-IP
Mit „PROXY-Protokoll zum Ziel“ – das Ziel muss es verstehen (z. B. Nginx, HAProxy, Traefik).
Konfiguration
Kommt vom Portal: Änderungen gelten nach wenigen Sekunden, am Gerät ist nichts zu tun.

Sicherheit

Was Sie freigeben, ist im Internet erreichbar. Geben Sie nur Dienste mit eigener Anmeldung frei – keine Kameras, Router-Oberflächen oder Dienste ohne Passwort.

Der Zugang des Geräts liegt nur auf dem Gerät (das Portal speichert einen Hash). Gerät verloren oder neu aufgesetzt? Im Portal einen neuen Code erzeugen und neu anmelden – der alte Zugang gilt dann nicht mehr. „Ausschalten“ trennt den Tunnel sofort.

NAS, Windows und Docker

Synology
Container Manager → Projekt → „Erstellen“, die docker-compose.yml aus dem Portal einfügen (Tab „Docker · NAS“), starten.
Unraid, QNAP, Portainer
Ebenfalls mit der docker-compose.yml (Stack bzw. Compose). Wichtig: network_mode „host“, damit der Client das NAS selbst und andere Geräte im Netz erreicht.
Home Assistant
Der Client läuft auf einem anderen Gerät im Netz (Raspberry Pi, NAS); Ziel ist dann die Adresse von Home Assistant, z. B. 192.168.1.20:8123.
Windows
PowerShell als Administrator, Befehl aus dem Portal – der Client läuft danach als Dienst „KernHosting CDN – Tunnel“ und startet mit Windows.
Raspberry Pi, Linux
Der Befehl mit install.sh richtet einen systemd-Dienst mit eigenem Benutzer ein.

Der Client aktualisiert sich selbst: Neue Versionen lädt er vom Portal, prüft die Signatur und startet neu. Abschalten mit --no-update bzw. KH_TUNNEL_NO_UPDATE=1.

Mehrere Geräte als Pool

Legen Sie auf jedem Gerät einen Server für denselben Dienst an und tragen Sie alle bei der Website, dem Spielserver oder einem TCP-Load-Balancer als Server ein. Das CDN verteilt die Besucher und nimmt ein Gerät heraus, sobald es keine Verbindung mehr hat – z. B. zwei Raspberry Pis an verschiedenen Anschlüssen.

Geht es? Der Zustand eines Dienstes

Jeder Dienst zeigt den Weg eines Besuchers: Edges (bzw. CDN) → Tunnel → Ziel. Rot ist die Stelle, an der es hakt:

Gerät nicht verbunden
kh-tunnel läuft nicht oder erreicht Port 7443 nicht – siehe unten.
Ziel antwortet nicht
Der Tunnel steht, aber das Gerät erreicht Adresse und Port nicht: Programm aus, Port falsch, falsche IP oder die Firewall des Zielgeräts. Beim Dienst steht der genaue Grund.
Client im Container
Mit eigenem Netz ist „localhost“ der Container selbst. network_mode „host“ verwenden oder die IP des Rechners eintragen.
Von außen testen
Bei offenen TCP-Ports verbindet sich das Portal über jeden Edge wie ein Besucher und zeigt, wo die Verbindung abbricht.

Auf dem Gerät zeigt kh-tunnel status dasselbe – mit einer Prüfung jedes Ziels. kh-tunnel doctor prüft zusätzlich Portal, Uhrzeit, jeden Edge, die Relays des privaten Netzes und die nötigen Rechte.

Ziele auf dem Gerät begrenzen

Welche Ziele ein Dienst hat, steht im Portal. Auf dem Gerät können Sie zusätzlich festlegen, welche Adressen der Client überhaupt verbinden darf – zum Beispiel nur das Heimnetz und das Gerät selbst:

Grenze setzen
sudo kh-tunnel allow 192.168.1.0/24 127.0.0.1
sudo kh-tunnel allow --remove 127.0.0.1
sudo kh-tunnel allow --clear

Einträge sind Adressen oder Netze, auf Wunsch mit Port (192.168.1.10:443). Ziele außerhalb verbindet der Client nicht; der Dienst zeigt dann „Gerät verbindet dieses Ziel nicht“. Die Grenze lässt sich bewusst nur auf dem Gerät ändern – selbst wer Ihr Konto im Portal übernähme, käme nicht weiter in Ihr Netz. Mit Docker: Umgebungsvariable KH_TUNNEL_ALLOW_TARGETS.

Freigaben vom Gerät: share, Docker, Datei

Erlauben Sie es unter Gerät → Einstellungen → „Freigaben vom Gerät“, legt der Client Freigaben selbst an – praktisch zum Entwickeln und auf dem NAS:

Port auf Zeit freigeben (bis Strg+C)
kh-tunnel share 8080
kh-tunnel share 25565 --host 192.168.1.10 --for 4h
kh-tunnel share 3000 --internal   # nur als Server für eine Website
Docker: Container per Label erreichbar machen
# Client mit --docker starten (oder KH_TUNNEL_DOCKER=1), dann am Container:
labels:
  kh.tunnel.port: "8080"
  kh.tunnel.internal: "true"   # Server für eine Website im CDN
Freigaben-Datei (kh-tunnel run --ports-file ports.yaml)
ports:
  - name: Website
    target: 127.0.0.1:8080
    internal: true
  - name: Minecraft
    target: 192.168.1.10:25565

Solche Dienste stehen im Portal mit ihrer Herkunft und zählen zu den Limits. Nur einschalten, wenn Sie dem Gerät vertrauen.

Updates

  • Der Client aktualisiert sich selbst (geprüfte Signatur). Erreicht eine neue Version zehn Minuten lang keinen Edge oder startet sie immer wieder neu, holt er die vorige zurück und lässt diese Version aus – das steht dann auf der Seite des Geräts.
  • Vorabversionen bekommt ein Gerät mit kh-tunnel channel beta; zurück mit kh-tunnel channel stable.
  • Messwerte für Prometheus: kh-tunnel run --metrics 127.0.0.1:9109 (bzw. KH_TUNNEL_METRICS) – Verbindungen und Bytes je Dienst, Laufzeit zu den Edges. Sie bleiben auf dem Gerät.

Gerät offline?

  • Läuft der Client? Linux: systemctl status kh-tunnel, Logs mit journalctl -u kh-tunnel; macOS: /Library/Logs/kh-tunnel.log.
  • kh-tunnel doctor prüft alles der Reihe nach und sagt, wo es hakt.
  • kh-tunnel status zeigt, was das Portal für das Gerät meldet.
  • Ausgehend muss Port 7443 (TCP) erlaubt sein – in Firmennetzen manchmal nicht.
  • Ist das Gerät länger als drei Minuten offline, bekommen Sie eine Nachricht (Benachrichtigungen: „Gerät ist offline“).
War dieser Artikel hilfreich?

Nicht fündig geworden? Durchsuchen Sie die Übersicht, schauen Sie auf die Statusseite oder schreiben Sie uns – die Kontaktdaten stehen im Impressum.