Túneles
TunnelConfig
Los túneles son los objetos de nivel superior en una configuración de Outline e indican cómo debe configurarse la VPN.
Formato: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
Formato: struct
Campos:
transport
(TransportConfig): transporte que debe usarse para intercambiar paquetes con el destino.error
(struct): información que debe comunicarse al usuario si hay un error de servicio (por ejemplo, si la clave ha caducado o la cuota se ha agotado).message
(cadena): mensaje legible que se mostrará al usuario.details
(cadena): mensaje que se mostrará cuando el usuario despliegue los detalles del error. Sirve para solucionar problemas.
Los campos error
y transport
se excluyen entre sí.
Ejemplo de operación correcta:
transport:
$type: tcpudp
tcp:
... # Stream Dialer for TCP
udp:
... # Packet Listener for UDP
Ejemplo de error:
error:
message: Quota exceeded
details: Used 100GB out of 100GB
Transportes
TransportConfig
Objeto que especifica cómo deben intercambiarse los paquetes con el destino.
Formato: Interface
Tipos de Interface admitidos:
tcpudp
: TCPUDPConfig
TCPUDPConfig
TCPUDPConfig permite configurar estrategias de TCP y UDP por separado.
Formato: struct
Campos:
tcp
(DialerConfig): marcador de flujos que debe usarse para las conexiones TCP.udp
(PacketListenerConfig): agente de escucha de paquetes que debe usarse para los paquetes UDP.
Ejemplo de envío de TCP y UDP a distintos endpoints:
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
Endpoints
Los endpoints establecen conexiones con un endpoint fijo. Son preferibles a los marcadores porque permiten hacer optimizaciones específicas del endpoint. Hay dos tipos: endpoints de flujos y de paquetes.
EndpointConfig
Formato: cadena | Interface
La cadena del endpoint es la dirección host:puerto del endpoint seleccionado. La conexión se establece usando el valor predeterminado del marcador.
Tipos de Interface admitidos para endpoints de flujos y de paquetes:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
Establece las conexiones marcando una dirección fija. Puede usarse un marcador, lo que permite componer estrategias.
Formato: struct
Campos:
address
(cadena): la dirección del endpoint que se debe marcar.dialer
(DialerConfig): el marcador que debe usarse para marcar la dirección.
WebsocketEndpointConfig
Tuneliza las conexiones de flujos y de paquetes dirigidos a un endpoint a través de Websockets.
En el caso de las conexiones de flujos, 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
(cadena): URL del endpoint de Websocket. El esquema debe serhttps
owss
para Websocket a través de TLS, yhttp
ows
para Websocket de texto sin formato.endpoint
(EndpointConfig): endpoint del servidor web con el que se va a establecer la conexión. Si no se encuentra, se conecta a la dirección especificada de la URL.
Marcadores
Los marcadores establecen conexiones cuando se indica la dirección de un endpoint. Hay dos tipos: marcadores de flujos y de paquetes.
DialerConfig
Formato: nulo | Interface
El valor nulo (no se encuentra) del marcador es el marcador predeterminado, que usa conexiones TCP directas para conexiones de flujos y conexiones UDP directas para paquetes.
Tipos de Interface admitidos para marcadores de flujos y de paquetes:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Agentes de escucha de paquetes
Los agentes de escucha de paquetes establecen conexiones de paquetes no delimitadas que pueden usarse para enviar paquetes a varios destinos.
PacketListenerConfig
Formato: nulo | Interface
El valor nulo (no se encuentra) del agente de escucha de paquetes es el agente predeterminado, concretamente, un agente de escucha de paquetes UDP.
Tipos de Interface admitidos:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Estrategias
Shadowsocks
LegacyShadowsocksConfig
LegacyShadowsocksConfig representa un túnel que usa Shadowsocks como transporte. Implementa el formato antiguo para la retrocompatibilidad.
Formato: struct
Campos:
server
(cadena): host con el que se va a establecer la conexión.server_port
(número): número de puerto con el que se va a establecer la conexión.method
(cadena): el algoritmo de cifrado de AEAD que debe usarse.password
(cadena): utilizado para generar la clave de cifrado.prefix
(cadena): la ocultación de prefijo que se debe usar. Solo se admite en las conexiones de flujos.
Ejemplo:
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
LegacyShadowsocksURI representa un túnel que usa Shadowsocks como transporte. Implementa el formato antiguo de la URL para la retrocompatibilidad.
Formato: cadena
Consulta el formato antiguo del URI de Shadowsocks y el esquema del URI de SIP002. No admitimos los complementos.
Ejemplo:
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
ShadowsocksConfig puede representar marcadores de flujos o de paquetes, además de un agente de escucha de paquetes que usa Shadowsocks.
Formato: struct
Campos:
endpoint
(EndpointConfig): el endpoint de Shadowsocks con el que se va a establecer la conexión.cipher
(cadena): el algoritmo de cifrado de AEAD que debe usarse.secret
(cadena): utilizado para generar la clave de cifrado.prefix
(cadena, opcional): la ocultación de prefijo que se debe usar. Solo se admite en las conexiones de flujos.
Ejemplo:
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
Metadefiniciones
FirstSupportedConfig
Usa la primera configuración admitida por la aplicación. De esta forma, se incorporan configuraciones nuevas y, a la vez, se mantiene la retrocompatibilidad con las antiguas.
Formato: struct
Campos:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): lista de opciones que deben tenerse en cuenta.
Ejemplo:
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
Interface
Los objetos Interface permiten elegir una implementación de entre muchas. Utiliza el campo $type
para especificar el tipo que esa configuración representa.
Ejemplo:
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET