Outline nutzt eine YAML-basierte Konfiguration, um VPN-Parameter zu definieren und TCP-/UDP-Traffic zu bewältigen. Die Konfiguration unterstützt Komponierbarkeit auf mehreren Ebenen und ermöglicht so flexible und erweiterbare Setups.
TunnelConfig ist das Element auf oberster Ebene der Konfiguration.
Beispiele
Eine typische Shadowsocks-Konfiguration sieht so aus:
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
Hinweis: TCP und UDP können über verschiedene Ports oder auf unterschiedlichen Endpunkten ausgeführt werden und sich in ihren Präfixen unterscheiden.
Sie können YAML-Anker und den Merge-Schlüssel <<
verwenden, um Duplikate zu vermeiden:
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
udp: *shared
Es ist jetzt möglich, Strategien zu komponieren und Multi-Hops auszuführen:
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
Statt „getarnte“ Protokolle wie Shadowsocks zu blockieren, können Sie Shadowsocks-over-WebSockets verwenden. In der Server-Beispielkonfiguration sehen Sie, wie dies bereitgestellt wird. Eine Client-Konfiguration sieht so aus:
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
Hinweis: Der WebSocket-Endpunkt kann wiederum einen Endpunkt haben, der genutzt werden kann, um die DNS-basierte Blockierung zu umgehen:
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
Um die Kompatibilität mit unterschiedlichen Outline-Client-Versionen sicherzustellen, verwenden Sie die Option first-supported
in Ihrer Konfiguration. Das ist besonders wichtig, da Outline neue Strategien und Funktionen hinzugefügt werden und möglicherweise nicht alle Nutzer die neueste Clientsoftware haben. Mit first-supported
können Sie eine Konfiguration bereitstellen, die auf verschiedenen Plattformen und Clientversionen nahtlos funktioniert. So sorgen Sie für Abwärtskompatibilität und eine einheitliche Nutzererfahrung.
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