Tor রিলে বনাম VPN সার্ভার: কেন এগুলো একে অপরের বদল নয়
Tor রিলে-তে খোলা পোর্ট VPN এন্ডপয়েন্ট নয়। আগে দেখুন পোর্টটি কী সেবা দেয়, রিলের ভূমিকা, SOCKS লিসেনারের পরিধি এবং প্রোফাইল।
আপনার কাছে একটি ঠিকানা আছে, পোর্টটি উত্তর দেয়, আর একটি ক্লায়েন্ট কোনো অভিযোগ ছাড়াই তা গ্রহণ করে। এর কোনোটিই Tor রিলেকে VPN এন্ডপয়েন্ট বানায় না, এবং ভুলটি ব্যয়বহুল কারণ প্রোফাইলটি পরিষ্কারভাবে ইমপোর্ট হয় এবং পরে হ্যান্ডশেকে ব্যর্থ হয়। আমি নিচের চারটি পরীক্ষা ক্রমে ব্যবহার করি; প্রতিটির একটি থামার শর্ত আছে, আর আগে থামাই মূল কথা। প্রথম পরীক্ষা ব্যর্থ হলে বাকিগুলো আপনাকে সাহায্য করতে পারবে না।
পোর্টটি আসলে কী সেবা দেয় তা দেখুন
খোলা পোর্ট একটি লিসেনারের প্রমাণ দেয়, এর বেশি নয়। একটি রিলের ORPort TLS হ্যান্ডশেকের পর Tor-এর নিজস্ব সেল দিয়ে কথা বলে, তাই সফল TLS প্রোব প্রায় কিছুই বলে না যে সেখানে VPN প্রোটোকল গৃহীত হয় কি না:
nc -vz 203.0.113.20 443
openssl s_client -connect 203.0.113.20:443 -brief < /dev/null
সার্টিফিকেট আছে কি না তা নয়, সার্টিফিকেটটি পড়ুন। রিলগুলো ইচ্ছাকৃতভাবে সাধারণ নামসহ স্ব-স্বাক্ষরিত সার্টিফিকেট উপস্থাপন করে, কারণ রিলের ট্রাফিক সাধারণ HTTPS-এর মতো দেখতে হবে; আর VPN সার্ভারের সার্টিফিকেট আপনার প্রোফাইল যে নাম আশা করে তা বহন করে। যদি প্রতিপক্ষ কখনো VPN প্রোটোকলের প্রথম প্যাকেটের উত্তর না দেয়, তবে প্রোফাইল সম্পাদনার কোনো পরিমাণই ফলাফল বদলাবে না।
যদি ঠিকানাটি আপনার ক্লায়েন্ট যে হ্যান্ডশেক পাঠায় তা সম্পূর্ণ না করে, এখানেই থামুন। এটি একটি প্রোটোকল উত্তর, কনফিগারেশন সমস্যা নয়, এবং ইমপোর্ট করা প্রোফাইল চিরকাল 'connecting' অবস্থায় বসে থাকার সবচেয়ে সাধারণ কারণ এটিই।
রিলের ভূমিকা দেখুন, নেটওয়ার্কের আকার নয়
রিলের ভূমিকা ভিন্ন ভিন্ন কাজ করে। একটি গার্ড ক্লায়েন্টদের জন্য প্রথম হপ, একটি মিডল রিলে অন্য রিলেগুলোর মধ্যে সার্কিট এগিয়ে দেয়, একটি এক্সিট হলো সেটি যা গন্তব্য স্পর্শ করে, আর একটি ব্রিজ হলো BridgeDB-এর মাধ্যমে বিতরণ করা একটি অপ্রকাশ্য প্রবেশবিন্দু। Tor-এর পরিভাষা তালিকা এই সংজ্ঞাগুলো আলাদা রাখে, আর পৌঁছানোযোগ্যতা প্রতিটি ভূমিকার অংশ, অথচ ইচ্ছামতো ক্লায়েন্টকে সেবা দেওয়ার অনুমতি কোনোটিরই অংশ নয়।
এক্সিট নীতিটি পড়ার যোগ্য, কারণ এটিই একমাত্র অংশ যা ফরওয়ার্ডিং নিয়মের মতো দেখায়, এবং এটি নিয়ন্ত্রণ করে এক্সিট কোন গন্তব্যে বেরোতে দেবে, কোন ক্লায়েন্টকে ভেতরে ঢুকতে দেবে তা নয়। পোর্ট 25 ব্লক করা একটি কঠোর এক্সিট নীতি বহির্গামী অপব্যবহার নিয়ন্ত্রণ সম্পর্কে কিছু বলে, আপনি মেশিনটির দিকে OpenVPN ক্লায়েন্ট পাঠাতে পারবেন কি না সে সম্পর্কে নয়।
যদি আপনি সুনাম থেকে যুক্তি করেন তবে থামুন: রিলেগুলো ট্রাফিক ফরওয়ার্ড করে বলে ঠিকানাটি আপনারটাও গ্রহণ করবে — এমন নয়। Tor কনসেনসাস ও নিজস্ব প্রোটোকলের মাধ্যমে পথ বেছে নেয়; VPN ক্লায়েন্ট অংশগ্রহণকারী নয় এবং যোগ দেওয়ার কোনো সার্কিট তার নেই।
SOCKS লিসেনারটি স্থানীয় না সার্বজনীন তা দেখুন
Tor-এর ক্লায়েন্ট একই মেশিনের অ্যাপ্লিকেশনগুলোর জন্য একটি SOCKS ইন্টারফেস প্রকাশ করে, ডিফল্টভাবে লুপব্যাকের উপর। ওই লিসেনারটি স্থানীয় সুবিধা, রিল ইন্টারনেটকে দেওয়া কোনো সেবা নয়, আর এটিকে সার্বজনীন প্রক্সি হিসেবে গণনা করাই মানুষকে অজান্তে খোলা রিলে চালানোর দিকে নিয়ে যায়:
ss -ltnp | grep 9050
curl --socks5-hostname 127.0.0.1:9050 https://check.torproject.org
বাইন্ড ঠিকানাই সূত্র। 127.0.0.1:9050-এ থাকা SocksPort নিজের কাজ করছে; যে একটি 0.0.0.0-এ শোনে এবং বাইরে থেকে পৌঁছানো যায়, সেটি খোলা প্রক্সি, আর Tor-এর নিজস্ব অ্যাক্সেস নীতি নিয়ন্ত্রণ ঠিক এজন্যই আছে যে এই প্রকাশ একটি সমস্যা, বৈশিষ্ট্য নয়।
Tor প্রয়োজন এমন অ্যাপ্লিকেশনের জন্য এটিকে লুপব্যাক পোর্টে নির্দেশ করুন এবং Tor-কে নাম সমাধান করতে দিন, যা উপরের socks5h রূপটি করে। ওই পোর্টের জন্য রিলের ঠিকানা বসাবেন না; আপনার অ্যাপ্লিকেশন যে ইন্টারফেস চায় রিল সেটি দেয় না।
VPN প্রোফাইল সত্যিকারের এন্ডপয়েন্টের সঙ্গে মেলে কি না দেখুন
VPN প্রোফাইল প্রত্যাশার একটি বান্ডেল: OpenVPN-এর দরকার সার্ভার সার্টিফিকেট বা CA, একটি ক্লায়েন্ট সার্টিফিকেট ও কী, এবং সাধারণত একটি TLS কী, আর WireGuard-এর দরকার পিয়ারের পাবলিক কী, একটি এন্ডপয়েন্ট ও অনুমোদিত IP। এর কোনোটিই একটি ঠিকানা ও একটি খোলা পোর্ট থেকে আহরণ করা যায় না, তাই এভাবে তৈরি প্রোফাইল সংযোগের সময় নয়, প্রথম বিনিময়েই ব্যর্থ হয়।
যখন আপনাকে একটি প্রোফাইল দেওয়া হয়, এটি আপনার নিয়ন্ত্রিত কোনো এন্ডপয়েন্ট বা আপনি শনাক্ত করতে পারেন এমন কোনো প্রদানকারীর বিপরীতে যাচাই করুন:
wg show
openvpn --config client.ovpn --verb 4
OpenVPN লগে একটি TLS আলোচনার ত্রুটি সরাসরি অমিলটির নাম বলে; wg show-এ হ্যান্ডশেক লাইনহীন পিয়ার কখনো একটি সম্পূর্ণ করেনি। দুটিই ক্লায়েন্টের ঘুরন্ত সূচকের চেয়ে বেশি তথ্য দেয়, আর দুটিই Tor-এর দিকে নয়, কী উপাদান বা প্রোটোকলের দিকে ইঙ্গিত করে।
আপনার আসলে কোন সুরক্ষা দরকার তা দেখুন
এই পরীক্ষাটিই স্থাপত্য নির্ধারণ করে। Tor Browser আপনাকে সার্কিট বিচ্ছিন্নতা ও ফিঙ্গারপ্রিন্ট প্রতিরক্ষা দেয় যা VPN দেয় না; VPN গন্তব্য যে ঠিকানা দেখে তা বদলায় এবং আপনাকে প্রদানকারীর কাছে প্রমাণ করে। এদের মধ্যে বাছাই হুমকি-মডেলের প্রশ্ন, সামঞ্জস্যের প্রশ্ন নয়, আর দুটিকে মিশিয়ে ফেললে এমন ব্যবস্থা দাঁড়ায় যা গোপন দেখায় কিন্তু গোপন নয়।
চেইনের একটি ক্রম আছে। Tor ট্রাফিক বহনকারী VPN একটি সমর্থিত বিন্যাস, কারণ Tor-এর ক্লায়েন্টের কেবল বহির্গামী TCP দরকার। Tor-এর ভেতরে টানেল করা VPN ক্লায়েন্ট একই জিনিস নয় এবং Tor ক্লায়েন্ট যা বাস্তবায়ন করে তাও নয়, তাই এটি ধরে পরিকল্পনা করবেন না।
কিছু ইমপোর্ট করার আগে চারটি বিষয়ই নিশ্চিত করুন:
- পোর্টটি আপনার প্রোটোকলের হ্যান্ডশেক সম্পূর্ণ করে, শুধু TCP সংযোগ নয়।
- আপনি হোস্টের ভূমিকা জানেন এবং ফরওয়ার্ডিংকে অনুমতি হিসেবে গণ্য করেন না।
- আপনি যে SOCKS লিসেনার ব্যবহার করেন তা লুপব্যাক ও আপনারই, অন্যের রিলের সার্বজনীন পোর্ট নয়।
- প্রোফাইলের কী বা সার্টিফিকেট আপনার সংযুক্ত হওয়া এন্ডপয়েন্টের।