Outline usa una configuración basada en YAML para definir los parámetros de la VPN y gestionar el tráfico TCP/UDP. La configuración admite la componibilidad en varios niveles, por lo que es flexible y ampliable.
La configuración de nivel superior especifica TunnelConfig.
Ejemplos
Este es el aspecto de una configuración típica de Shadowsocks:
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
Fíjate en que ahora TCP y UDP pueden ejecutarse en puertos o endpoints distintos y con prefijos diferentes.
Puedes usar los anclas YAML y la clave de fusión <<
para evitar los duplicados:
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
udp: *shared
Ahora puedes redactar estrategias y hacer varios 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
Si se bloquean los protocolos que no se parecen a nada en particular como Shadowsocks, puedes usar la técnica Shadowsocks a través de Websockets. Consulta el ejemplo de configuración del servidor para saber cómo implementarlo. Este es el aspecto de la configuración del cliente:
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
El endpoint de Websocket puede, a su vez, tomar un endpoint, que puede servir para sortear el bloqueo basado en 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 asegurar la compatibilidad entre las distintas versiones del cliente de Outline, usa la opción first-supported
en tu configuración. Esto cobra especial importancia a medida que se añaden nuevas estrategias y funciones a Outline, ya que es posible que no todos los usuarios hayan actualizado a la versión más reciente del software cliente. Si usas first-supported
, puedes ofrecer una configuración que funcione a la perfección en las distintas plataformas y versiones del cliente, lo que garantiza la retrocompatibilidad y una experiencia de usuario coherente.
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