স্ক্রিন অন্ধকার হলে VPN বন্ধ হয়ে যায়: লক, ব্ল্যাংক নাকি সাসপেন্ড?
লক করা সেশন, অন্ধকার স্ক্রিন আর সাসপেন্ড হওয়া মেশিন তিনটি আলাদা ঘটনা। VPN-এর কিপঅ্যালাইভকে দোষ দেওয়ার আগে journalctl দিয়ে এগুলো মিলিয়ে দেখুন।
কেউ যখন বলে স্ক্রিন অন্ধকার হওয়ার সময় VPN মরে গেছে, তখন প্রথম দরকারি প্রশ্ন হলো তিনটি ঘটনার মধ্যে আসলে কোনটি ঘটেছে: সেশন লক হয়েছে, প্যানেল বন্ধ হয়েছে, নাকি পুরো মেশিন ঘুমিয়ে পড়েছে। এগুলো আলাদা টাইমারের আলাদা ব্যবস্থা, এবং এগুলোর মধ্যে কেবল একটি প্রক্রিয়ার শিডিউলিং পুরোপুরি থামাতে পারে। নিচের পরীক্ষাগুলো ক্রম অনুসারে দেখুন। প্রশ্নের উত্তর দেয় এমন প্রথম পরীক্ষাতেই থামুন, কারণ তার পরের প্রতিটি পরীক্ষা অন্য কিছু ব্যাখ্যা করে।
প্রথম পরীক্ষা: লক, ব্ল্যাংক আর সাসপেন্ডকে আলাদা করুন
লক নির্ধারণ করে সেশনটি কে ব্যবহার করতে পারবে; কম্পোজিটর আঁকা চালিয়ে যায়, নেটওয়ার্ক স্ট্যাক চলতে থাকে এবং VPN ক্লায়েন্ট কিছুই টের পায় না। ডিসপ্লে ব্ল্যাংকিং নিষ্ক্রিয় সময়ের পরে প্যানেল বন্ধ করে এবং মেশিনকে পুরোপুরি জাগ্রত রাখে। সাসপেন্ড প্রসেসরগুলো থামিয়ে দেয়, অর্থাৎ ব্যবহারকারী-স্পেসের কোনো প্রক্রিয়াই শিডিউল হয় না, তাই বিরতি যত ছোটই রাখুন না কেন কোনো কিপঅ্যালাইভ চলতে পারে না।
| Event | What it stops | Can it kill the tunnel? |
|---|---|---|
| Session lock | Input to your session | No |
| Display blank | The panel | No |
| Suspend to RAM | CPU scheduling, hence every process | Yes, and silently |
| Hibernate | Everything, with state written to disk | Yes |
এই ছকটাই কারণ যে «স্ক্রিন অন্ধকার হয়েছে» কোনো রোগনির্ণয় নয়। পাঁচ মিনিটে ব্ল্যাংক আর ত্রিশ মিনিটে সাসপেন্ডে সেট করা ডেস্কটপ ছয় নম্বর মিনিটে অন্ধকার স্ক্রিন দেখাবে, অথচ টানেল সম্পূর্ণ সুস্থ। ত্রিশ নম্বর মিনিটের ব্যর্থতা অন্য একটি ঘটনা ও অন্য সমাধান, আর ঘরের ওপার থেকে দুটোই একই রকম দেখায়।
দ্বিতীয় পরীক্ষা: পাওয়ার ও নেটওয়ার্কের ঘটনাগুলো একটি টাইমলাইনে রাখুন
পুরো বুটের বদলে একটি সীমিত সময়ের জানালার জার্নাল পড়ুন, এবং লগইন ম্যানেজার ও সংযোগের মালিক—দুটোই অন্তর্ভুক্ত করুন:
journalctl -b -u systemd-logind -u NetworkManager --since "45 minutes ago"
systemd-inhibit --list
প্রথম কমান্ডটি ঘুমের অনুরোধ, পুনরুদ্ধার এবং তার পরের নেটওয়ার্ক পরিবর্তনগুলো দেখায়। দ্বিতীয়টি দেখায় এখন কোন জিনিস একটি ইনহিবিটর লক ধরে আছে, যা আপনাকে জানায় কিছু কি ইচ্ছাকৃতভাবে ঘুম আটকাচ্ছে এবং সেটি কোন প্রোগ্রাম। আপনার সংযোগের মালিক NetworkManager না হলে ইউনিটের নামগুলো বদলান, এবং মনে রাখুন অন্য ব্যবহারকারীর ইউনিট বা সিস্টেম জার্নাল পড়া স্থানীয় নীতির উপর নির্ভর করে।
একটি অনুপস্থিত লাইন নেতিবাচক ফলাফল নয়। নির্বাচিত ইউনিটের জার্নাল আপনার অ্যাকাউন্টের কাছে দৃশ্যমান না হলে সাসপেন্ড রেকর্ডের অনুপস্থিতি কিছুই প্রমাণ করে না, আর খালি ফিল্টার থেকে «এটা কখনো ঘুমায়নি» সিদ্ধান্তে আসাই হলো সেই পথ যেখানে মানুষ এক সপ্তাহ ধরে কিপঅ্যালাইভ ঠিক করতে থাকে।
তৃতীয় পরীক্ষা: যদি সাসপেন্ড হয়ে থাকে, সেটি ইচ্ছাকৃত ছিল কি না ঠিক করুন
টাইমলাইনে ঘুমের একটি পরিবর্তন দেখা গেলেই প্রশ্নটি বদলে যায়—VPN কেন ভাঙল তা থেকে মেশিনের আদৌ ঘুমানো উচিত ছিল কি না। ল্যাপটপে উত্তর প্রায়ই হ্যাঁ, এবং টানেলের বিচ্ছিন্নতা প্রত্যাশিত আচরণ যা ক্লায়েন্টের পুনরুদ্ধারের সময় কাটিয়ে ওঠা উচিত। যে ওয়ার্কস্টেশনটি নাগালে থাকার কথা, সেখানে ঘুমের নীতিই বদলানোর জিনিস। এই দুটি মেশিনের কোনটি আপনি দেখছেন তা ঠিক করতে একটি প্রশ্নই যথেষ্ট, আর সেটি এমন প্রশ্ন নয় যা জার্নাল আপনার হয়ে উত্তর দিতে পারে।
এটি বদলান লগইন করা সেশনের নিয়ন্ত্রণ দিয়ে, অথবা প্রয়োজন পুরো মেশিনের হলে প্রশাসক-সমর্থিত কোনো ব্যবস্থা দিয়ে। অন্য অ্যাকাউন্টে লগইন থাকা অবস্থায় ডিসপ্লে ম্যানেজারের সেটিং সম্পাদনা করা একই কাজ নয় এবং পরের সেশন শুরু হওয়ার আগ পর্যন্ত কাজ করেছে বলেই মনে হবে। পাওয়ার ম্যানেজমেন্ট পুরোপুরি বন্ধ করা একটি বিস্তৃত প্রথম প্রতিক্রিয়া যা ব্যাটারির আয়ু খায় এবং আসল নীতিগত প্রশ্নটি ঢেকে দেয়।
চতুর্থ পরীক্ষা: যদি জেগে থাকে, নেটওয়ার্ক ও ক্লায়েন্ট দেখুন
টানেল হারানো জাগ্রত মেশিনের তিনটি গল্পের একটি থাকে: অ্যাক্সেস নেটওয়ার্ক পড়ে গেছে, VPN ক্লায়েন্ট থেমেছে বা আবার চালু হয়েছে, অথবা সার্ভারের দিক সংযোগটির মেয়াদ শেষ করেছে অথচ ক্লায়েন্ট এখনো সংযুক্ত বলে বিশ্বাস করেছে। মূল লিংক ঘটনার টাইমস্ট্যাম্পের সঙ্গে টানেল ঘটনার টাইমস্ট্যাম্প মিলিয়ে দেখুন এবং কোনটি আগে এসেছে তা স্পষ্ট করুন।
তারপর মূল সেশন থেকে আলাদা করে পুনরুদ্ধারের পথ পরীক্ষা করুন। পুনরুদ্ধার হওয়া টানেল দিয়ে নতুন অনুরোধ সফল হতে পারে, অথচ বিচ্ছিন্নতার আগে খোলা দীর্ঘস্থায়ী অ্যাপ্লিকেশন সেশনটি ভাঙাই থেকে যায়, কারণ অ্যাপ্লিকেশনটি একটি পুরনো সকেট বা ক্যাশ করা ঠিকানা ধরে রেখেছে। এটি অ্যাপ্লিকেশনের সমস্যা, টানেল ফিরে আসতে ব্যর্থ হয়েছে তার প্রমাণ নয়।
একটি কাজের রিপোর্টে কী থাকে
টাইমস্ট্যাম্প ও মালিকসহ ক্রমটি লিখুন: কখন সেশন লক হয়েছে, কখন স্ক্রিন অন্ধকার হয়েছে, ঘুমের অনুরোধ রেকর্ড হয়েছে কি না, কখন লিংক নেমে গিয়ে ফিরে এসেছে, কখন টানেল অবস্থা বদলেছে এবং অ্যাপ্লিকেশনটি আসলে কী করেছে। প্রতিটি সারির একটি মালিক আছে, তাই প্রতিটি সারি Linux নিয়ে সাধারণ অভিযোগে পরিণত না হয়ে সঠিক মানুষের কাছে দেওয়া যায়।
এই সারিগুলোর কোনোটি না থাকলে সেটিই পরের মাপার জিনিস, পরের বদলানোর জিনিস নয়। ফাঁক থাকা টাইমলাইন অনুমানের ভিত্তিতে করা সেটিংস পরিবর্তনের চেয়ে বেশি তথ্য দেয়।