স্থানীয় সিস্টেম লগ VPN সংযোগ সম্পর্কে কী প্রকাশ করে
অপারেটিং সিস্টেম পরিষেবা শুরুর সময়, অ্যাডাপ্টরের পরিবর্তন আর রুট ব্যর্থতা লিখে রাখে, যা অ্যাপ কখনো লেখে না। একটা সংকীর্ণ সময়-জানালা পড়ুন আর তার সঙ্গে মিলিয়ে দেখুন।
প্রতিটি ডেস্কটপ নিজের মতো করে লিখে রাখে একটা VPN কী করেছে, আর অ্যাপটির এক্সপোর্ট সাধারণত সে রেকর্ডগুলোর মধ্যে সবচেয়ে অসম্পূর্ণ। সার্ভিস ম্যানেজাররা নোট করে ইউনিট কখন চালু হলো, কার্নেল নোট করে ইন্টারফেস কখন দেখা গেল, আর নেটওয়ার্ক স্ট্যাক নোট করে রুট প্রয়োগ করা কখন ব্যর্থ হলো। এই কোনো ব্যবস্থাই জানে না ক্লায়েন্ট কী চেয়েছিল, আর ক্লায়েন্টও জানে না কার্নেল তার অনুরোধে কী করল।
এরকম একটা রেকর্ড আলাদা করে পড়লে ভুল সিদ্ধান্তে পৌঁছানো সহজ। একই মিনিটের দুটি রেকর্ড পড়ুন, তখন ক্রমটা দৃশ্যমান হয়।
তিনটি ব্যবস্থা, তিনটি পরিভাষা
Linux-এ systemd জার্নাল ইউনিটের জীবনচক্রের বার্তা ধরে রাখে wg-quick@wg0 বা NetworkManager VPN প্লাগইন থেকে, আর কার্নেলের রিং বাফার ইন্টারফেস ও রাউটিং বার্তা বহন করে। Windows-এ ইভেন্ট লগ গল্পটা সিস্টেম, WLAN আর রিমোট-অ্যাক্সেস প্রদানকারীর মধ্যে ভাগ করে, প্রত্যেকের নিজস্ব শনাক্তকারী আছে। macOS-এ একীভূত লগ সাবসিস্টেম-সীমিত বার্তা বহন করে, যা গ্রাফিক্যাল Console কেবল আংশিক দেখায়।
পরিভাষাগুলো অনুবাদ হয় না। এক প্ল্যাটফর্মের ইভেন্ট শনাক্তকারী অন্য প্ল্যাটফর্মে কিছুই বোঝায় না, আর Windows ডায়ালগের স্ক্রিনশট Linux ইউনিট সম্পর্কে কিছুই প্রমাণ করে না।
তিনটিরই সাধারণ বিষয় হলো একটা টাইমস্ট্যাম্প, একটা উৎস আর একটা তীব্রতা, আর এই ত্রয়ীই ক্লায়েন্ট লগ ও অপারেটিং সিস্টেমের রেকর্ডের মধ্যে মিলিয়ে দেখা সম্ভব করে। প্রাপ্যতাও ভিন্ন হয়: জার্নালহীন কনটেইনার, ছাঁটা Windows ইমেজ, বা বিল্ডের সময় কমানো লগ-স্তর পুরো একটা স্তর লুকিয়ে রাখতে পারে।
| Facility | What it records | What it cannot show |
|---|---|---|
| systemd journal | Unit start and stop, helper output, exit status | Whether packets actually reached the peer |
| Kernel and netlink | Interface creation, address assignment, route changes | Why the client asked for that configuration |
| Windows event log | Provider-specific connection and adapter events | Anything the provider chose not to log |
সংযুক্ত লাইন কী প্রমাণ করে আর কী করে না
সার্ভিস-শুরুর ইভেন্ট লিখে রাখে যে স্থানীয় ইউনিটকে চালু হতে বলা হয়েছিল এবং সেটি সঙ্গে সঙ্গে বন্ধ হয়নি। এটি সম্পন্ন হ্যান্ডশেক, বৈধ পিয়ার কী বা কাজ করা রুট লিখে রাখে না। ওই লাইনটাকে টানেলের প্রমাণ ভাবা এই লগগুলোর সবচেয়ে সাধারণ ভুল পাঠ। লাইনটি অভিপ্রায় আর প্রসেসের অবস্থা প্রমাণ করে, আর পৌঁছানোর ব্যাপারে একেবারেই কিছু না।
ফরওয়ার্ডিং অবস্থা আলাদা একটা পর্যবেক্ষণ, আর এটি কোনো লগ থেকে নয়, রাউটিং টেবিল থেকে আসে।
অ্যাডাপ্টর ইভেন্ট একটি নীরব ব্যর্থতা ব্যাখ্যা করতে পারে: ইন্টারফেস উঠে এলো, ঠিকানা বরাদ্দ হলো, আর রুট কখনো ইনস্টল হয়নি কারণ একটা পলিসি নিয়ম সেগুলো প্রত্যাখ্যান করেছিল। সেই ক্রমে প্রতিটি দৃশ্যমান লাইন সুস্থ দেখায় অথচ কিছুই রাউট হয় না, আর এটি দেখার একমাত্র উপায় হলো একই মুহূর্তে লগের টাইমস্ট্যাম্প রাউটিং টেবিলের সঙ্গে মেলানো। ক্লায়েন্টের নিজের ইভেন্ট-ক্রম দুটির পাশে রাখুন, কারণ ক্লায়েন্টই একমাত্র উৎস যা জানে সে কী চেয়েছিল। একসঙ্গে প্রয়োজনীয় দুটি তথ্য প্রায় কখনোই একই লাইনে দেখা যায় না।
পরে আবার সংযোগ হলে ছবিটির আগ্রহের অংশটি মুছে যায়, তাই তিনবার পুনরায় চেষ্টার পরে নয়, প্রথম ব্যর্থতার সময়ই জানালাটি ধরে রাখুন।
একটি সংকীর্ণ জানালা মিলিয়ে দেখুন
চেষ্টার সময়টা তার টাইমজোনসহ লিখে রাখুন, তারপর তার আশপাশের কয়েক মিনিট টেনে নিন। জানালার প্রথম ত্রুটিটি প্রায় সবসময়ই সাপোর্ট টিকিটে উদ্ধৃত সংযোগ-বিচ্ছেদের লাইনের আগে ঘটে।
journalctl -u wg-quick@wg0 --since "today 09:00" --until "today 09:20" ip route show table all | grep wg0 log show --last 20m --predicate 'subsystem == "com.apple.network"'
প্রতিটি কমান্ড প্রশ্নের ভিন্ন অংশের উত্তর দেয়: প্রথমটি জীবনচক্র দেয়, দ্বিতীয়টি ফরওয়ার্ডিং অবস্থা, তৃতীয়টি macOS নেটওয়ার্ক সাবসিস্টেম। Windows-এ পুরো চ্যানেল স্ক্রল না করে প্রদানকারীর নাম দিয়ে সিস্টেম লগ ফিল্টার করুন, এবং কেবল মিলে যাওয়া ইভেন্টগুলো এক্সপোর্ট করুন।
উদ্ধৃতিটা এত ছোট রাখুন যাতে পাঠক তা অনুসরণ করতে পারেন। চারটি প্রাসঙ্গিক ইভেন্টসহ বিশ মিনিটের জানালা একটা সিদ্ধান্ত সমর্থন করে; হাজার হাজার লাইনের সারাদিনের এক্সপোর্ট কিছুই সমর্থন করে না।
এই রেকর্ডগুলো কোথায় থেমে যায়
স্থানীয় রেকর্ড ডিভাইসের বর্ণনা দেয়, পথের নয়। তারা দেখাতে পারে না প্রদানকারী কী সংরক্ষণ করেছে, কোনো সেশন অ্যাকাউন্টের সঙ্গে মিলেছে কি না, বা কোনো গন্তব্য কী দেখেছে। লগ না রাখার বিষয়ে প্রদানকারীর বক্তব্য আপনার ল্যাপটপের অপারেটিং সিস্টেম সম্পর্কে কিছুই বলে না, আর স্থানীয় ইভেন্ট প্রদানকারীর ঐতিহাসিক রেকর্ড সম্পর্কে কিছুই প্রমাণ করে না।
তারা প্রত্যাশার চেয়ে বেশি ব্যক্তিগত তথ্যও বহন করে: ব্যবহারকারীর নাম, হোস্টনেম, মাউন্ট পাথ আর ডিভাইস শনাক্তকারী সাধারণ সিস্টেম বার্তায় দেখা যায়, এমনকি ব্রাউজিং কনটেন্ট না থাকলেও। টিকিটে কিছু সংযুক্ত করার আগে সেগুলো সরিয়ে দিন, আর মূলটি স্বাভাবিক অ্যাক্সেস নিয়ন্ত্রণে রাখুন।
পরিচালিত ডিভাইসে সাংগঠনিক লগিং মুছতে চেষ্টা না করে IT-এর কাছে প্রাসঙ্গিক উদ্ধৃতিটি চান। ডায়াগনস্টিক লক্ষ্য হলো দুটি উৎসে উত্তর পাওয়া একটা সংকীর্ণ প্রশ্ন, মেশিনের সম্পূর্ণ ইতিহাস নয়।