Tor-এ VPN, VPN-এ Tor: শৃঙ্খল কেন ভাঙে
VPN, Tor আর একটি প্রক্সি একটার ওপর আরেকটা বসালে, ক্রমই ঠিক করে কী রিজলভ হবে আর কী বহন হবে। তিনটাই বদলানোর আগে প্রথম ভাঙা সীমানাটি খুঁজে বের করুন।
VPN, Tor আর একটি অ্যাপ্লিকেশন প্রক্সি একসঙ্গে স্তূপ করলে মনে হয় গোপনীয়তা গুণ হচ্ছে, অথচ আসলে কানেকশন যেখানে মরে যেতে পারে তার সংখ্যাই গুণ হয়। স্বাভাবিক ফল হলো ঘুরতে থাকা একটি ব্রাউজার, আর তিনটি টুলই নিজেদের সুস্থ বলে জানায়। তিনটি সেটিং একসঙ্গে বদলালে কোনটি মিথ্যা বলছে তা বোঝার একমাত্র সূত্রটিও হারিয়ে যায়।
আগে ক্রম অনুযায়ী অভীষ্ট পথটি আঁকুন, কোন প্রোগ্রাম কোন কানেকশন খোলে আর প্রতিটি ধাপে কোন নাম রিজলভ হয় তা লিখুন।
স্তর যোগ হয় না, পরস্পরের সঙ্গে ক্রিয়া করে
Tor-এর আগে VPN থাকার মানে Tor ক্লায়েন্টের প্রবেশ-কানেকশন টানেলের ভেতর দিয়েই যায়। Tor-এর ভেতর দিয়ে VPN বহন করার মানে হলো VPN ক্লায়েন্টের নিজের এন্ডপয়েন্ট Tor-এর ওপর দিয়ে পৌঁছানো যায় কি না, যেটি সম্পূর্ণ ভিন্ন একটি শর্ত। ব্রাউজারের প্রক্সি আরও একটি হপ যোগ করে যার সম্পর্কে অপারেটিং সিস্টেম কিছুই জানে না। তিনটি বিন্যাস, তিনটি আলাদা নির্ভরতার তালিকা।
প্রতিটি বিন্যাস বদলে দেয় কী রিজলভ হতে পারে, কী বহন হতে পারে, আর প্রথম প্যাকেট কে দেখে। তাদের মধ্যে কেবল একটি-ই আপনার উদ্দিষ্ট কনফিগারেশন হতে পারে।
সরাসরি পথটিও চিত্রে যোগ করুন। ফলব্যাক রুট, স্প্লিট-টানেল ব্যতিক্রম বা প্রক্সি বাইপাস পেজ লোড করাতে পারে, অথচ যে শৃঙ্খল পরীক্ষা করতে চেয়েছিলেন তা চুপচাপ এড়িয়ে যায়, আর এমন সাফল্য ব্যর্থতার চেয়েও বেশি বিভ্রান্তিকর।
ক্রমই ঠিক করে কী বহন করা যায়
Tor তার SOCKS ইন্টারফেস দিয়ে TCP স্ট্রিম বহন করে, আর যে ক্লায়েন্ট প্রক্সিকে হোস্টনেম রিজলভ করতে বলে সে লুকআপটি সার্কিটের ভেতরেই রাখে। সাধারণ কনফিগারেশনে UDP এভাবে চলে না, তাই মাঝখানে বাড়তি TCP রিলে ছাড়া Tor-এর ভেতরে WireGuard টানেল বসানো যায় না।
OpenVPN কে TCP-তে বাধ্য করা যায়, তাই অন্তত এই বিন্যাসটি বর্ণনা করা সম্ভব। এটি ধীরতর ও বেশি ভঙ্গুরও, আর ভাঙার সময় ব্যর্থতার রূপটি বন্ধ পোর্টের মতোই দেখায়। এই দুটির মধ্যে পার্থক্য করতে যেকোনো একটি সারাই করার চেয়ে বেশি সময় লাগবে বলে ধরে নিন।
রিজলভিং হলো বাকি অর্ধেক। --socks5-hostname দিয়ে প্রক্সি গন্তব্যটি রিজলভ করে, আর সাধারণ --socks5 আগে স্থানীয় রিজলভারকে জিজ্ঞেস করে নামটি সার্কিটের বাইরে ফাঁস করে দেয়। এই একটি ফ্ল্যাগই ঠিক করে নামের লুকআপটি শৃঙ্খলের অংশ হবে, নাকি আপনার ISP-এর।
| Order | What must resolve the endpoint | What usually breaks |
|---|---|---|
| VPN, then Tor | The tunnel's resolver | Entry guards blocked by the VPN provider's filters |
| Tor, then VPN | The SOCKS proxy, remotely | UDP transports, which Tor does not carry |
| App proxy on top | The application itself | Proxy bypass rules and cached connections |
প্রথম ভাঙা সীমানা খোঁজা
প্যাকেট যেই ক্রমে চলে সেই ক্রমে ধাপগুলো পরীক্ষা করুন, নিরীহ অনুরোধ দিয়ে, আর প্রথম যে ধাপটি ব্যর্থ হয় সেখানেই থামুন। কোন কমান্ডটি আগে চলেছিল তা লিখে রাখুন, কারণ ক্রমটিই প্রমাণের অংশ। দুটি কমান্ড মৃত সার্কিট আর মৃত এগ্রেস আলাদা করে:
curl -s --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/api/ip curl -4 -s https://api.ipify.org; echo
প্রথমটি জানায় অনুরোধটি আদৌ SOCKS প্রক্সি দিয়ে সম্পূর্ণ হয় কি না, দ্বিতীয়টি দেখায় নেটওয়ার্ক এখন কোন ঠিকানা উপস্থাপন করছে। প্রথমটি ব্যর্থ হয়ে দ্বিতীয়টি সফল হলে সমস্যা Tor ক্লায়েন্টের কাছে বা তার আগে। দুটিই সফল হয়ে ব্রাউজার এখনও ব্যর্থ হলে অ্যাপ্লিকেশন শেলের চেয়ে ভিন্ন পথ ব্যবহার করছে।
পাবলিক-IP পেজও কেবল শেষ দৃশ্যমান এগ্রেসটির বর্ণনা দেয়। তার আগে কত হপ ছিল তা এটি বলতে পারে না, তাই একটিমাত্র সংখ্যাকে চিত্র ভাবা না করে প্রতিটি টুলের সমর্থিত স্ট্যাটাস আউটপুটের সঙ্গে মিলিয়ে দেখুন।
কখন স্তর যোগ করা বন্ধ করবেন
একটি স্তর কী যোগ করে তা যদি এক বাক্যে বলতে না পারেন, সেটি সরিয়ে দিন। যে শৃঙ্খলের উদ্দেশ্য অস্পষ্ট, রাত তিনটায় তা কেউ ডিবাগ করতে পারবে না, আর ব্যাখ্যাহীন একটি হপের গোপনীয়তা-লাভ সাধারণত আপনি যে উপলভ্যতা হারান তার চেয়ে কম।
স্তরটি যদি সত্যিই জায়গা পায়, প্রথমে একা পরীক্ষা করুন, তারপর পরেরটি যোগ করে একই দুটি কমান্ডে পথটি আবার নিশ্চিত করুন। স্বাভাবিক ব্যবহারের আগে পূর্ণ শৃঙ্খল ফিরিয়ে আনুন, আর TLS যাচাই ও প্রমাণীকরণ চালু রাখুন; পেজ লোড করানোর জন্য মেনে নেওয়া সার্টিফিকেট সতর্কতা একটি রাউটিং ফাঁকি, সারাই নয়। যেই ক্রমে থিতু হয়েছেন সেটি টাটকা থাকতেই লিখে রাখুন।
সেই ক্রমটি লিখে রাখুন, প্রতিটি ধাপে কোন রিজলভার উত্তর দেয় তা সহ। যে কার্যকর শৃঙ্খল আপনি বর্ণনা করতে পারেন তা পরের আপডেটেও টেকে, আর পরীক্ষা-নিরীক্ষায় জোড়া করা কার্যকর শৃঙ্খল তার সঙ্গেই হারিয়ে যায়। তারিখ ও সংস্করণ যোগ করুন, যাতে পরের কোনো ব্যর্থতা স্মৃতি থেকে তর্ক না করে জানা-ভালো অবস্থার সঙ্গে তুলনা করা যায়। টেক্সট ফাইলের দশটি লাইন এক সন্ধ্যার অনুমান বাঁচায়।