ctstat गाइड: लिनक्स में conntrack कनेक्शन मॉनिटरिंग

परिचय

लिनक्स कर्नल का नेटफिल्टर (Netfilter) सबसिस्टम नेटवर्क लेयर पर सभी सक्रिय सत्रों और पैकेट प्रवाह (conntrack) का व्यवस्थित लेखा-जोखा रखता है। इस ट्यूटोरियल में हम ctstat यूटिलिटी के प्रयोग से कनेक्शन ट्रैकिंग से जुड़े आँकड़ों को रियल-टाइम में मॉनिटर करने की व्यावहारिक तकनीक समझेंगे। हाई-ट्रैफिक वातावरण में कनेक्शन लीकेज या अनपेक्षित लोड स्पाइक्स की शीघ्र पहचान के लिए यह उपकरण सिस्टम एडमिनिस्ट्रेटर के लिए बेहद उपयोगी है।

ctstat टूल सेटअप और कर्नेल conntrack मॉड्यूल सक्रियण

सिस्टम पर कनेक्शन ट्रैकिंग विश्लेषण शुरू करने से पहले हमें iproute2 टूलकिट और कर्नेल स्तर की conntrack यूटिलिटी की आवश्यकता होती है। निम्नलिखित कमांड चलाकर इन दोनों घटकों को इंस्टॉल करें:

iproute2 और conntrack पैकेज इंस्टॉल करना

पैकेट ट्रैकिंग की प्रक्रिया आरंभ करने और आंतरिक मेट्रिक्स जेनरेट करने के लिए कर्नल में nf_conntrack मॉड्यूल को लोड करना अनिवार्य है:

nf_conntrack कर्नेल मॉड्यूल लोड करना

सिस्टम में टूल की उपस्थिति और इसके निष्पादन योग्य बाइनरी पाथ की पुष्टि के लिए which ctstat चलाएँ। ctstat वास्तव में लिनक्स कर्नल द्वारा संकलित conntrack सांख्यिकी को आवधिक रूप से स्क्रीन पर प्रदर्शित करने वाला एक हल्का और प्रभावी मॉनिटरिंग टूल है।
⚙️ [प्रमुख विकल्प]

-c, --count : आँकड़ों के आउटपुट की संख्या सीमित करता है और फिर कमांड अपने आप रुक जाता है।
-i, --interval : प्रत्येक रिफ्रेश के बीच सेकंडों में समय अंतराल निर्धारित करता है।
-h, --help : उपयोग से जुड़े निर्देश और सहायता सूची प्रदर्शित करता है।
-V, --version : स्थापित सॉफ्टवेयर संस्करण की जानकारी देता है।

ctstat बाइनरी पाथ की जाँच

प्रारंभिक निष्पादन और सहायता विकल्पों का अवलोकन

उपलब्ध पैरामीटर्स, फ़ील्ड्स और संचालन संबंधी विस्तृत जानकारी देखने के लिए ctstat --help निष्पादित करें। इससे कमांड के साथ इस्तेमाल होने वाले सभी विकल्पों को सरलता से समझा जा सकता है:

ctstat हेल्प मेनू और उपलब्ध विकल्प

लगातार अपडेट होने वाले डायनामिक कंसोल मोड के स्थान पर केवल वर्तमान स्थिति का एकमुश्त स्नैपशॉट देखने के लिए ctstat -c 1 का प्रयोग किया जाता है। यह निर्दिष्ट एक चक्र का डेटा प्रस्तुत करने के तुरंत बाद प्रोसेस समाप्त कर देता है:

ctstat का एकल स्नैपशॉट आउटपुट

निश्चित अंतराल पर स्वचालित ट्रैकिंग और लूप सीमा तय करना

हर 2 सेकंड के अंतराल पर कुल 3 बार कनेक्शन ट्रैकिंग मेट्रिक्स का अवलोकन करने के लिए ctstat -i 2 -c 3 निष्पादित करें। तय चक्र पूरे होते ही यह मॉनिटरिंग सत्र को अपने आप समाप्त कर देता है:

2 सेकंड अंतराल पर 3 चक्रों का आउटपुट

ट्रैकिंग टेबल में लाइव हलचल देखने और नए सत्रों का प्रभाव जाँचने के लिए curl -s https://www.google.com > /dev/null के माध्यम से एक त्वरित वेब अनुरोध भेजते हैं:

curl द्वारा नया नेटवर्क कनेक्शन स्थापित करना

ट्रैफिक जनरेशन के तुरंत बाद बदले हुए कनेक्शन आँकड़ों का निरीक्षण करने के लिए ctstat -i 1 -c 2 चलाएँ। 1 सेकंड के अंतराल पर 2 बार आँकड़े मिलने से नए सत्रों के कारण प्रभावित काउंटर आसानी से समझ आ जाते हैं:

ट्रैफिक के बाद अद्यतन conntrack आँकड़े

चुनिंदा conntrack फ़ील्ड्स का फ़िल्टरिंग एवं आंतरिक कर्नेल मिलान

स्क्रीन पर अनावश्यक विवरण हटाकर केवल काम के मेट्रिक्स पर ध्यान देने के लिए -k फ़्लैग से विशिष्ट फ़ील्ड्स चुने जा सकते हैं। सक्रिय सत्रों की संख्या (entries) तथा लुकअप आँकड़ों (searched, found) को 2 बार प्रदर्शित करने के लिए ctstat -k entries,searched,found -c 2 चलाएँ:

विशिष्ट फ़ील्ड्स entries searched found का फ़िल्टरिंग

कर्नल द्वारा प्रबंधित वास्तविक कनेक्शन सत्रों की सटीक संख्या सीधे पढ़ने के लिए /proc फाइलसिस्टम के cat /proc/sys/net/netfilter/nf_conntrack_count पाथ की जाँच करें। इस आउटपुट की तुलना ctstat के entries मान से करके आप डेटा की प्रामाणिकता की पुष्टि कर सकते हैं:

proc फाइलसिस्टम से सक्रिय conntrack संख्या का सत्यापन

इस प्रकार लिनक्स सर्वर पर ctstat के उचित प्रयोग से नेटवर्क कनेक्शन ट्रैकिंग की आंतरिक स्थिति को रियल-टाइम में ट्रैक करना सरल हो जाता है। व्यस्त सर्वरों, फ़ायरवॉल गेटवे और कंटेनर इन्फ्रास्ट्रक्चर में संभावित नेटवर्क बाधाओं की पूर्व-पहचान के लिए यह यूटिलिटी अत्यंत मूल्यवान सिद्ध होती है।