Túneis
TunnelConfig
O túnel é o objeto de mais alto nível em uma configuração do Outline. Ele especifica como a VPN deve ser configurada.
Formato: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
Formato: struct
Campos:
transport
(TransportConfig): o transporte a ser usado para trocar pacotes com o destino pretendidoerror
(struct): informações a serem comunicadas ao usuário em caso de erro de serviço (por exemplo, chave expirada, cota esgotada)message
(string): mensagem simples para exibir ao usuáriodetails
(string): mensagem a ser exibida quando o usuário abrir os detalhes do erro; útil para solução de problemas
Os campos error
e transport
são mutuamente exclusivos.
Exemplo bem-sucedido:
transport:
$type: tcpudp
tcp:
... # Stream Dialer for TCP
udp:
... # Packet Listener for UDP
Exemplo de erro:
error:
message: Quota exceeded
details: Used 100GB out of 100GB
Transportes
TransportConfig
Especifica como os pacotes devem ser trocados com o destino pretendido.
Formato: Interface
Tipos de interface aceitos:
tcpudp
: TCPUDPConfig
TCPUDPConfig
O TCPUDPConfig permite definir estratégias TCP e UDP separadas.
Formato: struct
Campos:
tcp
(DialerConfig): o discador de fluxo a ser usado para conexões TCP.udp
(PacketListenerConfig): o listener de pacotes a ser usado para pacotes UDP.
Exemplo de envio de TCP e UDP para diferentes 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
Os endpoints estabelecem conexões com um endpoint fixo. São preferíveis aos discadores, porque permitem otimizações específicas. Existem endpoints de fluxo e de pacote.
EndpointConfig
Formato: string | Interface
O endpoint string é o endereço host:porta do endpoint selecionado. A conexão é estabelecida usando o discador padrão.
Tipos de interface aceitos para endpoints de fluxo e pacote:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
Estabelece conexões discando um endereço fixo. Pode usar um discador, o que permite a composição de estratégias.
Formato: struct
Campos:
address
(string): endereço do endpoint a discardialer
(DialerConfig): discador a ser usado para discar o endereço
WebsocketEndpointConfig
Conexões de fluxo e pacotes de túneis para um endpoint sobre Websockets.
Para conexões de fluxo, cada gravação é transformada em uma mensagem do Websocket. Para conexões de pacotes, cada pacote é transformado em uma mensagem do Websocket.
Formato: struct
Campos:
url
(string): URL do endpoint do Websocket. O esquema precisa serhttps
ouwss
para Websocket sobre TLS ehttp
ouws
para Websocket em texto simples.endpoint
(EndpointConfig): endpoint (do servidor da Web) para conexão. Se não houver um, ele se conectará ao endereço especificado no URL.
Discadores
Os discadores estabelecem conexões de acordo com o endereço de um endpoint. Existem discadores de fluxo e de pacotes.
DialerConfig
Formato: null | Interface
Um discador null (ausente) significa o discador padrão, que usa conexões diretas TCP para fluxo e conexões diretas UDP para pacotes.
Tipos de interface aceitos para discadores de fluxo e de pacotes:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Listeners de pacotes
Um listener de pacotes estabelece uma conexão de pacotes ilimitada que pode ser usada para enviar pacotes a vários destinos.
PacketListenerConfig
Formato: null | Interface
Um listener de pacotes null (ausente) significa o listener de pacotes padrão, que é um listener de pacotes UDP.
Tipos de interface aceitos:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Estratégias
Shadowsocks
LegacyShadowsocksConfig
O LegacyShadowsocksConfig representa um túnel que usa o Shadowsocks como transporte. Ele implementa o formato legado para compatibilidade com versões anteriores.
Formato: struct
Campos:
server
(string): o host para se conectarserver_port
(number): o número da porta para se conectarmethod
(string): a criptografia AEAD a ser usada (link em inglês)password
(string): usada para gerar a chave de criptografiaprefix
(string): o disfarce de prefixo (link em inglês) a ser usado; aceito apenas em conexões de fluxo
Exemplo:
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
O LegacyShadowsocksURI representa um túnel que usa o Shadowsocks como transporte. Ele implementa o formato legado de URL para compatibilidade com versões anteriores.
Formato: string
Consulte Formato de URI legado do Shadowsocks e Esquema de URI SIP002 (links em inglês). Não oferecemos suporte a plug-ins.
Exemplo:
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
O ShadowsocksConfig pode representar discadores de fluxo ou de pacotes, bem como um listener de pacotes que usa o Shadowsocks.
Formato: struct
Campos:
endpoint
(EndpointConfig): o endpoint do Shadowsocks para se conectarcipher
(string): a criptografia AEAD a ser usada (link em inglês)secret
(string): usada para gerar a chave de criptografiaprefix
(string, opcional): o disfarce de prefixo (link em inglês) a ser usado; aceito apenas em conexões de fluxo
Exemplo:
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
Metadefinições
FirstSupportedConfig
Usa a primeira configuração aceita no aplicativo. Esta é uma maneira de incorporar novas configurações e, ao mesmo tempo, manter compatibilidade com outras antigas.
Formato: struct
Campos:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): lista de opções a considerar
Exemplo:
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
Interface
As interfaces permitem escolher uma entre diversas implementações. Elas usam o campo
$type
para especificar o tipo que a configuração representa.
Exemplo:
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET