Tunnel
TunnelConfig
„Tunnel“ ist das Objekt auf oberster Ebene in einer Outline-Konfiguration, mit dem die Einstellungen für das VPN festgelegt werden.
Format: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
Format: struct
Felder:
transport
(TransportConfig): die Transportmethode für den Austausch von Paketen mit dem Ziel.error
(struct): die Informationen, die Nutzer im Fall eines Dienstfehlers erhalten (z. B. Schlüssel abgelaufen, Kontingent überschritten).message
(string): die Meldung, die Nutzern angezeigt wird.details
(string): die Meldung, die angezeigt wird, wenn ein Nutzer die Details zum Fehler aufruft. Diese Informationen sind hilfreich bei der Fehlerbehebung.
Die Felder error
und transport
schließen sich gegenseitig aus.
Fehlerfreies Beispiel:
transport:
$type: tcpudp
tcp:
... # Stream Dialer for TCP
udp:
... # Packet Listener for UDP
Beispiel mit Fehler:
error:
message: Quota exceeded
details: Used 100GB out of 100GB
Transport
TransportConfig
Hiermit wird angegeben, wie Pakete mit dem Ziel ausgetauscht werden.
Format: Interface
Unterstützte Schnittstellentypen:
tcpudp
: TCPUDPConfig
TCPUDPConfig
Mit TCPUDPConfig lassen sich separate TCP- und UDP-Strategien festlegen.
Format: struct
Felder:
tcp
(DialerConfig): der Stream Dialer, der für TCP-Verbindungen verwendet werden soll.udp
(PacketListenerConfig): der Packet Listener, der für UDP-Pakete verwendet werden soll.
Beispiel für das Senden von TCP und UDP an verschiedene Endpunkte:
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
Endpunkte
Hiermit werden Verbindungen zu bestimmten Endpunkten hergestellt. Diese Option ist besser als Dialer, da sie endpunktspezifische Optimierungen ermöglicht. Es gibt Stream-Endpunkte und Packet-Endpunkte.
EndpointConfig
Format: string | Interface
Der Endpunkt mit dem Format string fungiert als host:port-Adresse des ausgewählten Endpunkts. Die Verbindung wird über den Standard-Dialer hergestellt.
Unterstützte Interface-Typen für Stream-Endpunkte und Packet-Endpunkte:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
Stellt Verbindungen her, indem eine feste Adresse gewählt wird. Hierfür kann ein Dialer genutzt werden, was eine Kombination von Strategien ermöglicht.
Format: struct
Felder:
address
(string): die zu wählende Adresse des Endpunkts.dialer
(DialerConfig): der zu verwendende Dialer.
WebsocketEndpointConfig
Leitet Stream- und Paketverbindungen über WebSockets an einen Endpunkt weiter.
Bei Stream-Verbindungen wird jeder Schreibvorgang in eine WebSocket-Nachricht umgewandelt. Bei Paketverbindungen wird jedes Paket in eine WebSocket-Nachricht umgewandelt.
Format: struct
Felder:
url
(string): die URL für den WebSocket-Endpunkt. Das Schema musshttps
oderwss
für verschlüsselte WebSocket-Verbindungen über TLS undhttp
oderws
für unverschlüsselte Verbindungen sein.endpoint
(EndpointConfig): der Webserver-Endpunkt, mit dem die Verbindung hergestellt werden soll. Ist dieser nicht erreichbar, wird die in der URL angegebene Adresse für die Verbindung verwendet.
Dialer
Dialer stellen Verbindungen mithilfe einer gegebenen Endpunktadresse her. Es gibt Stream-Dialer und Packet-Dialer.
DialerConfig
Format: null | Interface
null (absent) entspricht dem Standard-Dialer, der direkte TCP-Verbindungen (Stream) und direkte UDP-Verbindungen (Packets) verwendet.
Unterstützte Interface-Typen für Stream-Dialers und Packet-Dialers:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Packet Listeners
Ein Packet Listener erstellt eine nicht gebundene Paketverbindung, die verwendet werden kann, um Pakete an verschiedene Ziele zu senden.
PacketListenerConfig
Format: null | Interface
null (absent) entspricht dem standardmäßigen Packet Listener. Dies ist ein UDP Packet Listener.
Unterstützte Schnittstellentypen:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Strategien
Shadowsocks
LegacyShadowsocksConfig
LegacyShadowsocksConfig repräsentiert einen Tunnel, der Shadowsocks als Transportmethode verwendet. Er implementiert dieses alte Format, um die Abwärtskompatibilität sicherzustellen.
Format: struct
Felder:
server
(string): der Host, mit dem eine Verbindung hergestellt werden soll.server_port
(number): die Portnummer für die Verbindung.method
(string): die zu verwendende AEAD-Chiffre.password
(string): wird verwendet, um den Verschlüsselungsschlüssel zu generieren.prefix
(string): die zu verwendende Vorwahltarnung. Diese wird nur bei Stream-Verbindungen unterstützt.
Beispiel:
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
LegacyShadowsocksURI repräsentiert einen Tunnel, der Shadowsocks als Transportmethode verwendet. Er implementiert das alte URL-Format, um die Abwärtskompatibilität sicherzustellen.
Format: string
Siehe Legacy Shadowsocks URI-Format und SIP002 URI-Schema. Wir unterstützen keine Plug-ins.
Beispiel:
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
ShadowsocksConfig kann einen Stream Dialer oder einen Packet Dialer sowie einen Packet Listener repräsentieren, die Shadowsocks verwenden.
Format: struct
Felder:
endpoint
(EndpointConfig): der Shadowsocks-Endpunkt, mit dem die Verbindung hergestellt werden soll.cipher
(string): die zu verwendende AEAD-Chiffre.secret
(string): wird verwendet, um den Verschlüsselungsschlüssel zu generieren.prefix
(string, optional): die zu verwendende Vorwahltarnung. Diese wird nur bei Stream-Verbindungen unterstützt.
Beispiel:
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
Meta-Definitionen
FirstSupportedConfig
Nutzt die erste Konfiguration, die von der Anwendung unterstützt wird. Dies ist eine Möglichkeit, neue Konfigurationen zu unterstützen und gleichzeitig die Abwärtskompatibilität mit alten Konfigurationen beizubehalten.
Format: struct
Felder:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): Liste der zu berücksichtigenden Optionen
Beispiel:
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
Interface
Interfaces bieten die Möglichkeit, eine von mehreren Implementierungen auszuwählen. Mit dem Feld $type
wird der Typ angegeben, den die Konfiguration repräsentiert.
Beispiel:
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET