Config

Túneles

TunnelConfig

Túnel es el objeto de nivel superior en una configuración de Outline y especifica cómo debe configurarse la VPN.

Formato: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Formato: struct

Campos:

  • transport (TransportConfig): Es el transporte que se utilizará para intercambiar paquetes con el destino objetivo.
  • error (struct): Contiene información que recibirá el usuario si se produce un error en el servicio (p. ej., si venció la clave o se agotó la cuota).
    • message (string): Es un mensaje fácil de entender que verá el usuario.
    • details (string): Es el mensaje que verá el usuario cuando abra los detalles del error. Debe ser útil para solucionar problemas.

Los campos error y transport son mutuamente excluyentes.

Ejemplo sin errores:

transport:
  $type: tcpudp
  tcp:
    ...  # Stream Dialer for TCP
  udp:
    ...  # Packet Listener for UDP

Ejemplo con errores:

error:
  message: Quota exceeded
  details: Used 100GB out of 100GB

Transportes

TransportConfig

Especifica cómo deben intercambiarse los paquetes con el destino objetivo.

Formato: Interface

Tipos de Interfaces admitidos:

TCPUDPConfig

Permite establecer estrategias distintas para TCP y UDP.

Formato: struct

Campos:

  • tcp (DialerConfig): Es el marcador de paquete que se usará para las conexiones TCP.
  • udp (PacketListenerConfig): Es el objeto de escucha de paquete que se usará para los paquetes UDP.

Ejemplo de envío TCP y UDP a diferentes extremos:

tcp:
  $type: shadowsocks
  endpoint: ss.example.com:80
  <<: &cipher
    cipher: chacha20-ietf-poly1305
    secret: SECRET
  prefix: "POST "

udp:
  $type: shadowsocks
  endpoint: ss.example.com:53
  <<: *cipher

Extremos

Los Extremos establecen conexiones con un extremo fijo. Se prefieren sobre los marcadores, ya que permiten optimizaciones específicas para cada extremo. Existen Extremos de transmisión y de paquete.

EndpointConfig

Formato: string | Interface

El Extremo string es la dirección host:puerto del extremo seleccionado. La conexión se establece a través del Marcador predeterminado.

Tipos de Interfaces admitidos para los Extremos de transmisión y de paquete:

DialEndpointConfig

Establece conexiones marcando una dirección fija. Puede llevar un marcador, lo que permite combinar estrategias.

Formato: struct

Campos:

  • address (string): Es la dirección del extremo que se debe marcar.
  • dialer (DialerConfig): Es el marcador que se usará para marcar la dirección.

WebsocketEndpointConfig

Tuneliza conexiones de transmisión y de paquete hacia un extremo a través de WebSockets.

Para las conexiones de transmisión, cada escritura se convierte en un mensaje de WebSocket. En el caso de las conexiones de paquetes, cada paquete se convierte en un mensaje de WebSocket.

Formato: struct

Campos:

  • url (string): Es la URL del extremo de WebSocket. El esquema debe ser https o wss para WebSocket sobre TLS, y http o ws en el caso de WebSocket con texto simple.
  • endpoint (EndpointConfig): Es el extremo del servidor web al que hay que conectarse. Si no existe, se conecta a la dirección especificada en la URL.

Marcadores

Los Marcadores establecen conexiones a partir de una dirección de extremo. Hay Marcadores de transmisión y de paquete.

DialerConfig

Formato: null | Interface

El Marcador null (ausente) corresponde al Dialer predeterminado, que usa conexiones TCP directas para transmisión y conexiones UDP directas para paquetes.

Tipos de Interfaces admitidos para Marcadores de transmisión y de paquete.

Objetos de escucha de paquete

Un objeto de escucha de paquete establece una conexión de paquetes no delimitada que puede usarse para enviar paquetes a múltiples destinos.

PacketListenerConfig

Formato: null | Interface

El objeto de escucha de paquete null (ausente) corresponde al objeto de escucha de paquete predeterminado, que funciona con UDP.

Tipos de Interfaces admitidos:

Estrategias

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig representa un túnel que utiliza Shadowsocks como transporte. Implementa el formato heredado por motivos de retrocompatibilidad.

Formato: struct

Campos:

  • server (string): Es el host al que hay que conectarse.
  • server_port (number): Es el número del puerto al que hay que conectarse.
  • method (string): Es el algoritmo de cifrado de AEAD que hay que usar.
  • password (string): Se usa para generar la clave de encriptación.
  • prefix (string): Es el enmascaramiento del prefijo que hay que usar. Se admite en conexiones de transmisiones y de paquetes.

Ejemplo:

server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "

LegacyShadowsocksURI

LegacyShadowsocksURI representa un túnel que utiliza Shadowsocks como transporte. Implementa el formato de URL heredado por motivos de retrocompatibilidad.

Formato: string

Consulta el formato LegacyShadowsocksURI y el esquema de URI SIP002. No admitimos complementos.

Ejemplo:

ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20

ShadowsocksConfig

ShadowsocksConfig puede representar a Dialers de transmisión o de paquete, así como a un objeto de escucha de paquete que usa Shadowsocks.

Formato: struct

Campos:

  • endpoint (EndpointConfig): Es el extremo de Shadowsocks al que hay que conectarse.
  • cipher (string): Es el algoritmo de cifrado de AEAD que hay que usar.
  • secret (string): Se usa para generar la clave de encriptación.
  • prefix (string, opcional): Es el enmascaramiento del prefijo que hay que usar. Se admite en conexiones de transmisiones y de paquetes.

Ejemplo:

endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "

Metadefiniciones

FirstSupportedConfig

Usa el primer parámetro de configuración que admite la app. Es una forma de incorporar nuevos parámetros sin dejar de admitir los anteriores.

Formato: struct

Campos:

Ejemplo:

options:
  - $type: websocket
    url: wss://example.com/SECRET_PATH
  - ss.example.com:4321

Interface

Las Interfaces permiten elegir una implementación entre varias. Usa el campo $type para especificar el tipo que representa ese parámetro de configuración.

Ejemplo:

$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET