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

ফাইল দিয়ে নয়, সার্ভিস দিয়ে শুরু করুন

অস্বীকৃতি সাধারণত OpenVPN নিজে থেকে নয়, লঞ্চার থেকে আসে। এটি একটি পাথ পড়ে, সেখানে কিছু পায়, এবং কনফিগারেশন পার্স করার আগেই থেমে যায়। তাই প্রথম প্রশ্নটি টানেল নয়, লঞ্চারের চুক্তি সম্পর্কে।

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

কেবল তখনই প্রশ্নটি হয় কোনো ইনস্ট্যান্স সত্যিই চলছে কি না।

যাচাই করুন সেই আইডেন্টিফায়ার আপনার ইনস্ট্যান্সের কিনা

ফাইলের একটি সংখ্যা প্রমাণ করে একটি সংখ্যা লেখা হয়েছিল। এটি প্রমাণ করে না যে সেই আইডেন্টিফায়ারযুক্ত প্রসেস এখন আছে, এবং অবশ্যই প্রমাণ করে না যে প্রসেসটি আপনার, কারণ রিবুটের পর আইডেন্টিফায়ার পুনরায় ব্যবহৃত হয়।

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

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

systemctl status [email protected]
ps -o pid,lstart,args -p "$(cat /run/openvpn/vpn.pid)"

লঞ্চার ফাইলটি নিয়ে কী করার প্রতিশ্রুতি দিয়েছিল

PIDFile= সার্ভিস ম্যানেজারকে বলে মূল প্রসেসের আইডেন্টিফায়ার কোথা থেকে পড়তে হবে। ম্যানেজার সেই ফাইল লেখে না, তবে শাটডাউনের পর টিকে থাকা ফাইল সরিয়ে দেয়, ঠিক এজন্য একটি বাধাপ্রাপ্ত প্রস্থান ফাইল রেখে যেতে পারে।

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

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

পরিষ্কার শাটডাউন বনাম বাধাপ্রাপ্ত প্রস্থান

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

তারপর ফাইলের টাইমস্ট্যাম্প শেষ বুট এবং ইউনিটের শেষ স্টপের সঙ্গে তুলনা করুন।

তারপর জীবন্ত প্রমাণ সরাসরি যাচাই করুন। VPN পোর্টে বাঁধা একটি সকেট এবং ঠিকানা-যুক্ত একটি টানেল ইন্টারফেস প্রমাণ যে কিছু চলছে, এমনভাবে যা রানটাইম ডিরেক্টরির টেক্সট ফাইল কখনো হতে পারে না। দুটোই অনুপস্থিত থাকলে, ফাইল যা-ই দাবি করুক, কিছুই চলছে না।

অভ্যাসে ফাইল মুছে ফেলা বন্ধ করুন

কোনো ইনস্ট্যান্স এর মালিক নয় এবং লঞ্চার এই আচরণ নথিভুক্ত করে, এটি প্রতিষ্ঠা করার পর এটি মুছে ফেলা বৈধ পুনরুদ্ধার পদক্ষেপ।

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

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

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