Configuração

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 pretendido
  • error (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ário
    • details (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:

TCPUDPConfig

O TCPUDPConfig permite definir estratégias TCP e UDP separadas.

Formato: struct

Campos:

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:

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 discar
  • dialer (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 ser https ou wss para Websocket sobre TLS e http ou ws 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:

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:

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 conectar
  • server_port (number): o número da porta para se conectar
  • method (string): a criptografia AEAD a ser usada (link em inglês)
  • password (string): usada para gerar a chave de criptografia
  • prefix (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 conectar
  • cipher (string): a criptografia AEAD a ser usada (link em inglês)
  • secret (string): usada para gerar a chave de criptografia
  • prefix (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:

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