OpenVPN লগ লাইনে us= বলতে কী বোঝায় এবং এটি কীভাবে রূপান্তর করবেন
us= ফিল্ডটি লগ টাইমস্ট্যাম্পের মাইক্রোসেকেন্ড অংশ, কোনো সেশন আইডি নয়। এটিকে ছয় অঙ্ক পর্যন্ত পূরণ করুন এবং ঘড়ি তুলনা করার আগে পুরো লাইনটি পড়ুন।
OpenVPN-এর টেক্সট লগ একটি তারিখ, একটি সময় এবং একটি us= মান একই লাইনে লেখে, আর তিনটির মধ্যে শেষটি হলো পাঠকরা ভুল বোঝা অংশটি। এটি ওই টাইমস্ট্যাম্পের মাইক্রোসেকেন্ড উপাদান, শূন্য দিয়ে পূরণ না করেই মুদ্রিত। এটি কোনো সেশন শনাক্তকারী, ব্যবহারকারীর নাম বা কাউন্টার নয়, আর এটিকে তা ভাবলে এক সেকেন্ডের একটি ভগ্নাংশ আত্মবিশ্বাসী ভুল সিদ্ধান্তে পরিণত হয়। এটিকে প্রদর্শিত সেকেন্ডের ভগ্নাংশ হিসেবে রূপান্তর করুন, লাইনের বাকি অংশ পাঠযোগ্য থাকবে।
লাইনের তিনটি অংশের অর্থ
তারিখ ও পূর্ণ সেকেন্ড আগে আসে, আর us= এক সেকেন্ডের নিচের অবশিষ্টাংশ বহন করে। 12345 মানে বারো হাজার তিনশো পঁয়তাল্লিশ মাইক্রোসেকেন্ড, অর্থাৎ 0.012345 সেকেন্ড, তাই মুদ্রিত সময় 09:15:30 হলে লাইনটি 09:15:30.012345 বোঝায়। প্রতিটি নতুন সেকেন্ডে কাউন্টার আবার শুরু হয়, তাই পরের লাইন কোনো ঘড়ি পিছিয়ে না গিয়েও ছোট ভগ্নাংশ ছাপতে পারে। কেবল পূর্ণ টাইমস্ট্যাম্পই ঘটনাগুলোকে ক্রমে সাজায়।
2026-11-02 08:41:07 us=4820
এককটি এক সেকেন্ডের এক মিলিয়ন ভাগ, আর us= এর ছয় অঙ্ক 0.000000 থেকে 0.999999 পর্যন্ত পুরো পরিসর ঢাকে। পাঁচ অঙ্ক দশ মিলিসেকেন্ডের গুণিতক বোঝায়, আর ছয় অঙ্ক প্রায় পূর্ণ সেকেন্ড পর্যন্ত শত মিলিসেকেন্ড বোঝায়। রূপান্তরে একের চেয়ে বড় ভগ্নাংশ এলে দশমিক বিন্দু সরে গেছে এবং হিসাব ভুল। হাতে করতে হলে মুদ্রিত পূর্ণসংখ্যাকে এক মিলিয়ন দিয়ে ভাগ করে পূর্ণ সেকেন্ডের সঙ্গে যোগ করতে হয়।
শূন্য দিয়ে পূরণই ফাঁদ। us=42 হলো বিয়াল্লিশ মাইক্রোসেকেন্ড, যা .000042 হিসেবে লেখা হয়, .42 নয়। রূপান্তরের আগে পূর্ণসংখ্যাটি বাঁ দিকে ছয় ঘর পর্যন্ত পূরণ করুন, তাহলে মানটি আর আপনার দেখা অঙ্কগুলোর দশমিক ভগ্নাংশের মতো দেখাবে না।
ক্যালকুলেটর ছাড়া একটি লাইন রূপান্তর
মুদ্রিত সেকেন্ডকে ভিত্তি ধরুন এবং us= কে ভগ্নাংশ হিসেবে ধরুন। 09:15:30 এবং us=12345 এর জন্য দশমিক রূপ 09:15:30.012345; us=900000 এর জন্য তা 09:15:30.900000। দশমিক বিন্দুর পরে অঙ্কগুলো হলো পূরণ করা পূর্ণসংখ্যা, কখনোই হাজার দিয়ে ভাগ করা পূর্ণসংখ্যা নয়। আগে ছয় অঙ্কের রূপটি লিখলে বেশিরভাগ ভুল এড়ানো যায়।
আপনি যদি লগকে টাইমস্ট্যাম্পে বিশ্লেষণ করেন, তারিখ, পূর্ণ সেকেন্ড ও ভগ্নাংশ একসঙ্গে বিশ্লেষণ করুন। যে পার্সার মিলিসেকেন্ড ধরে নেয় সে ঘটনাগুলো হাজার গুণ ভুল ক্রমে সাজাবে, আর আউটপুট তখনো বিশ্বাসযোগ্য দেখাবে।
লগে ফিল্ডটি অনুপস্থিত থাকলে
মাইক্রোসেকেন্ড অংশটি টেক্সট লগ ফরম্যাটের অন্তর্গত এবং কেবল বিস্তারিত টাইমস্ট্যাম্প চালু থাকলে দেখা যায়। OpenVPN 2.6-এর টাইমস্ট্যাম্প ফরম্যাটারে এটি যোগ হয় যখন ওই আউটপুট চালু থাকে এবং সংরক্ষিত মান শূন্য নয়। তাই us= ছাড়া লগ ঘড়ি বা বিল্ড সম্পর্কে কিছুই বলে না; সাধারণত এর অর্থ কনফিগার করা ভার্বোসিটি খুব কম। সময় সিঙ্ক্রোনাইজেশনকে দোষ দেওয়ার আগে কনফিগারেশন দেখুন।
সার্ভার কনফিগারেশন থেকে সেটিংটি সহজেই নিশ্চিত করা যায়। নিচের কমান্ডটি চালান এবং এটি যে সংখ্যা ফেরত দেয় তা পড়ুন। বিস্তারিত টাইমস্ট্যাম্প আউটপুট ভার্বোসিটি 4-এ দেখা যায়, তাই কম মান অন্য কোনো ত্রুটি ছাড়াই অনুপস্থিত ফিল্ড ব্যাখ্যা করে। একই কনফিগারেশন --verb 4 দিয়ে চালালে ডেমন ওই মাত্রায় পুনরায় চালু হওয়ার পর ফিল্ডটি দেখায়।
grep -nE '^[[:space:]]*verb[[:space:]]+[0-9]' /etc/openvpn/server.conf
ভার্বোসিটি বাড়ালে লগে বিস্তারিত যোগ হয়; এটি ঘড়ির উন্নতি করে না। পুনরায় চালুর পর একটি নতুন লাইন পুরোনোটির সঙ্গে তুলনা করে নিশ্চিত করুন যে ফরম্যাট বদলেছে, আর প্রশ্নের উত্তর হয়ে গেলে মাত্রাটি আবার কমান।
ছয় অঙ্ক কী প্রমাণ করে না
ছয় অঙ্ক রেজোলিউশন বোঝায়, আর রেজোলিউশন দুই হোস্ট সময় নিয়ে একমত কি না তা বলে না। ক্লায়েন্ট ও সার্ভার দুজনেই মাইক্রোসেকেন্ড ছাপতে পারে, অথচ তাদের ঘড়ির পার্থক্য সেকেন্ডে। মেশিনের মধ্যে ঘটনা মেলালে সময় অঞ্চল ও যেকোনো জানা অফসেট লিখে রাখুন, এবং যেকোনো টাইমস্ট্যাম্পের চেয়ে পিয়ার বা সেশন উল্লেখ করে এমন ফিল্ডকে প্রাধান্য দিন। একই ভগ্নাংশ ভাগ করা দুটি লাইন জরুরি ভাবে একই সংযোগ নয়।
সংগ্রাহক আগমনের সময় প্রতিটি লাইনে সিলমোহর দিতে পারে, যা সংগ্রাহকের নিজের দ্বিতীয় টাইমস্ট্যাম্প যোগ করে, OpenVPN-এর নয়। তুলনা করার আগে নির্ধারণ করুন আপনি কোনটি পড়ছেন, এবং কাঁচা লাইনটি রেখে দিন যাতে তুলনাটি আবার করা যায়।
একটি নতুন us= মান প্রমাণ করে না যে নতুন ক্লায়েন্ট লগইন করেছে, আর পুনরাবৃত্তিটি প্রমাণ করে না যে ঘটনা দুবার ঘটেছে। পিয়ার ও সংযোগ ফিল্ড এই প্রশ্নগুলোর উত্তর দেয়।