Netzwerk-Overlays
Leite ausgehenden Verkehr weiter und binde Listener über Overlay-Netzwerke an (SOCKS5-Proxies, Tor, Tailscale-Mesh, I2P). Die Overlay-Auswahl erfolgt opt-in pro Aufruf und wird über Funktions-, Prozess- und HTTP-Grenzen hinweg vererbt.
Entry-Kinds
| Kind | Beschreibung |
|---|---|
network.socks5 |
Generischer SOCKS5-Proxy (deckt auch den SOCKS5-Listener von Tor ab) |
network.tailscale |
Tailscale-tsnet-Overlay-Knoten |
network.i2p |
I2P-SAM-v3-Bridge |
SOCKS5
- name: proxy
kind: network.socks5
host: 127.0.0.1
port: 1080
username: "optional"
password: "optional"
isolate_streams: false
| Feld | Typ | Beschreibung |
|---|---|---|
host |
string | Proxy-Host |
port |
int | Proxy-Port (1-65535) |
username |
string | Optionale SOCKS5-Authentifizierung |
password |
string | Optionale SOCKS5-Authentifizierung |
isolate_streams |
bool | Pro-Verbindung zufällige Credentials (Tor-Stream-Isolation) |
Tailscale
- name: tailnet
kind: network.tailscale
hostname: "wippy-node"
auth_key_env: "TS_AUTHKEY"
ephemeral: false
control_url: ""
| Feld | Typ | Beschreibung |
|---|---|---|
hostname |
string | tsnet-Knotenname (wird im knotenspezifischen State-Verzeichnis verwendet) |
auth_key |
string | Inline-Tailnet-Auth-Key |
auth_key_env |
string | Name der Env-Variable mit dem Auth-Key (wird über die Env-Registry aufgelöst) |
state_dir |
string | Überschreibung des tsnet-State-Verzeichnisses |
control_url |
string | Alternativer Koordinationsserver |
ephemeral |
bool | Als ephemeren Tailnet-Knoten registrieren |
Entweder auth_key oder auth_key_env ist erforderlich.
I2P
- name: i2p_bridge
kind: network.i2p
host: 127.0.0.1
port: 7656
session_name: "wippy"
| Feld | Typ | Beschreibung |
|---|---|---|
host |
string | SAM-v3-Bridge-Host |
port |
int | SAM-v3-Bridge-Port |
session_name |
string | Optionaler Session-Identifier |
Overlay auswählen
Auf http.service
Binde den Server-Listener über ein Overlay (Tailscale, I2P):
- name: gateway
kind: http.service
addr: ":8080"
network: app.net:tailnet
SOCKS5 unterstützt kein eingehendes Listening — verwende es nur für ausgehende Verbindungen.
Aus Lua
Leite eine aufgerufene Funktion oder einen erzeugten Prozess über ein Overlay mittels with_options:
local funcs = require("funcs")
local result, err = funcs.new()
:with_options({ network = "app.net:proxy" })
:call("app.api:fetch_data")
local pid, err = process.with_options({ network = "app.net:tailnet" })
:spawn_monitored("app.workers:probe", "app:processes")
Das http_client-Modul akzeptiert dieselbe Overlay-Auswahl in den Per-Call-Optionen unter dem Schluessel overlay_network.
Vererbung
Die Overlay-Auswahl fließt durch den Call-Stack. Eine Funktion, die über funcs.new():with_options({network=...}) aufgerufen wird, sieht das Overlay bei jeder inneren Verbindung, jedem verschachtelten funcs.call und jedem process.spawn, den sie ausführt — bis ein Nachkomme explizit ein anderes Overlay auswählt oder es löscht.
Die Ambient-Vererbung umgeht die eigenen network.select-Deny-Regeln des Nachkommen. Nur die explizite Auswahl an einer Lua-Grenze wird überprüft.
App-Konfiguration
Overlay-Treiber lesen app-weite Einstellungen aus einem network_service:-Block in .wippy.yaml:
network_service:
state_dir: .wippy/net # Basisverzeichnis fuer Treiber-State (Tailscale-Schluessel etc.)
default_network: app.net:tailnet # Overlay, das verwendet wird, wenn kein Aufruf eines setzt
| Feld | Standard | Beschreibung |
|---|---|---|
state_dir |
.wippy/net |
Verzeichnis fuer Treiber-State. Relative Pfade werden gegen das Boot-Config-Verzeichnis aufgeloest. |
default_network |
— | Registry-ID eines Overlays, das auf jede Aufgabe oder jeden Prozess angewendet wird, der sein eigenes Netzwerk nicht ueber Optionen festlegt. |
Berechtigungen
| Aktion | Ressource | Beschreibung |
|---|---|---|
network.select |
Netzwerk-Registry-ID | Explizite Overlay-Auswahl bei funcs.call, process.spawn, http_client |
Verweigere network.select für einen Scope, um Code innerhalb davon daran zu hindern, explizit ein Overlay zu wählen. Geerbte Overlays sind nicht betroffen — sie wurden beim Aufrufer autorisiert.
Siehe auch
- Sicherheit - Richtlinien und Akteure
- HTTP-Service - Server-Binding
- HTTP-Client - Overlay-Auswahl pro Aufruf