Tunnels
TunnelConfig
Tunnel est l'objet de premier niveau dans une configuration Outline. Il indique comment le VPN doit être configuré.
Format : ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
Format : struct
Champs :
transport
(TransportConfig) : transport à utiliser pour échanger des paquets avec la destination cibleerror
(struct) : informations à communiquer à l'utilisateur en cas d'erreur du service (par exemple : clé expirée, quota épuisé)message
(string) : message convivial à afficher pour l'utilisateurdetails
(string) : message à afficher lorsque l'utilisateur ouvre les détails de l'erreur afin de faciliter le dépannage
Les champs error
et transport
s'excluent mutuellement.
Exemple de réussite :
transport:
$type: tcpudp
tcp:
... # Stream Dialer for TCP
udp:
... # Packet Listener for UDP
Exemple d'erreur :
error:
message: Quota exceeded
details: Used 100GB out of 100GB
Transports
TransportConfig
TransportConfig indique comment les paquets doivent être échangés avec la destination cible
Format : Interface
Types d'Interface compatibles :
tcpudp
: TCPUDPConfig
TCPUDPConfig
TCPUDPConfig permet de configurer des stratégies TCP et UDP distinctes.
Format : struct
Champs :
tcp
(DialerConfig) : Stream Dialer à utiliser pour les connexions TCPudp
(PacketListenerConfig) : Packet Listener à utiliser pour les paquets UDP
Exemple avec un envoi TCP et UDP vers différents points de terminaison :
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
Les Endpoints établissent des connexions vers un point de terminaison fixe. Ils sont préférables aux dialers, car ils permettent des optimisations spécifiques aux points de terminaison. Il existe des Endpoints Stream et des Endpoints Packet.
EndpointConfig
Format : string | Interface
Le Endpoint string est l'adresse hôte:port du point de terminaison sélectionné. La connexion est établie à l'aide du dialer par défaut.
Types d'interface acceptés pour les Endpoints Stream et Packet :
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
DialEndpointConfig permet d'établir des connexions en composant une adresse fixe. Un dialer peut être ajouté pour associer plusieurs stratégies.
Format : struct
Champs :
address
(string) : adresse du point de terminaison à composerdialer
(DialerConfig) : dialer à utiliser pour composer l'adresse
WebsocketEndpointConfig
WebsocketEndpointConfig tunnelise les connexions de flux et de paquets vers un point de terminaison sur Websockets.
Pour les connexions de flux, chaque message est transformé en message Websocket. Pour les connexions de paquets, chaque paquet est transformé en message Websocket.
Format : struct
Champs :
url
(string) : URL du point de terminaison Websocket. Le schéma doit êtrehttps
ouwss
pour Websocket sur TLS, ethttp
ouws
pour Websocket en texte brut.endpoint
(EndpointConfig) : point de terminaison du serveur Web auquel se connecter. S'il n'est pas indiqué, la connexion s'effectue à l'adresse indiquée dans l'URL.
Dialers
Les dialers établissent des connexions à une adresse de point de terminaison. Il existe des Dialers Stream et Dialers Packet.
DialerConfig
Format : null | Interface
Le Dialer null (absent) est le dialer par défaut, qui utilise des connexions TCP directes pour Stream et des connexions UDP directes pour Packets.
Types d'interface acceptés pour les Dialers Stream et Packet :
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Packet Listeners
Un Packet Listener établit une connexion de paquet illimitée qui peut être utilisée pour envoyer des paquets vers de multiples destinations.
PacketListenerConfig
Format : null | Interface
Le Packet Listener null (absent) est le Packet Listener par défaut, c'est-à-dire le Packet Listener UDP.
Types d'interface compatibles :
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Strategies
Shadowsocks
LegacyShadowsocksConfig
LegacyShadowsocksConfig représente un Tunnel qui utilise Shadowsocks comme transport. Il implémente l'ancien format pour assurer la rétrocompatibilité.
Format : struct
Champs :
server
(string) : hôte auquel se connecterserver_port
(number) : numéro de port auquel se connectermethod
(string) : algorithme de chiffrement AEAD à utiliserpassword
(string) : utilisé pour générer la clé de chiffrementprefix
(string) : méthode de dissimulation des préfixes à utiliser (compatible avec les connexions de flux et de paquets)
Exemple :
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
LegacyShadowsocksURI représente un Tunnel qui utilise Shadowsocks comme transport. Il implémente l'ancien format d'URL pour assurer la rétrocompatibilité.
Format : string
Voir l'ancien format d'URI Shadowsocks et le schéma d'URI SIP002. Les plug-ins ne sont pas compatibles.
Exemple :
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
ShadowsocksConfig peut représenter des Stream Dialers ou des Packet Dialers, ainsi qu'un Packet Listener qui utilise Shadowsocks.
Format : struct
Champs :
endpoint
(EndpointConfig) : point de terminaison Shadowsocks auquel se connectercipher
(string) : algorithme de chiffrement AEAD à utilisersecret
(string) : utilisé pour générer la clé de chiffrementprefix
(string, facultatif) : méthode de dissimulation des préfixes à utiliser (compatible avec les connexions de flux et de paquets)
Exemple :
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
Meta Definitions
FirstSupportedConfig
FirstSupportedConfig utilise la première configuration acceptée par l'application. Cela permet d'incorporer de nouvelles configurations tout en maintenant la rétrocompatibilité avec les anciennes.
Format : struct
Champs :
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]) : liste d'options à prendre en compte
Exemple :
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
Interface
Les Interfaces permettent de choisir une implémentation parmi plusieurs. Le champ $type
est utilisé pour indiquer le type de configuration représentée.
Exemple :
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET