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

রুট পরিবর্তন আসলে কী করে

রুট যোগ করা ঠিক করে প্যাকেট পরে কোথায় যাবে। এটি নিরাপত্তা সহযোগিতা নিয়ে দরকষাকষি করে না, L2TP সেশন খোলে না, এবং ঠিকানা, সমকক্ষ ও DNS সেটিংস তৈরি করা PPP বিনিময় চালায় না। হ্যান্ডসেটে দৃশ্যমান ফল হলো ভুল পথে বেরোনো ট্রাফিক, বা বেরিয়ে মরে যাওয়া ট্রাফিক, কোনো টানেল অবস্থা ছাড়াই।

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

চার মালিক, আর স্ক্রিপ্ট তাদের কেউ নয়

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

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

ডেমনও কেন শর্টকাট নয়

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

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

সমর্থিত পথ কেমন দেখায়

প্রতিষ্ঠান Android নিজে সরবরাহ করা প্রোফাইলে যেতে পারলে প্ল্যাটফর্মের পথই সৎ পথ। API 30 থেকে, VpnManager অ্যাপ থেকে প্ল্যাটফর্ম VPN প্রোফাইল সরবরাহ ও নিয়ন্ত্রণ সমর্থন করে, সঙ্গে কলকারী অ্যাপে সংযুক্ত অনুমোদন প্রবাহ। এটি L2TP রূপান্তরক নয়: IKEv2-এর জন্য যে প্রোফাইল মডেল সরবরাহ করে তা বিদ্যমান L2TP কনফিগারেশন অনুবাদ করে না, আর প্রোটোকল বদলানো নাম বদলানো নয়, অভিপ্রয়াণ। পরিচয়, রুট, ব্যক্তিগত DNS ও প্রবেশাধিকার সচেতনভাবে বহন করতে হবে।

সার্ভিসটি L2TP/IPsec-এ থাকতে হলে সমর্থিত সমন্বয় হলো অপারেটর সত্যিই নথিভুক্ত করা ক্লায়েন্ট ও OS সংস্করণ, এবং থাকলে তার অটোমেশন চুক্তি। নথিভুক্ত তদারকিহীন নিয়ন্ত্রণ না থাকলে সঠিক উত্তর হলো একটি বিল্ডে সৌভাগ্যক্রমে কাজ করা ভঙ্গুর বিশেষাধিকারযুক্ত স্ক্রিপ্ট নয়, সমর্থিত হাতে সংযোগ।

সঠিক অটোমেশন কী করে

নথিভুক্ত নিয়ন্ত্রণ পেলে অটোমেশনের ছোট ও রক্ষণীয় কাজ থাকে: নামকৃত সংযোগের অনুরোধ করা, প্রস্তুতির জন্য অপেক্ষা করা, প্রমাণীকরণ বা সেটআপ ব্যর্থতায় থামা, উদ্দিষ্ট কাজ সম্পাদন করা, এবং পরিষ্কার করা সংযোগের মালিক উপাদানের ওপর ছেড়ে দেওয়া। প্রমাণপত্র সেই ক্লায়েন্টের কাছে থাকে যে তা সংরক্ষণ ও ঘোরাতে জানে।

প্রথম লাইন লেখার আগে কোন উপাদান কোন স্তরের মালিক তা লিখে রাখুন, এবং ফল তা দিয়ে যাচাই করুন:

  • IPsec ও PPP ক্লায়েন্ট সামলায়, স্ক্রিপ্টের রুট নয়।
  • সংযোগটি প্ল্যাটফর্মের VPN অবস্থায় দেখা যায়, তাই প্রতি-অ্যাপ পরিধি ও সর্বদা-চালু তার ওপর প্রযোজ্য।
  • কোনো অভ্যন্তরীণ সার্ভিস কল, লেনদেন নম্বর বা অনুমান করা আর্গুমেন্ট প্রমাণপত্র বহন করে না।
  • যেকোনো ধাপে ব্যর্থতা অর্ধ-নিবন্ধিত প্রোফাইল রেখে যায় না।

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