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

ফাইলটি সহজ অংশ। বাকি দুটি ঠিক করে মাইগ্রেশন কাজ করবে কি না।

এক্সপোর্ট করা প্রোফাইলে আসলে কী থাকে

বিশ্বাস করার আগে ফাইলটি একটি টেক্সট এডিটরে খুলুন। OpenVPN প্রোফাইল একটি ছোট কনফিগারেশন ভাষা: remote, proto, data-ciphers, এবং প্রায়ই ইনলাইন <ca>, <cert>, <key> বা <tls-crypt> ব্লক যা ক্লায়েন্ট তার TLS স্ট্যাককে দেয়। WireGuard কনফিগ আরও সমতল, এতে [Interface]-এ PrivateKey ও Address থাকে, তারপর প্রতিটি এন্ডপয়েন্টের জন্য একটি [Peer] যা PublicKey, AllowedIPs ও Endpoint বহন করে। IKEv2 আসে একটি .mobileconfig হিসেবে, কী ব্লকের বদলে পেলোড ডিকশনারি নিয়ে।

এই লেখার কোনোটিই নিজে নিজে কোনো ক্রেডেনশিয়াল নয়। ক্রেডেনশিয়াল হলো প্রাইভেট কী, এবং প্রতিটি ফরম্যাট হয় এটি ইনলাইনে বসায়, নয়তো এমন একটি উপনামের দিকে ইশারা করে যা কেবল যে ক্লায়েন্ট এটি তৈরি করেছে তার ভেতরেই সমাধান হয়।

Android-এ কী আসলে কোথায় থাকে

Android অ্যাপের ডেটা /data/data/<package>-এর অধীনে রাখে, যা কেবল সেই অ্যাপের UID পড়তে পারে। রুট না করা ফোন থেকে অন্য অ্যাপের প্রাইভেট ডিরেক্টরি কপি করার কোনো সমর্থিত উপায় নেই, আর Android 12 এটি বাতিল করার এবং ক্লায়েন্টরা allowBackup="false" ঘোষণা শুরু করার পর adb backup সাধারণ উত্তর হওয়া বন্ধ করে দিয়েছে। তাই Android ক্লায়েন্ট থেকে এক্সপোর্ট মানে সেই ক্লায়েন্ট যা প্রয়োগ করে, ফাইল সিস্টেমের কপি নয়।

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

এটি নষ্ট এক্সপোর্ট নয়। এটি সেই বৈশিষ্ট্য যা প্ল্যাটফর্মকে দিতে বলা হয়েছিল।

একটি প্রোফাইল যা বহন করতে পারে না

বস্তুগুলোকে গন্তব্য যা গ্রহণ করবে তার সঙ্গে মিলিয়ে দেখুন:

বস্তুস্থানান্তরিত হয়?কেন
প্রোটোকল ও এন্ডপয়েন্টহ্যাঁ, যদি গন্তব্য ক্লায়েন্ট এটি বোঝেপ্রোফাইলে সাধারণ টেক্সট
CA সার্টিফিকেট ও হোস্টনেম যাচাইসাধারণতসর্বজনীন উপাদান, তবে হোস্টনেমকে এখনও সার্টিফিকেটের সঙ্গে মিলতে হবে
ক্লায়েন্ট সার্টিফিকেটহ্যাঁ, যদি এটি প্রতি ডিভাইসে বাঁধা না থাকেসার্টিফিকেট বহনযোগ্য; ইস্যুকারী ঠিক করে একটি কত ডিভাইসে ব্যবহৃত হতে পারে
প্রাইভেট কীকেবল যদি Keystore-এর বাইরে তৈরি হয়হার্ডওয়্যার-সমর্থিত কী এক্সপোর্ট করা যায় না, কেবল প্রতিস্থাপন করা যায়
অ্যাকাউন্ট, MFA, SSO সেশননাটোকেন মেয়াদোত্তীর্ণ হয় এবং যে ডিভাইস পেয়েছে তার সঙ্গে বাঁধা থাকে
রুট, DNS ও অ্যাপ স্কোপকেবল কনফিগারেশন টেক্সট হিসেবেAndroid সংযোগের সময় VpnService.Builder-এর মাধ্যমে এগুলো প্রয়োগ করে
স্প্লিট-টানেল অ্যাপ তালিকাকদাচিৎপ্যাকেজ নাম ডিভাইসভেদে আলাদা, আর তালিকাটি ক্লায়েন্টের অবস্থা

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

আমদানি হলো একটি পার্স, তারপর সম্মতির অনুরোধ

গ্রহণকারীর দিকে আমদানি হলো একটি পার্স, তারপর একটি কমিট। ক্লায়েন্ট কনফিগ পড়ে, প্রতিটি উল্লেখিত ব্লক আছে কি না যাচাই করে, তারপর টানেলের সংজ্ঞা নিজের স্যান্ডবক্সে লেখে, আর এজন্যই ডাউনলোড থেকে বাছাই করা ফাইলটি পরে যা সংযোগ করে তা নয়।

তারপর আসে এমন একটি অনুমোদন ধাপ যা কোনো ফাইল এড়াতে পারে না। টানেল স্থাপনের আগে Android-এ অ্যাপকে VpnService.prepare() ডাকতে এবং আপনার সম্মতি নিতে হয়, তাই সদ্য আমদানি করা প্রোফাইলও একবার সিস্টেম ডায়ালগ দেখায়। এরপর টানেল স্পষ্টভাবে তৈরি হয় addAddress, addRoute, addDnsServer, এবং প্রতি-অ্যাপ রাউটিংয়ের জন্য addAllowedApplication বা addDisallowedApplication দিয়ে। এর কোনোটিই এন্ডপয়েন্ট থেকে অনুমিত হয় না, তাই একই প্রোফাইল দুটি ক্লায়েন্টে ভিন্ন কার্যকর রুট সেট তৈরি করতে পারে।

সার্টিফিকেট-ভিত্তিক সেটআপ আরেকটি শাখা যোগ করে। যখন সার্ভার নির্দিষ্ট ডিভাইসে সার্টিফিকেট জারি করে, যেমন MDM ও SCEP নথিভুক্তি করে, তখন দ্বিতীয় ফোনে এটি পুনরায় ব্যবহার হয় সার্ভার প্রতি পরিচয়ে একটি সেশন প্রয়োগ করা পর্যন্ত কাজ করে, নয়তো TLS হ্যান্ডশেকে ব্যর্থ হয়। পুনরায় ব্যবহারের পরিকল্পনার আগে ইস্যুকারীর নীতি দেখুন।

পুরোনোটি অবসর দেওয়ার আগে নতুন ডিভাইস যাচাই করুন

নতুন ফোন সবুজ আইকনের চেয়ে ভালো কিছু পাস না করা পর্যন্ত পুরোনো ফোন সংযুক্ত রাখুন। নতুন ডিভাইস থেকে এগ্রেস ঠিকানা এবং এটি আসলে যে DNS রিজলভার ব্যবহার করেছে তা নিশ্চিত করুন। যদি split tunneling গুরুত্বপূর্ণ হয়, তবে এমন একটি অ্যাপ চালু করুন যা টানেল এড়িয়ে যাওয়ার কথা এবং আরেকটি যা যাবে না, তারপর দেখুন কোনটি আপনার ISP-তে পৌঁছায়।

একটি পরীক্ষাই এগ্রেস ঠিকানা নির্ধারণ করে। ফোনের ব্রাউজারে https://ifconfig.me খুলুন, তারপর একই Wi-Fi-তে একটি ল্যাপটপ থেকে curl -s https://ifconfig.me চালান এবং দুটি উত্তরই আপনার প্রদানকারীর বরাদ্দ করা ঠিকানার সঙ্গে মিলিয়ে দেখুন।

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

যদি এক্সপোর্ট অ-বহনযোগ্য প্রমাণিত হয়, তবে সমাধান হলো নতুন নথিভুক্তি, কোনো সর্বজনীন কনফিগারেশন বান্ডল নয়। দ্বিতীয় ডিভাইস প্রোফাইল চান, অথবা নতুন ফোনে কী জোড়া তৈরি করে CSR জমা দিন; ধীর, এবং এটিই ইস্যুকারীর সমর্থিত পথ।

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

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