উল্টো টেদারিং ফোনের ট্রাফিক একটি কম্পিউটারে নিয়ে গিয়ে সেই কম্পিউটারের সংযোগ দিয়ে বাইরে পাঠায়। শুধু একটি USB কেবল তা করে না: ফোনের দরকার এমন একটি ক্যাপচার পরিষেবা, যা তার রাউটিং নিজের হাতে নেয়, আর কম্পিউটারের দরকার এমন একটি রিলে, যা ওই প্যাকেটগুলো সামনে বহন করে। পথটিতে চারটি ধাপ আছে: অ্যাপ্লিকেশন, ফোন ক্যাপচার, USB রিলে এবং হোস্ট এগ্রেস, আর প্রতিটির মালিক আলাদা। এই রানবুক সেই পথ গড়ে, হোস্ট VPN-কে তার জায়গায় রাখে এবং ফলাফলে ভরসা করার আগে প্রতিটি ধাপ যাচাই করে।

কিছু চালানোর আগে ধাপগুলো মানচিত্রে আঁকুন

প্রতিটি ধাপ নিজের নীতি প্রয়োগ করে, তাই এক প্রান্তে কাজ করা ফলাফল অন্য প্রান্ত সম্পর্কে কিছুই বলে না। অ্যাপ্লিকেশন একটি গন্তব্য ও একটি রিজলভার বেছে নেয়, ক্যাপচার পরিষেবা ঠিক করে কোন ট্রাফিক রিলে-তে ঢুকবে, রিলে তা হোস্ট সকেটে পাঠায়, আর হোস্টের রাউটিং ও VPN নির্ধারণ করে গন্তব্যটি শেষে কোন ঠিকানা দেখবে।

HopOwnerWhat it decides
Application requestThe appDestination, resolver, address family
Capture servicePhone VpnService appWhich traffic enters the relay at all
ADB relayHost processForwarding phone flows to host sockets
Host egressHost routing and VPNExit address and host policy

একসঙ্গে কেবল একটি VPN পরিষেবা ক্লায়েন্টই ফোনের ক্যাপচার ভূমিকা ধরে রাখতে পারে, তাই দ্বিতীয় একটি সাধারণ VPN অ্যাপ রিলে-র উপরে স্তর গড়ে না। যদি VPN কম্পিউটারে থাকে, ক্যাপচার পরিষেবা হলো সেই কম্পিউটারের দিকে প্রবেশের লিংক, দূরবর্তী টানেল ফলাফলকে আগেই সুরক্ষিত করেছে তার প্রমাণ নয়।

ফোনে হাত দেওয়ার আগে রিলে প্রস্তুত করুন

Gnirehtet এই স্থাপত্যের নথিভুক্ত উদাহরণ: ফোনে root ছাড়া একটি VPN পরিষেবা ক্লায়েন্ট এবং হোস্টে ADB-বাহিত একটি রিলে, যা IPv4-এর উপরে TCP ও UDP সমর্থন করে। এর ভাণ্ডার আরও বলে যে প্রকল্পটি আর সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না, তাই এটিকে রেফারেন্স ডিজাইন ও পরীক্ষাগারের জন্য কাজ করা যন্ত্র হিসেবে দেখুন, পরিচালিত ফ্লিট জুড়ে মানক করার মতো সমর্থিত পণ্য হিসেবে নয়।

adb devices
adb shell getprop ro.build.version.release
gnirehtet run

প্রথমে adb devices চালান। যে ফোন হোস্টের ডিবাগিং কী গ্রহণ করেনি, সেটি অননুমোদিত হিসেবে রিপোর্ট করে, এবং ডিভাইসে প্রম্পট গ্রহণ না করা পর্যন্ত রিলে যুক্ত হবে না। gnirehtet run ক্লায়েন্ট ইনস্টল করে, রিলে চালু করে এবং ক্যাপচার সক্রিয় করে; যে সংস্করণ ধাপগুলো আলাদা করে, সেখানে বদলে নথিভুক্ত install, relay ও start সাবকমান্ড ব্যবহার করুন।

ADB অ্যাক্সেস ডিভাইস নিয়ন্ত্রণের সম্পর্ক, নেটওয়ার্ক সেটিং নয়। কেবল আপনার নিয়ন্ত্রণে থাকা কম্পিউটারকে অনুমোদন দিন, এবং কাজ শেষ হলে সেই অনুমোদন প্রত্যাহারের পরিকল্পনা করুন।

হোস্ট VPN আবার পথে ফিরিয়ে আনুন

রিলে একটি সাধারণ হোস্ট প্রসেস, তাই এর পরবর্তী সংযোগগুলো হোস্টের রাউটিং টেবিল অনুসরণ করে। পূর্ণ-টানেল প্রোফাইল সেগুলো বহন করে; বিভক্ত টানেল নাও করতে পারে। যদি হোস্ট VPN প্রতি-অ্যাপ নিয়ন্ত্রণ ব্যবহার করে, রিলে বাইনারিটিকে অনুমোদিত তালিকায় যোগ করুন, নইলে ব্রাউজার সুরক্ষিত দেখালেও রিলে ভৌত ইন্টারফেসই ব্যবহার করতে থাকে।

ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay

হোস্ট VPN সংযুক্ত করার আগে ও পরে প্রথম দুটি কমান্ড চালান। ঠিকানা না বদলালে রিলে টানেলে নেই, ক্লায়েন্ট উইন্ডো যা-ই বলুক। শুধু-ব্যক্তিগত টানেলও সর্বজনীন গন্তব্যগুলোকে স্বাভাবিক হোস্ট এগ্রেসে রেখে দেয়, যা লিকের মতো দেখায় কিন্তু আপনি যে নীতি সেট করেছেন সেটিই।

রিলে-কৃত ট্রাফিকের জন্য DNS হোস্টে রিজলভ হয়, তাই হোস্টের রিজলভার ঠিক করে কোন সার্ভার নামগুলো দেখবে। ফোনে ব্যক্তিগত DNS সেটিং রিলে পেরিয়ে যায় না, এবং ফোনের দিকের রিজলভার পরীক্ষা হোস্টের লুকআপ বর্ণনা করবে না।

প্রতিটি ধাপ আলাদাভাবে যাচাই করুন

এই ক্রমে তিনটি পরীক্ষা: ফোন রিলে-তে পৌঁছায়, রিলে হোস্ট নীতির অধীনে গন্তব্যে পৌঁছায়, এবং অ্যাপ গন্তব্যটি সঠিকভাবে রিজলভ ও ব্যবহার করে। পৃষ্ঠা রিলোড করে অনুমান করার বদলে প্রথম ব্যর্থতাতেই থামুন।

adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V

কানেক্টিভিটি ডাম্পে একটি VPN-নেটওয়ার্ক এন্ট্রি দেখায় ক্যাপচার পরিষেবা সক্রিয়; রিলে-র নিজের লগ দেখায় ফ্লোগুলো আসছে কি না। এদের একটিতে অনুপস্থিতি সমস্যাটিকে পরিষ্কারভাবে ভাগ করে: ক্যাপচার নেই মানে ফোনের দিক, ফ্লো নেই মানে হোস্টের দিক।

হোস্টে কাজ করা ব্রাউজার হোস্ট ব্রাউজারের পথ প্রমাণ করে, রিলে প্রসেসের পথ নয়। প্রতিটি যে ঠিকানা রিপোর্ট করে তা তুলনা করুন, এবং একটি ব্যক্তিগত রিসোর্সের সঙ্গে একটি সর্বজনীন পৃষ্ঠাও পরীক্ষা করুন, কারণ শুধু-ব্যক্তিগত টানেল একটি পথ দিতে পারে, অন্যটি নয়।

ভেঙে ফেলুন এবং ব্যর্থতার আচরণ বেছে নিন

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

gnirehtet stop
gnirehtet uninstall
adb kill-server

রিলে হারিয়ে গেলে ফোন কী করবে তা ঠিক করুন। স্পষ্ট পছন্দ ছাড়া এটি মোবাইল ডেটায় ফিরে গিয়ে যে ট্রাফিক রাউট করতে চেয়েছিলেন তা ফাঁস করতে পারে, তাই ব্লক-সংযোগ আচরণ বা VPN নীতি সচেতনভাবে সেট করুন এবং ভরসা করার আগে ভাঙার প্রক্রিয়া পরীক্ষা করুন।

যে হোস্ট অনুমোদিত হয়েছিল, রিলে সংস্করণ, হোস্ট টানেল নীতি এবং ভাঙার ধাপগুলো লিখে রাখুন। এই রেকর্ডই পরের উল্টো-টেদারিং সেটআপকে আরেকটি দুপুরের পুনরাবিষ্কারের বদলে পুনরাবৃত্তিযোগ্য করে তোলে।

সম্পর্কিত নিবন্ধ