Outline, वीपीएन पैरामीटर तय करने और TCP/UDP ट्रैफ़िक को मैनेज करने के लिए, YAML पर आधारित कॉन्फ़िगरेशन का इस्तेमाल करता है. कॉन्फ़िगरेशन, कई लेवल पर कॉम्पोज़ करने की सुविधा देता है. इससे, आसानी से बदले जा सकने वाले और बड़े किए जा सकने वाले सेटअप बनाने में मदद मिलती है.
टॉप-लेवल कॉन्फ़िगरेशन में TunnelConfig की जानकारी दी जाती है.
उदाहरण
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
ध्यान दें कि अब हम अलग-अलग पोर्ट या एंडपॉइंट पर और अलग-अलग प्रीफ़िक्स के साथ, टीसीपी और यूडीपी को कैसे चला सकते हैं.
डुप्लीकेट कॉन्टेंट से बचने के लिए, YAML ऐंकर और <<
मर्ज बटन का इस्तेमाल किया जा सकता है:
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
udp: *shared
अब रणनीतियां बनाई जा सकती हैं और एक से ज़्यादा हॉप किए जा सकते हैं:
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
अगर Shadowsocks जैसे "ऐसे प्रोटोकॉल जो कुछ भी नहीं लगते" को ब्लॉक किया जाता है, तो Shadowsocks-over-Websockets का इस्तेमाल किया जा सकता है. इसे डिप्लॉय करने का तरीका जानने के लिए, सर्वर के उदाहरण के तौर पर कॉन्फ़िगरेशन देखें. क्लाइंट कॉन्फ़िगरेशन इस तरह दिखेगा:
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
ध्यान दें कि वेबसोकेट एंडपॉइंट, एक एंडपॉइंट ले सकता है. इसका इस्तेमाल, डीएनएस पर आधारित ब्लॉकिंग को बायपास करने के लिए किया जा सकता है:
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
Outline के अलग-अलग क्लाइंट वर्शन के साथ काम करने की सुविधा पाने के लिए, अपने कॉन्फ़िगरेशन में first-supported
विकल्प का इस्तेमाल करें. यह खास तौर पर तब ज़रूरी होता है, जब Outline में नई रणनीतियां और सुविधाएं जोड़ी जाती हैं. ऐसा इसलिए, क्योंकि हो सकता है कि सभी उपयोगकर्ताओं ने अपने क्लाइंट सॉफ़्टवेयर को नए वर्शन पर अपडेट न किया हो. first-supported
का इस्तेमाल करके, एक ऐसा कॉन्फ़िगरेशन दिया जा सकता है जो अलग-अलग प्लैटफ़ॉर्म और क्लाइंट वर्शन पर आसानी से काम करता है. इससे, पुराने वर्शन के साथ काम करने की सुविधा और उपयोगकर्ताओं को एक जैसा अनुभव मिलता है.
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