Tunnel
TunnelConfig
Tunnel è l'oggetto di livello superiore in una configurazione Outline. Specifica come deve essere configurata la VPN.
Formato: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
Formato: struct
Campi:
transport
(TransportConfig): il Transport da utilizzare per scambiare i pacchetti con la destinazione target.error
(struct): informazioni da comunicare all'utente in caso di errore del servizio (ad es. chiave scaduta, quota esaurita).message
(string): messaggio semplice da mostrare all'utente.details
(string): messaggio da mostrare quando l'utente apre i dettagli dell'errore. Utile per la risoluzione dei problemi.
I campi error
e transport
si escludono a vicenda.
Esempio riuscito:
transport:
$type: tcpudp
tcp:
... # Stream Dialer for TCP
udp:
... # Packet Listener for UDP
Esempio di errore:
error:
message: Quota exceeded
details: Used 100GB out of 100GB
Transport
TransportConfig
Specifica come i pacchetti devono essere scambiati con la destinazione target.
Formato: Interface
Tipi di Interface supportati:
tcpudp
: TCPUDPConfig
TCPUDPConfig
TCPUDPConfig consente di impostare strategie TCP e UDP separate.
Formato: struct
Campi:
tcp
(DialerConfig): lo Stream Dialer da utilizzare per le connessioni TCP.udp
(PacketListenerConfig): il Packet Listener da utilizzare per i pacchetti UDP.
Esempio di invio di TCP e UDP a endpoint diversi:
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
Endpoint
Gli endpoint stabiliscono connessioni con un endpoint fisso. Sono preferibili ai dialer poiché consentono ottimizzazioni specifiche per gli endpoint. Esistono Stream Endpoint e Packet Endpoint.
EndpointConfig
Formato: string | Interface
L'endpoint string è l'indirizzo host:porta dell'endpoint selezionato. La connessione viene stabilita tramite il dialer predefinito.
Tipi di Interface supportati per Stream Endpoint e Packet Endpoint:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
Stabilisce connessioni componendo un indirizzo fisso. Può essere dotato di un dialer, che consente la composizione delle strategie.
Formato: struct
Campi:
address
(string): l'indirizzo dell'endpoint da comporre.dialer
(DialerConfig): il dialer da utilizzare per comporre l'indirizzo.
WebsocketEndpointConfig
Connessioni Stream e Packet dei Tunnel verso un endpoint tramite Websocket.
Per le connessioni Stream, ogni scrittura viene trasformata in un messaggio Websocket. Per le connessioni Packet, ogni pacchetto viene convertito in un messaggio Websocket.
Formato: struct
Campi:
url
(string): l'URL per l'endpoint Websocket. Lo schema deve esserehttps
owss
per Websocket su TLS ehttp
ows
per Websocket con testo non crittografato.endpoint
(EndpointConfig): l'endpoint del server web a cui connettersi. Se assente, si connette all'indirizzo specificato nell'URL.
Dialer
I dialer stabiliscono connessioni in base all'indirizzo di un endpoint. Esistono Stream Dialer e Packet Dialer.
DialerConfig
Formato: null | Interface
Il dialer null (assente) indica il dialer predefinito, che utilizza connessioni TCP dirette per Stream e connessioni UDP dirette per Packet.
Tipi di Interface supportati per Stream Dialer e Packet Dialer:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Packet Listener
Un Packet Listener stabilisce una connessione Packet illimitata che può essere utilizzata per inviare pacchetti a più destinazioni.
PacketListenerConfig
Formato: null | Interface
Il Packet Listener null (assente) indica il Packet Listener predefinito, che è un Packet Listener UDP.
Tipi di Interface supportati:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Strategie
Shadowsocks
LegacyShadowsocksConfig
LegacyShadowsocksConfig rappresenta un Tunnel che utilizza Shadowsocks come Transport. Implementa il formato legacy per la compatibilità con le versioni precedenti.
Formato: struct
Campi:
server
(string): l'host a cui connettersi.server_port
(number): il numero di porta a cui connettersi.method
(string): il cifrario di crittografia autenticata con dati associati da utilizzare.password
(string): utilizzato per generare la chiave di crittografia.prefix
(string): il mascheramento del prefisso da utilizzare. Supportato sulle connessioni Stream e Packet.
Esempio:
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
LegacyShadowsocksURI rappresenta un Tunnel che utilizza Shadowsocks come Transport. Implementa il formato URL legacy per la compatibilità con le versioni precedenti.
Formato: string
Consulta Formato LegacyShadowsocksURI e Schema URI SIP002. Non supportiamo i plug-in.
Esempio:
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
ShadowsocksConfig può rappresentare uno Stream Dialer o un Packet Dialer, così come un Packet Listener che utilizza Shadowsocks.
Formato: struct
Campi:
endpoint
(EndpointConfig): l'endpoint Shadowsocks a cui connettersi.cipher
(string): il cifrario di crittografia autenticata con dati associati da utilizzare.secret
(string): utilizzato per generare la chiave di crittografia.prefix
(string, facoltativo): il mascheramento del prefisso da utilizzare. Supportato sulle connessioni Stream e Packet.
Esempio:
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
Meta definizioni
FirstSupportedConfig
Utilizza la prima configurazione supportata dall'applicazione. Questo è un modo per incorporare le nuove configurazioni mantenendo la compatibilità con quelle precedenti.
Formato: struct
Campi:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): elenco delle opzioni di cui tenere conto.
Esempio:
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
Interface
Interface consente di scegliere una tra più implementazioni. Utilizza il campo $type
per specificare il tipo rappresentato da Config.
Esempio:
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET