2026 OpenClaw × Tailscale-Tailnet: `gateway.bind`, ACLs und privates CLI-/Kanal-Verifikations-Runbook

Ca. 16 Min. Lesezeit · MACCOME

Zielgruppe: OpenClaw läuft, aber TCP 18789 soll dem unsicheren WAN fern bleiben, während Laptops, CI und Dauerstände weiterhin Handschlagswege über CLIs oder Kanäle gemeinsam in einem kleinen hinreichend vertrauenswürdigen Netzsegment abschließen. Wesentlich: gateway.bind auf die Semantik tailnet ausrichten und in Tailscale ACL (HuJSON) dokumentieren, wer wem TCP 18789 eröffnen darf. Reihenfolge: openclaw gateway status, dann Mesh-Pings, dann ein minimales Unterhaltungsprotokoll. Artikelteilung: Mit 《Nginx/Caddy TLS & Reverse-Proxy-Checkliste》《systemd plus Cloudflare Tunnel》 entstehen die typischen Eckpunkte (öffentlicher TLS-Eingang, Tunnelausgang, nur Tailscale ohne WAN-Lauscher). Container-Finesse bleibt bei 《Docker-Compose-Pairing》《Zero-Trust-Remote-Mac》.

Fünf Gründe, warum „nur Tailnet“ nicht automatisch heißt „sicher“

Ohne WAN lauscht kein Port der Öffentlichkeit, aber breite ACLs erlauben dennoch laterale Scans im Mesh. Halten Sie OpenClaw- und Tailscale-Logs mit identischen UTC-Zeitstempeln bereit.

  1. Zu freundliche ACLs (*:*) lassenalle Knoten Port 18789 abtasten — die Angriffsfläche sitzt nun im Tailnet.
  2. Gemischte Bind-Modi ohne aktualisierte GATEWAY_URL führen zuerfolgreichen tailscale ping, aber alter Handshake-Pfad.
  3. MagicDNS plus Split-DNS der Firmen‑VPN-Lösungen erzeugen widersprüchliche Auflösungen und damit jitternde Timeouts.
  4. MTU zusammen mit WebSockets erzeugen TLS-Hänger, die sich wie Token-Probleme anfühlen.
  5. Subnet-Router-Ankündigung ohne durchdachtes Exit-Verhalten lenkt Daten um das geplanten Gateway-Chokepoint.

ACL hujson fungiert nun als Kern-Firewall-Layer. Hinweise aus dem CVE-/Hardening-Runbook zu Ports und Schlüsseln bleiben maßgeblich.

Expositionsmodell Wann tragfähig Wesentlicher Trade-off
öffentlich + Reverse-Proxy TLS Externer SaaS-Webhook roaming Clients ohne konsistent vertriebene Agents. Mehr WAF-/Zert-/Rate-Komplexität; TLS-Kompendium konsultieren.
Outbound-Tunnel wie Cloudflare Öffentliche Quell-IPs verstecken ohne Port-forwarding vom Router. Abhängigkeit von POP-Anbietern wie im Tunnel-Artikel.
tailnet-only + gateway.bind=tailnet Jedes Mitglied ist bereits tailscale-enrolled und Gateway liegt auf dedizierten Mac-Mini-Clustern (sechs Regionen) oder Tailscale‑Linux-Knoten. ACLs/tagging korrekt; Geräte ohne Tailscale erreichen den Listener nicht (Zielzustand, kein Gap).
warning

Das Mesh ist kein verstecktes Admin-VPN: Generische group:dev-Tags plus freies Ping erlauben keine forensische Antwort „wer war letzte Nacht auf 18789?“

Skizze: Gateway G, Operator O, optionaler Subnet-Router SR

G kündigt nach tailscale up TCP 18789 nur für freigegebene Tags an; O verwendet MagicDNS-/tailnet IPs in OPENCLAW_GATEWAY_URL. Entfernen Sie eingefrorene LAN-Schemas nach tailnet-only Commitments.

CI erhält eigene ACL-Zeilen tag:ci → tag:gateway:18789; keine universellen Dev-Mega-ACLs für Runner.

Erweiterte SSH/Tunnel-Entscheide stehen weiter im Zero-Trust Remote-Mac-Checkliste-Beitrag; hier geht es speziell um OpenClaw-Bind‑Semantik.

Sechs Schritte bis zum ersten sinnstiftenden Datenpaket im Tailnet

  1. Identitäten einfrosten mit tailscale status, Hostnamen dokumentieren.
  2. Zuerst ACL pushen, inklusive UDP 41641 und benötigtem TCP 18789, plus abschließendes deny.
  3. gateway.bind tailnet, ~/.openclaw/openclaw.json oder Container-Mount konsistent;Schemas ändern je Release.
  4. Ein Token, OPENCLAW_GATEWAY_TOKEN plus gateway.auth.token Fingerprints.
  5. openclaw gateway status && openclaw doctor; bei Fehler doppelseitiges Logging.
  6. Smoke-Test, curl -v --max-time 5 sowie minimaler Chatstrom; weiter lesen beim Post-Install-Doctor.
json
{
  "gateway": {
    "mode": "local",
    "bind": "tailnet",
    "port": 18789,
    "auth": {
      "mode": "token",
      "token": "${OPENCLAW_GATEWAY_TOKEN}"
    }
  }
}
// NOTE: Demonstration; Feld für Feld mit Ihrem Schema abgleichen und den Dienst neu starten.
HuJSON
// ACL-Skizze: nur ops darf auf gateway:18789 — Tags anpassen
{
  "groups": { "group:ops": ["[email protected]"] },
  "tagOwners": { "tag:gateway": ["autogroup:admin"], "tag:ops": ["autogroup:admin"] },
  "acls": [
    {
      "action": "accept",
      "src": ["tag:ops"],
      "dst": ["tag:gateway:18789"],
      "proto": "tcp"
    }
  ]
}

Drei Punkte für Architekturbewertungen

  • Tailnet ist nicht gleich automatischer Zero Trust ohne schnelles Revoking.
  • MTU-Analyse vor Bind-Erweiterung bei häufig eingefrierenden WebSockets.
  • DNS-Wettstreit kann Webhooks zerstören, obwohl `gateway healthy` grün zeigt.

Warum Laptop-Exit keine stabile Produktionsverankerung ist

Energiesparmodi, Firmware-Restart und Consumer-Uplink jitter untergraben SLA für 18789. Dedizierte M4-/M4‑Pro‑Remote‑Mac‑Knoten kombinieren besser Logs und Verfügbarkeit.

MACCOME bildet SLA und ACL mit flexiblen Mietzyklen auf dieselbe Materie wie Preisliste ab: Zuerst öffentliche Mini-Mietpreise und Hilfe / FAQ, dann erneuter Bind-Schritt.

Fazit

Wenn kein Datenflussdiagramm drei Minuten aushält, keine JSON-Anpassungen. „tailnet‑only“ heißt bewusst dokumentierbare Pfade.

Wählen Sie je nach Produkt Compose, Tunnel, CVE-Hardening oder öffentlicher TLS-Anker erneut.

FAQ

Muss ich Docker entsorgen?

Nein. Der Compose‑Pairing-Runbook gilt weiter, solange tailnet IPs und Host-publish übereinstimmen.

SSH-Sprungebenen kombinieren?

Möglich; die Zero-Trust-Remote-Mac-Checkliste erklärt die Matrix. 18789/tcp bleibt eine eigene ACL-Zeile neben 22/tcp.