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

VPN প্যারামিটার সংজ্ঞায়িত করতে এবং TCP/UDP ট্র্যাফিক পরিচালনা করতে Outline একটি 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

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

ডুপ্লিকেশন এড়াতে আপনি 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 এর মতো "look-like-nothing" প্রোটোকল ব্লক করার ক্ষেত্রে, আপনি 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 for backwards-compatibility ব্যবহার করুন:

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 কীভাবে কনফিগার করা উচিত তা নির্দিষ্ট করে।

ফর্ম্যাট: এক্সপ্লিসিটটানেলকনফিগ | লিগ্যাসিশ্যাডোসকসকনফিগ | লিগ্যাসিশ্যাডোসকসইউআরআই

স্পষ্ট টানেল কনফিগ

বিন্যাস: গঠন

ক্ষেত্র:

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

ক্ষেত্রের 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

পরিবহন

ট্রান্সপোর্টকনফিগ

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

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

সমর্থিত ইন্টারফেসের ধরণ:

TCPUDPConfig সম্পর্কে

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

বিন্যাস: গঠন

ক্ষেত্র:

  • tcp ( DialerConfig ): TCP সংযোগের জন্য ব্যবহারযোগ্য স্ট্রিম ডায়ালার।
  • 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

শেষবিন্দু

এন্ডপয়েন্টগুলি একটি নির্দিষ্ট এন্ডপয়েন্টের সাথে সংযোগ স্থাপন করে। এটি ডায়ালারের চেয়ে পছন্দনীয় কারণ এটি এন্ডপয়েন্ট-নির্দিষ্ট অপ্টিমাইজেশনের অনুমতি দেয়। স্ট্রিম এবং প্যাকেট এন্ডপয়েন্ট রয়েছে।

এন্ডপয়েন্টকনফিগ

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

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

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

ডায়ালএন্ডপয়েন্টকনফিগ

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

বিন্যাস: গঠন

ক্ষেত্র:

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

ওয়েবসকেটএন্ডপয়েন্টকনফিগ

ওয়েবসকেটের মাধ্যমে একটি এন্ডপয়েন্টে টানেল স্ট্রিম এবং প্যাকেট সংযোগ স্থাপন করে।

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

বিন্যাস: গঠন

ক্ষেত্র:

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

ডায়ালার

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

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

ফর্ম্যাট: নাল | ইন্টারফেস

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

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

স্ট্রিম ডায়ালারের জন্য সমর্থিত ইন্টারফেসের ধরণ:

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

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

প্যাকেটলিস্টনারকনফিগ

ফর্ম্যাট: নাল | ইন্টারফেস

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

সমর্থিত ইন্টারফেসের ধরণ:

কৌশল

শ্যাডোসকস

লিগ্যাসিশ্যাডোসকসকনফিগ

LegacyShadowsocksConfig একটি টানেল উপস্থাপন করে যা Shadowsocks কে পরিবহন হিসেবে ব্যবহার করে। এটি ব্যাকওয়ার্ড-সামঞ্জস্যতার জন্য লিগ্যাসি ফর্ম্যাট প্রয়োগ করে।

বিন্যাস: গঠন

ক্ষেত্র:

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

উদাহরণ:

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

লিগ্যাসিশ্যাডোসকসইউআরআই

LegacyShadowsocksURI একটি টানেল উপস্থাপন করে যা Shadowsocks কে পরিবহন হিসেবে ব্যবহার করে। এটি ব্যাকওয়ার্ড-সামঞ্জস্যতার জন্য লিগ্যাসি URL ফর্ম্যাট প্রয়োগ করে।

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

লিগ্যাসি শ্যাডোসকস ইউআরআই ফর্ম্যাট এবং SIP002 ইউআরআই স্কিম দেখুন। আমরা প্লাগইন সমর্থন করি না।

উদাহরণ:

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

শ্যাডোসকসকনফিগ

ShadowsocksConfig একটি স্ট্রিম বা প্যাকেট ডায়ালারের পাশাপাশি একটি প্যাকেট লিসেনারও উপস্থাপন করতে পারে যা Shadowsocks ব্যবহার করে।

বিন্যাস: গঠন

ক্ষেত্র:

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

উদাহরণ:

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

নির্বাচনী রাউটিং

IPTableConfig সম্পর্কে

একটি স্ট্রিম ডায়ালার প্রতিনিধিত্ব করে যা গন্তব্য আইপি ঠিকানার উপর ভিত্তি করে সংযোগগুলিকে রুট করে। এটি table থাকা নিয়মের তালিকার সাথে গন্তব্য আইপির সাথে মেলে। যদি কোনও নিয়ম মিলে যায়, তাহলে সংযোগটি সেই নিয়মে নির্দিষ্ট dialer দ্বারা পরিচালিত হয়। যদি কোনও নিয়ম মেলে না, তাহলে সংযোগটি fallback ডায়ালার দ্বারা পরিচালিত হয়।

এটি একটি স্ট্রিম-অনলি ডায়ালার এবং এটি tcp পরিবহনের জন্য ব্যবহার করা উচিত।

বিন্যাস: গঠন

ক্ষেত্র:

  • table ( তালিকা ): রাউটিং নিয়মের একটি তালিকা।
    • ips ( তালিকা ): IP ঠিকানা বা CIDR রেঞ্জের একটি তালিকা (যেমন, 192.0.2.0/24 )।
    • dialer ( DialerConfig ): গন্তব্য আইপি যদি ips এর কোনও এন্ট্রির সাথে মিলে যায় তাহলে যে ডায়ালারটি ব্যবহার করা হবে।
  • fallback ( DialerConfig ): যদি গন্তব্য আইপি table কোনও নিয়মের সাথে মেলে না, তাহলে যে ডায়ালারটি ব্যবহার করা হবে।

উদাহরণ:

# This config blocks TCP connections to 192.0.2.0/24 and sends all
# other TCP traffic directly.
transport:
  $type: tcpudp
  tcp:
    $type: iptable
    table:
      - ips:
          - 192.0.2.0/24
        dialer:
          $type: block
    fallback:
      $type: direct
  udp:
    $type: shadowsocks
    # ... udp config

ইউটিলিটি ডায়ালার

সরাসরি

একটি সরাসরি স্ট্রিম ডায়ালার প্রতিনিধিত্ব করে।

এটি একটি স্ট্রিম-অনলি ডায়ালার এবং এটি tcp পরিবহনের জন্য ব্যবহার করা উচিত।

উদাহরণ:

dialer:
  $type: direct

ব্লক করুন

একটি ডায়ালার প্রতিনিধিত্ব করে যা সমস্ত সংযোগ প্রচেষ্টা ব্লক করে। এটি নির্দিষ্ট গন্তব্যস্থলে ট্র্যাফিক স্পষ্টভাবে অস্বীকার করার জন্য কার্যকর হতে পারে, বিশেষ করে যখন IPTableConfig এর সাথে ব্যবহার করা হয়।

এটি একটি স্ট্রিম-অনলি ডায়ালার এবং এটি tcp পরিবহনের জন্য ব্যবহার করা উচিত।

উদাহরণ:

dialer:
  $type: block

মেটা সংজ্ঞা

প্রথম সমর্থিত কনফিগ

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

বিন্যাস: গঠন

ক্ষেত্র:

উদাহরণ:

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

ইন্টারফেস

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

উদাহরণ:

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