ডিভাইসের VPN মার্কার নাকি এক্সিট ঠিকানা: কোনটি কী প্রমাণ করে?
ডিভাইসে পড়া নেটওয়ার্ক মার্কার আর সার্ভার যে ঠিকানা দেখে, এ দুটি আলাদা প্রমাণ। আপনার প্রশ্নের জন্য কোনটি দরকার, সেটি ঠিক করুন।
ফোনের অ্যাপ আর দূরবর্তী সার্ভার ভিন্ন ভিন্ন তথ্য নিয়ে শুরু করে, এবং কোনোটিই অন্যটির তথ্য ধার করতে পারে না। অ্যাপটি যে নেটওয়ার্ক ব্যবহার করে সে সম্পর্কে অপারেটিং সিস্টেমকে জিজ্ঞাসা করতে পারে, কিন্তু সার্ভার কেবল জানে সংযোগের ভেতর দিয়ে কী আসে। নিজের এন্ডপয়েন্ট চালালে দ্বিতীয়টি নতুন করে লেখা হয় আর প্রথমটি অপরিবর্তিত থাকে। এদের মধ্যে কোনটি আপনার প্রশ্নের উত্তর দেবে, তা প্রশ্নটির উপরই নির্ভর করে।
দুটি পর্যবেক্ষণ বিন্দু, দুই ধরনের প্রমাণ
স্থানীয় প্রমাণ ডিভাইসকে বর্ণনা করে। এটি ট্র্যাফিক বহনকারী ইন্টারফেস, প্ল্যাটফর্ম যে ট্রান্সপোর্ট জানায়, এবং কলকারী অ্যাপ কী জিজ্ঞাসা করতে পারে তা কভার করে। দূরবর্তী প্রমাণ সংযোগটিকে বর্ণনা করে: উৎস ঠিকানা, প্রোটোকল, সময় এবং অ্যাপ যা পাঠানোর সিদ্ধান্ত নেয়। কোনো পর্যবেক্ষণ বিন্দুই অন্যটির সবকিছু ধারণ করে না।
দুটিকে মিশিয়ে দিলে এমন দাবি তৈরি হয় যা নির্ভুল শোনায় কিন্তু যাচাই করা যায় না। মার্কার ডিভাইসের একটি নেটওয়ার্ক অবজেক্ট সম্পর্কে কিছু প্রমাণ করে, দূরবর্তী সেবা কীভাবে অনুরোধটি শ্রেণীবদ্ধ করে সে সম্পর্কে নয়।
শনাক্তকরণ নিয়ে তর্ক করার আগে লিখে নিন প্রশ্নটি কোন বিন্দু সম্পর্কে। প্রশ্নটি কি এই যে নির্দিষ্ট কোনো অ্যাপ টানেল সক্রিয় আছে কিনা বুঝতে পারে, নাকি এই যে কোনো সেবা অনুরোধ কোথা থেকে এসেছে তা অনুমান করতে পারে? এগুলো আলাদা তদন্ত, এবং একটির উত্তর অন্যটি সম্পর্কে কিছুই বলে না।
স্থানীয় প্ল্যাটফর্ম ইন্টারফেস কী জানাতে পারে
Android একটি নির্দিষ্ট মার্কার দেয়। NetworkCapabilities অবজেক্টটি TRANSPORT_VPN সম্পর্কে জানাতে পারে, আর hasTransport যাচাই করে অবজেক্টটিতে ওই ট্রান্সপোর্ট আছে কি না। অ্যাপটি কানেক্টিভিটি সেবা থেকে অবজেক্টটি নিয়ে পড়ে, নেটওয়ার্ক অবস্থার অনুমতির সাপেক্ষে।
ফলাফলটি স্থানীয় প্ল্যাটফর্ম তথ্য, কোনো প্রদানকারীর ঠিকানা-পরিসরে খোঁজা নয়। এটি কলকারী অ্যাপ যে নেটওয়ার্ক ব্যবহার করছে তা বর্ণনা করে।
দুটি সীমা গুরুত্বপূর্ণ। যে স্প্লিট-টানেল নিয়ম একটি অ্যাপকে বাদ দেয়, তা একই ফোনে সহকর্মীর দেখা উত্তর থেকে আলাদা উত্তর দিতে পারে, কারণ অ্যাপটি অন্যত্র বাঁধা থাকতে পারে। মার্কারটি এজন্যেও আছে যে ওএস VPN ইন্টারফেস মডেল করে, কোনো নির্দিষ্ট অ্যাপ এটি সংগ্রহ করে বলে নয়। অ্যাপটি ফিল্ডটি পড়ে, পাঠিয়ে দেয় নাকি উপেক্ষা করে, এটি সেই অ্যাপের বৈশিষ্ট্য। তার ম্যানিফেস্ট ও ডকুমেন্টেশনই ওই প্রশ্নের একমাত্র নির্ভরযোগ্য উৎস।
adb shell dumpsys connectivity | grep -i -m5 vpn
দূরবর্তী সেবা কী দেখতে পারে
সার্ভার সংযোগের উৎস ঠিকানা, ট্রান্সপোর্ট ও সময় দেখে, এবং রেজিস্ট্রি বা রাউটিং তথ্য দিয়ে ঠিকানাটি সমৃদ্ধ করতে পারে। অ্যাপ যা পাঠায় তাও এটি পেতে পারে, যার মধ্যে অবস্থানও আছে যখন অ্যাপ তা চায় এবং ব্যবহারকারী সম্মতি দেয়। এই চ্যানেলগুলো আলাদা, এবং কেবল একটি ঠিকানা-খোঁজার মতো দেখায়।
হোস্টিং প্রদানকারীর নামে নিবন্ধিত ঠিকানা টানেলের ইঙ্গিত দেয়, আর আবাসিক নেটওয়ার্কে নিবন্ধিত ঠিকানা বাড়ির সংযোগের ইঙ্গিত দেয়। দুটিই পরিসংখ্যানগত ইঙ্গিত, ডিভাইস সম্পর্কে তথ্য নয়।
আবাসিক ঠিকানা ব্যক্তিকে সেই ঠিকানায় বসায় না, আর হোস্টিং ঠিকানা অপারেটর বা দেশের নাম বলে না। যে সেবা এই অনুমানকে নিশ্চিত ধরে নেয়, সে কখনো ভুল করবে অথচ তা ধরতে পারবে না। যদি দরকার নির্ভরযোগ্যতা হয়, কোনো প্রথাগত অনুমান নয়, তবে ঠিকানার তথ্য তা দিতে পারে না, এবং এটি স্বীকার করা নকশা অনুমান লুকানোর চেয়ে বেশি সৎ।
| প্রমাণ | কী উত্তর দেয় | কী দেখাতে পারে না |
|---|---|---|
| স্থানীয় ট্রান্সপোর্ট মার্কার | এই নেটওয়ার্ক অবজেক্টটি VPN কি না | কে এক্সিট চালায় বা ডিভাইস কোথায় |
| দূরবর্তী উৎস ঠিকানা | কোন ঠিকানা সেবায় পৌঁছেছে | ডিভাইসে টানেলও আছে কি না |
| অ্যাপ্লিকেশন পেলোড | অ্যাপ কী পাঠাতে বেছে নিয়েছে | অ্যাপ যা পাঠায়নি |
নিজের হোস্ট করা এক্সিট কেন কেবল এক দিক বদলায়
নিজের এন্ডপয়েন্ট চালালে দূরবর্তী সেবা যে উৎস ঠিকানা দেখে তা বদলে যায়, আর এটি সেই সেবা বাণিজ্যিক প্রদানকারীর সঙ্গে যে পরিসর যুক্ত করে তার বাইরে চলে যেতে পারে। স্থানীয় নেটওয়ার্ক মডেলে কিছুই বদলায় না, কারণ টানেল টানেলই থাকে এবং ওএস এখনও তা জানায়।
প্রমাণের এক দিক নড়ে, অন্য দিকটি স্থির থাকে। এদের মধ্যের ফাঁকেই প্রত্যাশা ভাঙে।
ব্রাউজার নিজস্ব ইন্টারফেস ও সীমাবদ্ধতাসহ তৃতীয় একটি ক্ষেত্র। ওয়েব কনটেন্ট নেটিভ ক্যাপাবিলিটিজ অবজেক্ট পড়তে পারে না, এবং মোবাইল ওএসের বৈশিষ্ট্যকে ওয়েব পেজের জন্য উপলব্ধ ধরে নেওয়া একটি শ্রেণিগত ভুল। প্রশ্নটি কোনো ওয়েবসাইট সম্পর্কে হলে, প্ল্যাটফর্ম API হুবহু নকল করার বদলে ওয়েবসাইটটি আসলে কী পেতে পারে তা অধ্যয়ন করুন।
যে প্রশ্ন করছেন তা দিয়েই সিদ্ধান্ত নিন
প্রশ্নটি যদি হয় নির্দিষ্ট কোনো অ্যাপ টানেলের অবস্থা পর্যবেক্ষণ করতে পারে কি না, তবে প্ল্যাটফর্ম ইন্টারফেসই দেখার সঠিক জায়গা, আর উত্তরটি ওই অ্যাপের কোড ও অনুমতিতে আছে। প্রশ্নটি যদি হয় কোনো সেবা কী অনুমান করতে পারে, তবে সংযোগের মেটাডেটাই প্রমাণ। আইনি বা চুক্তিগত প্রশ্ন কোনোটিই নিষ্পত্তি করে না।
কিছু সংগ্রহের আগে প্রশ্নটি এক বাক্যে নাম দিন। সেই বাক্যই ঠিক করে কোন পর্যবেক্ষণ বিন্দু গুরুত্বপূর্ণ, আর তদন্তকে অন্য তর্কে গড়িয়ে পড়া থেকে আটকায়।
প্রতিবেদন করার সময় প্রতিটি পর্যবেক্ষণকে তার উৎস অনুযায়ী চিহ্নিত করুন, কারণ চিহ্নহীন দাবি পুনরায় দেখা যায় না। স্থানীয় মার্কার ও ঠিকানা-অনুমান দুটিই কাজের এবং কোনোটিই চূড়ান্ত নয়, তাই দুটিকে এক রায়ে মিলিয়ে দেওয়া ভুল।
কোনো সেবা অনুমোদিত সংযোগ প্রত্যাখ্যান করলে, সংকেত লুকাতে স্থানীয় সেটিং বদলানোর বদলে তার সমর্থিত পুনর্বিবেচনা পথ ব্যবহার করুন। একটি পর্যবেক্ষণ সরানো কখনো প্রমাণ করে না যে বাকিগুলো উধাও হয়েছে।