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
পরিবহন
ট্রান্সপোর্টকনফিগ
লক্ষ্য গন্তব্যের সাথে প্যাকেটগুলি কীভাবে বিনিময় করা উচিত তা নির্দিষ্ট করে।
বিন্যাস: ইন্টারফেস
সমর্থিত ইন্টারফেসের ধরণ:
-
tcpudp: TCPUDPConfig
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
শেষবিন্দু
এন্ডপয়েন্টগুলি একটি নির্দিষ্ট এন্ডপয়েন্টের সাথে সংযোগ স্থাপন করে। এটি ডায়ালারের চেয়ে পছন্দনীয় কারণ এটি এন্ডপয়েন্ট-নির্দিষ্ট অপ্টিমাইজেশনের অনুমতি দেয়। স্ট্রিম এবং প্যাকেট এন্ডপয়েন্ট রয়েছে।
এন্ডপয়েন্টকনফিগ
বিন্যাস: স্ট্রিং | ইন্টারফেস
স্ট্রিং এন্ডপয়েন্ট হল নির্বাচিত এন্ডপয়েন্টের হোস্ট:পোর্ট ঠিকানা। ডিফল্ট ডায়ালার ব্যবহার করে সংযোগ স্থাপন করা হয়।
স্ট্রিম এবং প্যাকেট এন্ডপয়েন্টের জন্য সমর্থিত ইন্টারফেসের ধরণ:
-
dial: ডায়ালএন্ডপয়েন্টকনফিগ -
first-supported: প্রথম-সমর্থিত কনফিগ -
websocket: ওয়েবসকেটএন্ডপয়েন্টকনফিগ -
shadowsocks: শ্যাডোসকনফিগ
ডায়ালএন্ডপয়েন্টকনফিগ
একটি নির্দিষ্ট ঠিকানায় ডায়াল করে সংযোগ স্থাপন করে। এটি একটি ডায়লার ব্যবহার করতে পারে, যা কৌশল গঠনের সুযোগ করে দেয়।
বিন্যাস: গঠন
ক্ষেত্র:
-
address( স্ট্রিং ): ডায়াল করার জন্য এন্ডপয়েন্ট ঠিকানা -
dialer( DialerConfig ): ঠিকানা ডায়াল করার জন্য যে ডায়ালার ব্যবহার করা হবে
ওয়েবসকেটএন্ডপয়েন্টকনফিগ
ওয়েবসকেটের মাধ্যমে একটি এন্ডপয়েন্টে টানেল স্ট্রিম এবং প্যাকেট সংযোগ স্থাপন করে।
স্ট্রিম সংযোগের জন্য, প্রতিটি লেখা একটি ওয়েবসকেট বার্তায় রূপান্তরিত হয়। প্যাকেট সংযোগের জন্য, প্রতিটি প্যাকেট একটি ওয়েবসকেট বার্তায় রূপান্তরিত হয়।
বিন্যাস: গঠন
ক্ষেত্র:
-
url( string ): ওয়েবসকেট এন্ডপয়েন্টের URL। TLS এর মাধ্যমে ওয়েবসকেটের জন্য স্কিমাটিhttpsঅথবাwssএবং প্লেইনটেক্সট ওয়েবসকেটের জন্যhttpঅথবাwsহতে হবে। -
endpoint( EndpointConfig ): যে ওয়েব সার্ভারের এন্ডপয়েন্টের সাথে সংযোগ স্থাপন করা হবে। যদি না থাকে, তাহলে URL-এ উল্লেখিত ঠিকানার সাথে সংযোগ স্থাপন করা হবে।
ডায়ালার
ডায়ালারগুলি একটি এন্ডপয়েন্ট ঠিকানা দিয়ে সংযোগ স্থাপন করে। স্ট্রিম এবং প্যাকেট ডায়ালার রয়েছে।
ডায়ালারকনফিগ
ফর্ম্যাট: নাল | ইন্টারফেস
নাল (অনুপস্থিত) ডায়ালার মানে ডিফল্ট ডায়ালার, যা স্ট্রিম এর জন্য সরাসরি TCP সংযোগ এবং প্যাকেট এর জন্য সরাসরি UDP সংযোগ ব্যবহার করে।
স্ট্রিম এবং প্যাকেট ডায়ালারের জন্য সমর্থিত ইন্টারফেসের ধরণ:
-
first-supported: প্রথম-সমর্থিত কনফিগ -
shadowsocks: শ্যাডোসকনফিগ
স্ট্রিম ডায়ালারের জন্য সমর্থিত ইন্টারফেসের ধরণ:
-
iptable: আইপিটেবলকনফিগ -
direct: সরাসরি -
block: ব্লক
প্যাকেট শ্রোতা
একটি প্যাকেট লিসেনার একটি সীমাহীন প্যাকেট সংযোগ স্থাপন করে যা একাধিক গন্তব্যে প্যাকেট পাঠাতে ব্যবহার করা যেতে পারে।
প্যাকেটলিস্টনারকনফিগ
ফর্ম্যাট: নাল | ইন্টারফেস
নাল (অনুপস্থিত) প্যাকেট লিসেনার মানে ডিফল্ট প্যাকেট লিসেনার, যা একটি UDP প্যাকেট লিসেনার।
সমর্থিত ইন্টারফেসের ধরণ:
-
first-supported: প্রথম-সমর্থিত কনফিগ -
shadowsocks: শ্যাডোসকসপ্যাকেটলিস্টনারকনফিগ
কৌশল
শ্যাডোসকস
লিগ্যাসিশ্যাডোসকসকনফিগ
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( EndpointConfig[] | DialerConfig[] | PacketListenerConfig[] ): বিবেচনা করার জন্য অপশনের তালিকা
উদাহরণ:
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