VPN চালু হওয়ার পরে চলা কাজগুলি if-up নয়, ডিসপ্যাচার থেকে চালান
পুরনো ইন্টারফেস হুক VPN সংযোগ দেখতে পায় না। vpn-up কে প্রোফাইল UUID-এর সঙ্গে মেলান, কাজটি পুনরাবৃত্তিযোগ্য রাখুন, এবং এমন বিচ্ছেদের পরিকল্পনা করুন যা কখনো ঘটে না।
VPN চালু হওয়ার পরে যে স্ক্রিপ্ট চালাতে হবে তার সংযোগের মালিক কম্পোনেন্ট থেকে একটি ইভেন্ট দরকার। পুরনো নেটওয়ার্ক হুক ডিরেক্টরিতে ফেলে রাখা ফাইল NetworkManager, pppd বা স্বতন্ত্র OpenVPN প্রক্রিয়া তৈরি করতে পারে এমন প্রতিটি VPN-এর জন্য কলব্যাক নয়। এই মালিকদের প্রত্যেকে ভিন্ন পরিবেশসহ ভিন্ন ইভেন্ট জানায়, তাই হুক বেছে নেওয়ার আগে মালিককে চিহ্নিত করতে হবে। নইলে স্ক্রিপ্ট সঠিক থাকে এবং কেবল কখনো চলে না।
NetworkManager-পরিচালিত VPN-এর জন্য ডিসপ্যাচারই সঠিক জায়গা, এবং vpn-up সঠিক অ্যাকশন।
ইন্টারফেস ইভেন্ট নয়, vpn-up ব্যবহার করুন
ডিসপ্যাচার up কে vpn-up থেকে আলাদা করে। প্রথমটি সক্রিয় ইন্টারফেস জানায়; দ্বিতীয়টি সক্রিয় VPN সংযোগ জানায়। Wi-Fi চালু হওয়া মানে কেবল ভিত্তি লিঙ্কটি আছে; টানেল তখনো দরকষাকষি করতে পারে, বা কখনো প্রমাণীকরণই নাও হতে পারে।
স্ক্রিপ্ট ইন্টারফেস ও অ্যাকশন পায়, আর সংযোগের বিবরণ পরিবেশের মাধ্যমে আসে, যার মধ্যে প্রোফাইল UUID ও VPN IP ইন্টারফেস আছে। ডিভাইসের নাম থেকে পরিচয় অনুমান না করে ওই ভেরিয়েবলগুলি পড়ুন।
মিলটি এক সংযোগে সীমিত করুন
সংযোগ UUID বা ডিসপ্যাচার যে অন্য পরিচয় দেয় তার সঙ্গে মিলান, tun প্রিফিক্স বা ppp0 নয়। ইন্টারফেসের নাম স্থির নয়, একসঙ্গে একাধিক টানেল থাকতে পারে, এবং দুটি প্রোফাইলে একই প্রদর্শিত নাম থাকতে পারে। tun প্রিফিক্স মেলানো মানে স্ক্রিপ্ট শেষে এমন সংযোগে চলবে যা কেউ স্পর্শ করতে চায়নি। পুনঃসংযোগ ডিভাইস পুনর্নির্মাণ করলে একই প্রোফাইলের জন্য এটি দুবারও চলতে পারে।
কাজটি আইডেম্পোটেন্ট করুন। প্রতিবার ডাকার সময় রুট যোগ করা কলব্যাক শেষে টেবিলটি নকল দিয়ে ভরিয়ে দেয়, আর রাউটিং ভাঙে দ্বিতীয় কপিটিই।
সক্রিয়করণ কী প্রমাণ করে না তা জানুন
vpn-pre-up NetworkManager VPN সম্পূর্ণ সক্রিয় হয়েছে জানানোর আগে চলে, এবং ম্যানেজার ওই স্ক্রিপ্টগুলির জন্য অপেক্ষা করে। ব্লকিং ধাপ কেবল তখনই ব্যবহার করুন যখন কাজটি সত্যিই সেখানে পড়ে, কারণ ধীর পরীক্ষা সেই সক্রিয়করণ দেরি করায় যা বাকি প্রতিটি কম্পোনেন্ট দেখার জন্য অপেক্ষা করছে।
রুট থাকা প্রমাণ করে না যে কোনো অ্যাপ্লিকেশন শুনছে, কোনো ব্যক্তিগত নাম সমাধান হচ্ছে, বা কোনো ব্যবহারকারী সেশন আছে। সীমিত সময়সীমা দিয়ে সেগুলি আলাদাভাবে পরীক্ষা করুন, এবং পুরো শৃঙ্খল আবার চেষ্টা না করে কোন স্তর ব্যর্থ হয়েছে তা জানান।
স্ক্রিপ্ট যে প্রেক্ষাপটে চলে তা সম্মান করুন
ডিসপ্যাচার স্ক্রিপ্ট root হিসেবে, যেকোনো ব্যবহারকারী সেশনের বাইরে চলে। লগইন করা ব্যবহারকারীর পরিবেশ, গ্রাফিক্যাল সেশন বা খোলা কীরিং উপলব্ধ আছে ধরে নেবেন না। ডেস্কটপ প্রেক্ষাপট অনুপস্থিত থাকলে প্রতিটি প্রমাণপত্রকে প্রতিটি প্রক্রিয়ার জন্য পঠনযোগ্য করে তোলা কারও উত্তর হওয়া উচিত নয়। ব্যবহারকারী সেশনের কাজ একটি ব্যবহারকারী সার্ভিস বা সেশন সহায়কে রাখুন, যাকে কলব্যাক ব্যবহারকারীর ছদ্মবেশ না নিয়েই সংকেত দিতে পারে।
স্ক্রিপ্টের মালিকানা ও অনুমতিও গুরুত্বপূর্ণ। root-এ চালিত এমন ফাইল যা যেকোনো ব্যবহারকারী বদলাতে পারে তা বিশেষাধিকার বৃদ্ধির পথ, এবং VPN লজিক সঠিক কি না তা থেকে স্বতন্ত্র একটি ফলাফল।
যে বিচ্ছেদ কখনো ঘটে না তার পরিকল্পনা করুন
NetworkManager নথিভুক্ত করে যে অপ্রত্যাশিত সমাপ্তি বা সংযোগ হারানোর মতো জোরপূর্বক বিচ্ছেদে vpn-pre-down পাঠানো হয় না। তাই কেবল মৃদু pre-down ঘিরে তৈরি পরিষ্কার করা গঠনগতভাবেই অসম্পূর্ণ। স্ক্রিপ্ট যে কোনো ভাগ করা অবস্থা বদলায় তার আরেক মালিক দরকার যে ক্র্যাশের পরে তা ফিরিয়ে আনতে পারে, এবং সেই পুনরুদ্ধার পথ ধরে নয়, পরীক্ষা করতে হবে।
সাধারণ সংযোগ, পুনঃসংযোগ, ইচ্ছাকৃত বিচ্ছেদ ও টানা কেবল দিয়ে হুকটি পরীক্ষা করুন। গোপনীয়তা লগ না করে UUID, অ্যাকশন ও যে ইন্টারফেস চালু হয়েছিল তা লিপিবদ্ধ করুন। এই রেকর্ডই একমাত্র নির্ভরযোগ্য প্রমাণ যে হুকটি আপনার উদ্দিষ্ট সংযোগের জন্য চলেছিল, এবং এটিই পরবর্তী পরিবর্তনকে নিরাপদ করে।