কিছু একটা বারবার একটি OpenVPN ইউনিট চালু করছে: উৎস খুঁজুন
একটি ইউনিট নিষ্ক্রিয় করা তার সক্রিয়করণ সরানোর সমান নয়। প্রোফাইল মুছার আগে ইনস্ট্যান্স, টেমপ্লেট ম্যাপিং এবং বিপরীত নির্ভরতাগুলো পড়ুন।
একটি OpenVPN ইনস্ট্যান্স বুটের সময় এমন নামে ওঠে যা আপনি চেনেন না, এবং এটি থামানো পরের রিবুট পর্যন্ত কাজ করে। এই ধরনটি বোঝায় যে আপনি প্রক্রিয়াটি সরিয়েছেন কিন্তু সক্রিয়করণ নয়। এগুলো দুটি আলাদা বস্তু, আর স্টেটাস স্ক্রিনে এর মধ্যে কেবল একটি দেখা যায়। সক্রিয়করণ খুঁজতে চারটি শুধু-পড়ার কমান্ড এবং একটি সিদ্ধান্ত লাগে।
প্রথমে সঠিক ইউনিটের নাম দিন
প্রোফাইল ফাইলের নামের বদলে journal-এ ইউনিটের নাম থেকে শুরু করুন। ইনস্ট্যান্সের নাম openvpn@, openvpn-client@, openvpn-server@ বা ডিস্ট্রিবিউশন-নির্দিষ্ট কিছু হতে পারে, আর নাম অনুমান করা আপনাকে ভুল টেমপ্লেটে নিয়ে যায়। স্টেটাস আউটপুট সেই ইউনিটের নাম বলে যা সত্যিই চলেছিল, এবং এখানে কেবল সেই নামই গুরুত্বপূর্ণ। এটি হুবহু কপি করুন, যেকোনো প্রত্যয়সহ।
নিচের কমান্ডগুলো কিছু না বদলে সেই ইউনিটের বর্ণনা দেয়। systemctl show ফ্র্যাগমেন্ট পথ, উৎস পথ, ইউনিট ফাইলের অবস্থা, যেকোনো drop-in এবং এটি কী দিয়ে সক্রিয় হয়েছিল জানায়। list-dependencies --reverse দেখায় কোন লোড করা ইউনিটগুলো এটির দিকে ইঙ্গিত করে। দুটোই শুধু-পড়ার, তাই তত্ত্ব তৈরির আগে এগুলো চালান।
দেখা নামটি সর্বত্র প্রতিস্থাপন করুন। কপি করা উদাহরণ নাম ভুল সার্ভিস তদন্তের সবচেয়ে সাধারণ উপায়, আর এটি এমন ইউনিট সম্পর্কে আত্মবিশ্বাসী উত্তর দেয় যা কখনো চলে নি।
ফাইলের নাম জানতে টেমপ্লেট পড়ুন
ইনস্ট্যান্স ইউনিট হলো একটি টেমপ্লেটের সম্প্রসারণ, এবং টেমপ্লেট ঠিক করে কোন কনফিগারেশন ফাইল পড়া হয়। ইনস্ট্যান্স-নির্দিষ্ট প্লেসহোল্ডারে শেষ হওয়া কমান্ড লাইন ইনস্ট্যান্স নাম ও প্রত্যয়ে পরিণত হয়। যদি প্রত্যয় .conf হয় এবং ইনস্ট্যান্সের নাম old হয়, ফাইলটি old.conf। যদি ইনস্ট্যান্সের নাম old.conf রাখেন, একই টেমপ্লেট old.conf.conf চায়।
এই বিবরণ ডুপ্লিকেটের একটি শ্রেণি ব্যাখ্যা করে। কেউ ভুল নামে দ্বিতীয় ইনস্ট্যান্স যোগ করে, প্রথমটি চলতে থাকে, আর হোস্ট দুই টানেল ও একটি বিভ্রান্তিকর লগ নিয়ে শেষ করে।
যে ফাইলটি আপনি সম্পাদনা করেছেন বলে মনে করেন তার বদলে কার্যকর টেমপ্লেট পড়ুন। Drop-in কমান্ড লাইন বদলাতে পারে, আর বুটের সময় সেই প্রতিস্থাপনই চলে।
এটি কীভাবে বুট ট্রানজ্যাকশনে ঢোকে তা অনুসরণ করুন
তিনটি পথ সাধারণ: লক্ষ্য থেকে wants লিঙ্ক, অন্য ইউনিটের চাহিদা, বা প্যাকেজ জেনারেটরের তৈরি ইউনিট। বিপরীত নির্ভরতার তালিকা প্রথম দুটিকে লোড করা গ্রাফ এন্ট্রি হিসেবে অন্তর্ভুক্ত করে। এটি টাইমার, হুক বা বাইরের অনুরোধ অন্তর্ভুক্ত করে না, তাই তালিকাটি সম্পূর্ণ অডিট নয়, প্রমাণ।
/run/systemd/generator এর অধীনে তৈরি আউটপুট একটি পণ্য, উৎস নয়। এটি সম্পাদনা কেবল পরের জেনারেশন পর্যন্ত টেকে, তাই সেখানে প্রয়োগ করা সংশোধন সফল দেখায় আর পরে ফিরে আসে।
জেনারেটর কোথা থেকে পড়ে তা ধরে নেওয়ার আগে প্যাকেজের নথিভুক্ত ইনপুট যাচাই করুন। কোনো ডিরেক্টরির অনথিভুক্ত স্ক্যানই সাধারণ কারণ যাতে ইউনিট সক্রিয়করণ লিঙ্ক ছাড়া দেখা যায়।
সক্রিয়করণ সরান, কেবল প্রক্রিয়া নয়
যদি ইনস্ট্যান্স সরাসরি সক্রিয় এবং সত্যিই অপ্রচলিত হয়, systemctl disable --now এটি থামায় এবং এক ধাপে বুট লিঙ্ক সরায়। প্রথমে যাচাই করুন যে এই টানেলটি হোস্টে আপনার একমাত্র প্রশাসনিক পথ নয়। কমান্ডটি জীবনচক্রের উদাহরণ, মেশিনের প্রতিটি VPN থামানোর পরামর্শ নয়। যাচাই কমান্ডের আগে করুন, পরে নয়।
দুই অর্ধাংশ আলাদা করা যায় এবং প্রায়ই গুলিয়ে যায়। নিষ্ক্রিয় করা চলমান সার্ভিস থামায় না, আর থামানো সক্রিয়করণ সরায় না, তাই আংশিক কমান্ড এমন সমস্যা ব্যাখ্যা করে যা বুটে ফিরে আসে।
নিষ্ক্রিয় ইউনিটও অন্য ইউনিট বা স্পষ্ট অনুরোধে চালু হতে পারে। যখন জেনারেটরের কাছে সক্রিয়করণ থাকে, তার আউটপুট নিষ্ক্রিয় করার বদলে তার ইনপুট ঠিক করুন। মাস্কিং বেশি পথ বন্ধ করে কিন্তু নির্ভরতা ভাঙতে পারে, তাই এটি বোঝার বিকল্প নয়।
স্টেটাস স্ক্রিনে নয়, রিবুটে যাচাই করুন
ইউনিট সংজ্ঞা বা জেনারেটর ইনপুট বদলালে systemd পুনরায় লোড করুন, তারপর ফলাফল অবস্থা পরীক্ষা করুন। ডেমন পুনরায় লোড চলমান টানেলে নতুন প্রোফাইল ঠেলে না, তাই দুই যাচাই আলাদা। একটি রিবুট নির্ধারণ করুন এবং নিশ্চিত করুন যে ইনস্ট্যান্স অনুপস্থিত থাকে যখন অভীষ্ট টানেল এখনো কাজ করে।
পুরোনো প্রোফাইলটি তার মালিকানা বোঝা পর্যন্ত রাখুন, তারপর অভীষ্ট প্রক্রিয়ায় তা অবসর দিন। সাফল্য হলো অনুপস্থিত ইউনিট ও কার্যকর অ্যাক্সেস পথ, একটি স্ক্রিন থেকে হারানো ব্যর্থ ইউনিট নয়।