Shadowsocks ডকুমেন্টেশন
ন্যাভিগেশন
Shadowsocks কনফিগারেশন বিন্যাস
ফাইল কনফিগার করুন
Shadowsocks JSON ফর্ম্যাট কনফিগারেশন নেয়:
{
"সার্ভার":"my_server_ip",
"সার্ভার_পোর্ট": 8388,
"স্থানীয়_বন্দর":1080,
"পাসওয়ার্ড":"বারফু!",
"পদ্ধতি":"chacha20-ietf-poly1305"
}
JSON বিন্যাস
- সার্ভার: আপনার হোস্টনাম বা সার্ভার আইপি (IPv4/IPv6)।
- সার্ভার_পোর্ট: সার্ভার পোর্ট নম্বর।
- local_port: স্থানীয় পোর্ট নম্বর।
- পাসওয়ার্ড: স্থানান্তর এনক্রিপ্ট করতে ব্যবহৃত একটি পাসওয়ার্ড।
- পদ্ধতি: এনক্রিপশন পদ্ধতি।
এনক্রিপশন পদ্ধতি
আমরা আমাদের সার্ভার কনফিগার করি এবং সুপারিশ করি যে আপনি chacha20-ietf-poly1305 AEAD সাইফার ব্যবহার করুন কারণ এটি এনক্রিপশনের সবচেয়ে শক্তিশালী পদ্ধতি।
আপনার নিজের শ্যাডোসক সার্ভার কনফিগার করলে, আপনি "chacha20-ietf-poly1305" বা "aes-256-gcm" থেকে বেছে নিতে পারেন।
URI এবং QR কোড
অ্যান্ড্রয়েড/আইওএস-এর জন্য শ্যাডোসকগুলি BASE64 এনকোডেড URI ফর্ম্যাট কনফিগারেশনও নেয়:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
প্লেইন ইউআরআই হওয়া উচিত: ss://method:password@hostname:port
উপরের URI RFC3986 অনুসরণ করে না। এই ক্ষেত্রে পাসওয়ার্ডটি প্লেইন টেক্সট হওয়া উচিত, শতাংশ-এনকোডেড নয়।
উদাহরণ: আমরা 192.168.100.1:8888 এ একটি সার্ভার ব্যবহার করছি ব্যবহার bf-cfb এনক্রিপশন পদ্ধতি এবং পাসওয়ার্ড পরীক্ষা/!@#:.
তারপর, প্লেইন ইউআরআই দিয়ে ss://bf-cfb:test/!@#:@192.168.100.1:8888, আমরা BASE64 এনকোডেড URI তৈরি করতে পারি:
> console.log( "ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888"))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
এই ইউআরআইগুলিকে সংগঠিত করতে এবং সনাক্ত করতে সাহায্য করার জন্য, আপনি BASE64 এনকোড করা স্ট্রিংয়ের পরে একটি ট্যাগ যুক্ত করতে পারেন:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
সম্ভাষণ
Shadowsocks SOCKS5 ঠিকানা বিন্যাসে পাওয়া ঠিকানাগুলি ব্যবহার করে:
[1-বাইট টাইপ][ভেরিয়েবল-লেংথ হোস্ট][2-বাইট পোর্ট]
এখানে ঠিকানার ধরন সংজ্ঞায়িত করা হয়েছে:
- 0x01 : হোস্ট হল একটি 4-বাইটের IPv4 ঠিকানা।
- 0x03 : হোস্ট হল একটি পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং, একটি 1-বাইট দৈর্ঘ্য দিয়ে শুরু হয়, তারপরে সর্বাধিক 255-বাইট ডোমেন নাম।
- 0x04 : হোস্ট হল একটি 16-বাইটের IPv6 ঠিকানা।
পোর্ট নম্বর একটি 2-বাইট বড়-এন্ডিয়ান স্বাক্ষরবিহীন পূর্ণসংখ্যা।
বিভিন্ন TCP
ss-স্থানীয় ক্লায়েন্ট পেলোড ডেটা দ্বারা অনুসরণ করা লক্ষ্য ঠিকানা থেকে শুরু করে এনক্রিপ্ট করা ডেটা পাঠিয়ে ss-রিমোটের সাথে একটি সংযোগ শুরু করে। ব্যবহৃত সাইফারের উপর নির্ভর করে এনক্রিপশন ভিন্ন হবে।
[লক্ষ্য ঠিকানা][পেলোড]
ss-রিমোট এনক্রিপ্ট করা ডেটা গ্রহণ করে, তারপর লক্ষ্য ঠিকানাটিকে ডিক্রিপ্ট এবং পার্স করে। তারপর এটি লক্ষ্যের সাথে একটি নতুন TCP সংযোগ তৈরি করে এবং এটিতে পেলোড ডেটা ফরোয়ার্ড করে। ss-remote টার্গেট থেকে একটি উত্তর পায় তারপর ডেটা এনক্রিপ্ট করে এবং ডিসকানেক্ট না হওয়া পর্যন্ত ss-local-এ ফেরত পাঠায়।
অস্পষ্টতার উদ্দেশ্যে, স্থানীয় এবং দূরবর্তী প্রথম প্যাকেটে কিছু পেলোড সহ হ্যান্ডশেক ডেটা পাঠাতে হবে।
এর ফলে UDP
ss-local টার্গেট অ্যাড্রেস এবং পেলোড সহ এনক্রিপ্ট করা ডেটা প্যাকেট ss-রিমোটে পাঠায়।
[লক্ষ্য ঠিকানা][পেলোড]
একবার এনক্রিপ্ট করা প্যাকেটটি প্রাপ্ত হলে, ss-রিমোট লক্ষ্য ঠিকানাটিকে ডিক্রিপ্ট করে এবং পার্স করে। এটি তারপর লক্ষ্যে পেলোড সহ একটি নতুন ডেটা প্যাকেট পাঠায়। ss-remote টার্গেট থেকে ডেটা প্যাকেট গ্রহণ করে এবং প্রতিটি প্যাকেটে পেলোডে টার্গেট অ্যাড্রেস প্রিপেন্ড করে। এনক্রিপ্ট করা কপি ss-local এ ফেরত পাঠানো হয়।
[লক্ষ্য ঠিকানা][পেলোড]
এই প্রক্রিয়াটি ss-রিমোটে ss-স্থানীয় জন্য একটি নেটওয়ার্ক ঠিকানা অনুবাদ সম্পাদন করে ফুটিয়ে তোলা যেতে পারে।