Superposiciones de red

Enruta el tráfico saliente y vincula escuchadores a través de redes de superposición (proxies SOCKS5, Tor, malla Tailscale, I2P). La selección de superposición es opcional por llamada y se hereda a través de los límites de función, proceso y HTTP.

Tipos de entrada

Kind Descripción
network.socks5 Proxy SOCKS5 genérico (también cubre el escuchador SOCKS5 de Tor)
network.tailscale Nodo de superposición Tailscale tsnet
network.i2p Puente I2P SAM v3

SOCKS5

- name: proxy
  kind: network.socks5
  host: 127.0.0.1
  port: 1080
  username: "optional"
  password: "optional"
  isolate_streams: false
Campo Tipo Descripción
host string Host del proxy
port int Puerto del proxy (1-65535)
username string Autenticación SOCKS5 opcional
password string Autenticación SOCKS5 opcional
isolate_streams bool Credenciales aleatorias por conexión (aislamiento de flujos de Tor)

Tailscale

- name: tailnet
  kind: network.tailscale
  hostname: "wippy-node"
  auth_key_env: "TS_AUTHKEY"
  ephemeral: false
  control_url: ""
Campo Tipo Descripción
hostname string Nombre del nodo tsnet (usado en el directorio de estado por nodo)
auth_key string Clave de autenticación tailnet en línea
auth_key_env string Nombre de variable de entorno que contiene la clave de autenticación (resuelto a través del registro env)
state_dir string Anulación del directorio de estado tsnet
control_url string Servidor de coordinación alternativo
ephemeral bool Registrar como nodo tailnet efímero

Se requiere auth_key o auth_key_env.

I2P

- name: i2p_bridge
  kind: network.i2p
  host: 127.0.0.1
  port: 7656
  session_name: "wippy"
Campo Tipo Descripción
host string Host del puente SAM v3
port int Puerto del puente SAM v3
session_name string Identificador de sesión opcional

Seleccionar una superposición

En http.service

Vincula el escuchador del servidor a través de una superposición (Tailscale, I2P):

- name: gateway
  kind: http.service
  addr: ":8080"
  network: app.net:tailnet

SOCKS5 no admite escucha entrante — úsalo solo para conexiones salientes.

Desde Lua

Enruta una función llamada o un proceso generado a través de una superposición usando 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")

El módulo http_client acepta la misma seleccion de superposicion en las opciones por llamada bajo la clave overlay_network.

Herencia

La selección de superposición fluye a través de la pila de llamadas. Una función llamada a través de funcs.new():with_options({network=...}) ve la superposición en cada conexión interna, cada funcs.call anidado y cada process.spawn que realiza — hasta que un descendiente seleccione explícitamente una superposición diferente o la borre.

La herencia ambiental omite las propias reglas de denegación network.select del descendiente. Solo la selección explícita en un borde de Lua está controlada.

Configuracion de la aplicacion

Los drivers de superposicion leen ajustes a nivel de aplicacion desde un bloque network_service: en .wippy.yaml:

network_service:
  state_dir: .wippy/net          # Directorio base para el estado del driver (claves de Tailscale, etc.)
  default_network: app.net:tailnet  # Superposicion usada cuando ninguna llamada establece una
Campo Valor por defecto Descripcion
state_dir .wippy/net Directorio para el estado del driver. Las rutas relativas se resuelven contra el directorio de configuracion de arranque.
default_network Registry ID de una superposicion aplicada a cualquier tarea o proceso que no establezca su propia red mediante opciones.

Permisos

Acción Recurso Descripción
network.select Registry ID de red Selección explícita de superposición en funcs.call, process.spawn, http_client

Deniega network.select en un ámbito para impedir que el código dentro de él elija explícitamente una superposición. Las superposiciones heredadas no se ven afectadas — fueron autorizadas en el llamante.

Véase también