O Outline usa uma configuração baseada em YAML para definir parâmetros de VPN e gerenciar o tráfego TCP/UDP. A configuração oferece suporte à composição em vários níveis, permitindo configurações flexíveis e extensíveis.
A configuração de nível superior especifica uma TunnelConfig.
Exemplos
Uma configuração típica do Shadowsocks será semelhante a esta:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint: ss.example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST " # HTTP request
udp:
$type: shadowsocks
endpoint: ss.example.com:53
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "\u0097\u00a7\u0001\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000" # DNS query
Observe como agora podemos ter TCP e UDP em execução em diferentes portas ou endpoints e com diferentes prefixos.
Você pode usar âncoras YAML e a chave de mesclagem <<
para evitar duplicação:
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
udp: *shared
Agora é possível compor estratégias e fazer vários saltos:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: dial
address: exit.example.com:4321
dialer:
$type: shadowsocks
address: entry.example.com:4321
cipher: chacha20-ietf-poly1305
secret: ENTRY_SECRET
cipher: chacha20-ietf-poly1305
secret: EXIT_SECRET
udp: *shared
Em caso de bloqueio de protocolos look-like-nothing como o Shadowsocks, você pode usar o Shadowsocks sobre Websockets. Confira o exemplo de configuração do servidor (em inglês) para saber como implantá-lo. Uma configuração de cliente será semelhante a:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
Observe que o endpoint do Websocket pode, por sua vez, tomar um endpoint, que pode ser aproveitado para ignorar o bloqueio baseado em DNS:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
endpoint: cloudflare.net:443
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
endpoint: cloudflare.net:443
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
Para garantir a compatibilidade entre diferentes versões do app cliente do Outline, use a
opção first-supported
na sua configuração. Isso é particularmente importante
à medida que novas estratégias e recursos são adicionados ao Outline, porque nem todos os usuários podem ter
atualizado para o software cliente mais recente. Ao usar o first-supported
, você pode
fornecer uma configuração única que funciona em várias plataformas
e versões de cliente, garantindo compatibilidade com versões anteriores e uma experiência
de usuário consistente.
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: first-supported
options:
- $type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
- ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: first-supported
options:
- $type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
- ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SS_SECRET