ऐक्सेस कुंजी का कॉन्फ़िगरेशन

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