আউটলাইন কনফিগারেশন রেফারেন্স

আউটলাইন VPN প্যারামিটার সংজ্ঞায়িত করতে এবং TCP/UDP ট্র্যাফিক পরিচালনা করতে YAML-ভিত্তিক কনফিগারেশন ব্যবহার করে। কনফিগারেশনটি একাধিক স্তরে সংমিশ্রণযোগ্যতা সমর্থন করে, নমনীয় এবং এক্সটেনসিবল সেটআপ সক্ষম করে।

শীর্ষ-স্তরের কনফিগারেশন একটি TunnelConfig নির্দিষ্ট করে।

উদাহরণ

একটি সাধারণ Shadowsocks কনফিগারেশন এই মত দেখাবে:

transport:
  $type: tcpudp

  tcp:
    $type: shadowsocks
    endpoint: ss.example.com:4321
    cipher: chacha20-ietf-poly1305
    secret: SECRET
    prefix: "POST "

  udp:
    $type: shadowsocks
    endpoint: ss.example.com:4321
    cipher: chacha20-ietf-poly1305
    secret: SECRET

লক্ষ্য করুন কিভাবে আমরা এখন বিভিন্ন পোর্ট বা এন্ডপয়েন্টে টিসিপি এবং ইউডিপি চালাতে পারি।

আপনি ডুপ্লিকেশন এড়াতে 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

শ্যাডোসকসের মতো "লুক-লাইক-নথিং" প্রোটোকল ব্লক করার ক্ষেত্রে, আপনি WebSockets-এ Shadowsocks ব্যবহার করতে পারেন। এটি কিভাবে স্থাপন করতে হয় তার সার্ভার উদাহরণ কনফিগারেশন দেখুন। একটি ক্লায়েন্ট কনফিগারেশন দেখতে হবে:

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

নোট করুন যে ওয়েবসকেট এন্ডপয়েন্ট, ঘুরে, একটি এন্ডপয়েন্ট নিতে পারে, যা DNS-ভিত্তিক ব্লকিং বাইপাস করতে ব্যবহার করা যেতে পারে:

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

মনে রাখবেন WebSockets এখনও Windows এ সমর্থিত নয়। সমস্ত প্ল্যাটফর্মের জন্য একটি একক কনফিগার করার জন্য, পিছনের-সামঞ্জস্যতার জন্য একটি 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

টানেল

টানেল কনফিগ

টানেল হল একটি আউটলাইন কনফিগারেশনের শীর্ষ-স্তরের বস্তু। এটি নির্দিষ্ট করে কিভাবে VPN কনফিগার করা উচিত।

বিন্যাস: ExplicitTunnelConfig | LegacyShadowsocksConfig | Legacy ShadowsocksSURI

ExplicitTunnel Config

বিন্যাস: struct

ক্ষেত্র:

  • transport ( TransportConfig ): টার্গেট গন্তব্যের সাথে প্যাকেজ বিনিময় করার জন্য ব্যবহার করা পরিবহন
  • error ( struct ): পরিষেবা ত্রুটির ক্ষেত্রে ব্যবহারকারীর সাথে যোগাযোগ করার জন্য তথ্য (যেমন কী মেয়াদ শেষ, কোটা শেষ)
    • message ( স্ট্রিং ): ব্যবহারকারীর কাছে প্রদর্শনের জন্য ব্যবহারকারী-বান্ধব বার্তা
    • details ( স্ট্রিং ): ব্যবহারকারী ত্রুটির বিবরণ খুললে প্রদর্শনের জন্য বার্তা। সমস্যা সমাধানের জন্য সহায়ক।

ক্ষেত্র error এবং transport পারস্পরিক একচেটিয়া.

সফল উদাহরণ:

transport:
  $type: tcpudp
  tcp:
    ...  # Stream Dialer for TCP
  udp:
    ...  # Packet Listener for UDP

ত্রুটি উদাহরণ:

error:
  message: Quota exceeded
  details: Used 100GB out of 100GB

পরিবহন

Transport Config

লক্ষ্য গন্তব্যের সাথে প্যাকেটগুলি কীভাবে বিনিময় করা উচিত তা নির্দিষ্ট করে।

বিন্যাস: ইন্টারফেস

সমর্থিত ইন্টারফেস প্রকার:

TCPUDPC কনফিগারেশন

TCPUDPConfig আলাদা TCP এবং UDP কৌশল সেট করার অনুমতি দেয়।

বিন্যাস: struct

ক্ষেত্র:

  • tcp ( DialerConfig ): টিসিপি সংযোগের জন্য ব্যবহার করার জন্য স্ট্রিম ডায়লার।
  • udp ( PacketListenerConfig ): UDP প্যাকেটের জন্য ব্যবহার করার জন্য প্যাকেট লিসেনার।

বিভিন্ন প্রান্তে TCP এবং UDP পাঠানোর উদাহরণ:

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 Config

বিন্যাস: স্ট্রিং | ইন্টারফেস

স্ট্রিং এন্ডপয়েন্ট হল নির্বাচিত এন্ডপয়েন্টের হোস্ট:পোর্ট অ্যাড্রেস। সংযোগটি ডিফল্ট ডায়ালার ব্যবহার করে প্রতিষ্ঠিত হয়।

স্ট্রিম এবং প্যাকেট এন্ডপয়েন্টের জন্য সমর্থিত ইন্টারফেস প্রকার:

DialEndpointConfig

একটি নির্দিষ্ট ঠিকানা ডায়াল করে সংযোগ স্থাপন করে। এটি একটি ডায়ালার নিতে পারে, যা কৌশলগুলির রচনার জন্য অনুমতি দেয়।

বিন্যাস: struct

ক্ষেত্র:

  • address ( স্ট্রিং ): ডায়াল করার শেষ পয়েন্ট ঠিকানা
  • dialer ( DialerConfig ): ঠিকানা ডায়াল করতে ডায়ালার ব্যবহার করা হয়

WebsocketEndpointConfig

WebSockets এর উপর দিয়ে একটি শেষ পয়েন্টে টানেল স্ট্রিম এবং প্যাকেট সংযোগ।

স্ট্রিম সংযোগের জন্য, প্রতিটি লেখা একটি WebSocket বার্তায় পরিণত হয়। প্যাকেট সংযোগের জন্য, প্রতিটি প্যাকেট একটি WebSocket বার্তায় পরিণত হয়।

বিন্যাস: struct

ক্ষেত্র:

  • url ( স্ট্রিং ): WebSocket এন্ডপয়েন্টের URL। TLS এর উপর WebSocket এর জন্য স্কিমা অবশ্যই https বা wss এবং প্লেইনটেক্সট WebSocket এর জন্য http বা ws হতে হবে।
  • endpoint ( EndpointConfig ): সংযোগ করার জন্য ওয়েব সার্ভারের এন্ডপয়েন্ট। অনুপস্থিত থাকলে, URL-এ উল্লেখিত ঠিকানার সাথে সংযুক্ত হয়।

ডায়ালার

ডায়ালার একটি এন্ডপয়েন্ট ঠিকানা দিয়ে সংযোগ স্থাপন করে। স্ট্রিম এবং প্যাকেট ডায়ালার আছে।

ডায়ালার কনফিগারেশন

বিন্যাস: শূন্য | ইন্টারফেস

নাল (অনুপস্থিত) ডায়ালার মানে ডিফল্ট ডায়ালার, যা স্ট্রিমের জন্য সরাসরি TCP সংযোগ এবং প্যাকেটের জন্য সরাসরি UDP সংযোগ ব্যবহার করে।

স্ট্রিম এবং প্যাকার ডায়ালারের জন্য সমর্থিত ইন্টারফেস প্রকার:

প্যাকেট শ্রোতা

একটি প্যাকেট লিসেনার একটি সীমাহীন প্যাকেট সংযোগ স্থাপন করে যা একাধিক গন্তব্যে প্যাকেট পাঠাতে ব্যবহার করা যেতে পারে।

PacketListenerConfig

বিন্যাস: শূন্য | ইন্টারফেস

নাল (অনুপস্থিত) প্যাকেট লিসেনার মানে ডিফল্ট প্যাকেট লিসেনার, যা একটি UDP প্যাকেট লিসেনার।

সমর্থিত ইন্টারফেস প্রকার:

কৌশল

শ্যাডোসক্স

LegacyShadowsocksConfig

LegacyShadowsocksConfig একটি টানেলের প্রতিনিধিত্ব করে যা শ্যাডোসককে পরিবহন হিসেবে ব্যবহার করে। এটি পিছনের-সামঞ্জস্যতার জন্য উত্তরাধিকার বিন্যাস প্রয়োগ করে।

বিন্যাস: struct

ক্ষেত্র:

  • server ( স্ট্রিং ): যে হোস্টের সাথে সংযোগ করতে হবে
  • server_port ( নম্বর ): যে পোর্ট নম্বরে সংযোগ করতে হবে
  • method ( স্ট্রিং ): AEAD সাইফার ব্যবহার করার জন্য
  • password ( স্ট্রিং ): এনক্রিপশন কী তৈরি করতে ব্যবহৃত হয়
  • prefix ( স্ট্রিং ): উপসর্গ ছদ্মবেশ ব্যবহার করার জন্য। স্ট্রিম এবং প্যাকেট সংযোগে সমর্থিত।

উদাহরণ:

server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "

Legacy ShadowsocksSURI

LegacyShadowsocksSURI একটি টানেলের প্রতিনিধিত্ব করে যা পরিবহন হিসাবে শ্যাডোসককে ব্যবহার করে। এটি ব্যাকওয়ার্ড-কম্প্যাটিবিলিটির জন্য লিগ্যাসি ইউআরএল ফরম্যাট প্রয়োগ করে।

বিন্যাস: স্ট্রিং

Legacy Shadowsocks URI ফরম্যাট এবং SIP002 URI স্কিম দেখুন। আমরা প্লাগইন সমর্থন করি না।

উদাহরণ:

ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20

ShadowsocksConfig

ShadowsocksConfig একটি স্ট্রীম বা প্যাকেট ডায়ালার প্রতিনিধিত্ব করতে পারে, সেইসাথে একটি প্যাকেট লিসেনার যেটি Shadowsocks ব্যবহার করে।

বিন্যাস: struct

ক্ষেত্র:

  • endpoint ( EndpointConfig ): শ্যাডোসকস এন্ডপয়েন্টের সাথে সংযোগ করতে হবে
  • cipher ( স্ট্রিং ): AEAD সাইফার ব্যবহার করার জন্য
  • secret ( স্ট্রিং ): এনক্রিপশন কী তৈরি করতে ব্যবহৃত হয়
  • prefix ( স্ট্রিং , ঐচ্ছিক): ব্যবহার করার জন্য উপসর্গ ছদ্মবেশ । স্ট্রিম এবং প্যাকেট সংযোগে সমর্থিত।

উদাহরণ:

endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "

মেটা সংজ্ঞা

FirstSupported Config

অ্যাপ্লিকেশন দ্বারা সমর্থিত প্রথম কনফিগারেশন ব্যবহার করে। এটি পুরানো কনফিগারগুলির সাথে পিছনের-সামঞ্জস্যপূর্ণ থাকাকালীন নতুন কনফিগারেশনগুলিকে অন্তর্ভুক্ত করার একটি উপায়।

বিন্যাস: struct

ক্ষেত্র:

উদাহরণ:

options:
  - $type: websocket
    url: wss://example.com/SECRET_PATH
  - ss.example.com:4321

ইন্টারফেস

ইন্টারফেসগুলি একাধিক বাস্তবায়নের মধ্যে একটি বেছে নেওয়ার অনুমতি দেয়। কনফিগার যে ধরনের প্রতিনিধিত্ব করে তা নির্দিষ্ট করতে এটি $type ক্ষেত্র ব্যবহার করে।

উদাহরণ:

$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET