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:
tcpudp
: TCPUDPConfig
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:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
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 serhttps
owss
para WebSocket sobre TLS, yhttp
ows
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.
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
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:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
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:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): Es la lista de opciones que se consideran.
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