پروتکل SNMP یکی از پروتکل های لایه Application است که امکان نقل و انتقال اطلاعات مدیریتی را بین عناصر شبکه ایجاد می کند و در واقع قسمتی از پروتکل TCP/IP می باشد. این پروتکل به طور وسیعی برای مانیتورینگ و مدیریت اجزاء شبکه استفاده می شود.
بسیاری از وندورها، تجهیزات تولیدی خود را به پروتکل SNMP مجهز می کنند تا امکان نظارت بر عملکرد آنها به کمک نرم افزارهای مانیتورینگ فراهم شود. در حال حاضر سه نسخه از پروتکل SNMP وجود دارد، SNMPv1، SNMPv2 و SNMPv3 که در ادامه با تفاوت های این سه نسخه از پروتکل SNMP آشنایی پیدا خواهید کرد.
اجزاء اصلی پروتکل SNMP چیست و آشنایی با عملکرد هر کدام از آنها
برای آشنایی با پروتکل SNMP ابتدا باید با اجزاء اصلی اون آشنا شوید:
- SNMP Manager
- Managed Devices
- SNMP Agent
- Management Information Base (MIB)
SNMP Manager (یا سیستم مدیریت شبکه)
یک SNMP Manager که با نام Network Management System (NMS) هم شناخته می شود، وظیفه برقراری ارتباط و تبادل اطلاعات با SNMP Agent های فعال در تجهیزات شبکه را بر عهده دارد. به زبان ساده تر، یک SNMP Manager کامپیوتری است که بر روی آن یک نرم افزار مانیتورینگ شبکه مثل نرم افزار مانیتورینگ شبکه بینا نصب شده است و وظیفه مانیتورینگ شبکه را بر عهده دارد.وظایف یک SNMP Manager به طور عمده عبارتند از:
- ارسال پرس و جو به Agent ها
- دریافت پاسخ از Agent ها
- سِت کردن متغیر ها در Agent ها
- دریافت پیغام های Trap از Agent ها
Managed Devices (یا تجهیزات شبکه)
منظور از Managed Device همه دستگاه های شبکه هستند که بر روی آنها SNMP Agent فعال شده باشد، مثل روتر ها، سوئیچ ها، سرورها و فایروال ها.
SNMP Agent (یا عامل)
یک SNMP Agent در اصل برنامه ای است که بر روی تجهیزات شبکه کار گذاشته شده تا قابلیت SNMP را به آنها اضافه کند و وظیفه اصلی آن پاسخ دادن به درخواست های ارسال شده از طرف SNMP Manager است. وقتی SNMP Agent روی یک دستگاه فعال می شود، شروع به ثبت شاخص ها و اطلاعات دستگاه به صورت لوکال می کند و این اطلاعات را در دسترس NMS ها قرار می دهد.
این اِیجنت ها می توانند استاندارد باشند مثل (Net-SNMP) یا مخصوص یک وندور باشند مثل (HP Insight Agent).به طور کلی وظایف یک SNMP Agent عبارتند از:
- جمع آوری اطلاعات مدیریتی از دستگاهی که روی آن نصب شده است
- نگه داری و فراخوانی اطلاعات مدیریتی بر اساس MIB مربوطه
- ارسال سیگنال به NMS شبکه.
Management Information Base -MIB (یا پایگاه داده اطلاعات مدیریتی)
هر SNMP Agent دارای یک پایگاه داده برای معرفی و توصیف پارامتر های قابل نظارت و اندازه گیری است. به عبارتی SNMP Manager ها از این پایگاه داده جهت ارسال درخواست به ایجنت ها برای دریافت پارامتر های مورد نظر و همچنین تفسیر پاسخ ها مطابق با تعاریف صورت گرفته توسط وندور استفاده می کنند.
به زبان ساده، یک MIB یک پایگاه داده متنی است که فهرست پارامتر های قابل مانیتورینگ روی دستگاه را مشخص می کند و زبان مشترک بین Agent و Manager است، شاید بتونیم بگیم فایل های MIB مجموعه ای از سوالاتی است که یک NMS می تواند از دستگاه تحت مانیتورینگ بپرسد.
آیا دوست دارید با امکانات نرم افزار مانیتورینگ بینا بیشتر آشنا بشید؟
ما در یک جلسه دموی کوتاه حضوری و یا ریموتی بینا رو به شما معرفی می کنیم.
نرم افزار مانیتورینگ شبکه بینا
آشنایی با ساختار MIB و معرفی شناسه آبجکت ها (OID)
همانطور که گفتیم، یک MIB مجموعه ای از اطلاعات برای مانیتورینگ اجزاء شبکه هستند. به طور دقیق تر، MIB شامل مجموعه ای از آبجکت ها است که با نام Object Identifier – OID شناخته می شوند.
هر OID منحصر به فرد است و به یک ویژگی بخصوص دستگاه اشاره می کند، مثلا یک OID میزان مصرف حافظه را نمایش می دهد و یک OID دیگر ممکن است سرعت فن دستگاه را برگرداند. مقدار برگشتی OID ها ممکن است با یکدیگر متفاوت باشد، مثلا متن، عدد و شمارنده یا انواع دیگر.به طور کلی دو نوع OID وجود دارد: Scalar و Tabular که شاید درک تفاوت آنها با مثال ساده تر باشد.
اسکالر (Scalar): مانند نام وندور دستگاه، در اصل خروجی فقط یک مقدار می تواند باشد که همان نام سازنده دستگاه است، پس OID های اسکالر فقط یک مقدار خروجی دارند.
جدولی (Tabular): مانند میزان مصرف CPU یک پردازشگر چهار هسته ای که وقتی مقدار این OID را بپرسیم ، چهار مقدار برگردانده می شود، یک مقدار برای هر هسته پردازشگر. طبق تعریف، OID های جدولی مقدار چند شاخص مرتبط به هم را که در گروه قرار دارند با ایندکس های متفاوت بر می گردانند)
هر OID در ساختار MIB به صورت سلسله مراتبی سازمان دهی می شود، در اصل MIB ها ساختار درختی و سلسله مراتبی دارند. OID ها به صورت اعداد صحیح که با نقطه از هم جدا شده اند نمایش داده می شوند. برای مثال OID مربوط به “SysDescr” برابر است با 1.3.6.1.2.1.1.1
دستورات پایه پروتکل SNMP کدامند؟
سادگی تبادل اطلاعات در پروتکل SNMP موجب شده که این پروتکل به طور وسیعی مورد استفاده قرار گیرد. در ادامه با دستورات اصلی SNMP آشنا خواهید شد:
• Get: دستور Get یک درخواست اطلاعات است که توسط Manager به Managed Device ارسال می شود تا یک یا چند مقدار را از آن دریافت کند.
• Get Next: این دستور شبیه دستور Get است، تفاوت اصلی این دو دستور در این است که Get Next مقدار OID بعدی در درختواره MIB را فراخوانی می کند.
• Get Bulk: از GetBulk برای دریافت حجم زیادی از داده از جداول بزرگ MIB استفاده می شود.
• Set: به کمک این دستور یک Manager می تواند مقدایر برخی از تنظیمات Managed Device را تغییر دهد.
• TRAPS: بر خلاف دستورات فوق که توسط NMS به دستگاه هدف ارسال می شود، تِرَپ ها توسط دستگاه ها در زمان رخداد رویداد های مشخص شده به NMS ارسال می شوند.
• INFORM: این دستور شبیه TRAP توسط Agent به NMS ارسال می شود، علاوه بر این Manager ها از این دستور برای تایید دریافت اطلاعات استفاده می کنند.
• RESPONSE: برای باز گرداندن مقادیر یا سیگنال هایی که توسط Manager هدایت شده اند استفاده می شود.
کاربرد SNMP TRAP چیست؟
به کمک SNMP TRAP، دستگاه ها می توانند در مواقعی که رویداد مهمی رخ می دهد، یک پیغام به Manager ارسال کنند و آن را از رخداد آگاه سازند. در یک پیغام TRAP مقدار sysUpTime به همراه OID نمایانگر نوع رخداد و همچنین مقادیر مربوطه در صورت وجود ارسال می شود.
مقصد ارسال TRAP با توجه به تنظیمات صورت گرفته مشخص می شود و فرمت این پیغام ها در SNMPv2 تغییر کرده اند و به SNMPv2-Trap تغییر نام داده شده است.
آشنایی با روش تبادل اطلاعات پروتکل SNMP
همانطور که اشاره شد، پروتکل SNMP زیر مجموعه پروتکل TCP/IP است، و پیغام ها و دستورات SNMP از طریق بسته های User Datagram Protocol (UDP) در شبکه منتقل می شوند. به صورت پیش فرض شماره پورت SNMP برابر با 161 است و دستورات TRAP/INFORM از پورت 162 استفاده می کنند.برای درک بهتر موضوع به دیاگرام زیر توجه کنید:
GET⁄ GET NEXT⁄ GET BULK⁄ SET
TRAP
INFORM
آشنایی با انواع نسخه های پروتکل SNMP
از زمان آغاز SNMP، این پروتکل تغییرات وسیعی کرده و به طور پیوسته ارتقاء پیدا کرده است. هر چند همچنان نسخه های SNMPv1 و SNMPv2 بیشترین پیاده سازی را دارند. پشتیبانی از نسخه سوم یا به عبارتی SNMPv3 چند وقتی است به طور جدی شروع شده ولی علی رغم امنیت بسیار بالاتر، هنوز نتوانسته سهم زیادی به دست آورد.
SNMPv1
این اولین نسخه SNMP است که در RFC های شماره 1155 و 1157 تعریف شده است.
SNMPv2
این نسخه تجدید نظر شده SNMPv1 است که بهینه سازی های فراوانی روی آن صورت گرفته، از نوع پکت ها، روش تبادل و حتی ساختار MIB این نسخه بسیار بهینه تر شده است.
SNMPv3
این نسخه ایمن ترین و آخرین نسخه SNMP است. جدا از اینکه در هر نسخه از SNMP ارتقاء عملکرد صورت گرفته است، اما همیشه تاکید زیادی بر لزوم توجه به امنیت این پروتکل بوده است و لذا در این نسخه روش تصدیق هویت و رمزنگاری اطلاعات پیاده سازی شده است.
در جدول زیر به طور خلاصه تفاوت امنیت نسخه ای مختلف را مشاهده می کنید:
SNMP v1 | Community–based security |
SNMP v2c | Community–based security |
SNMP v2u | User–based security |
SNMP v2 | Party–based security |
SNMP v3 | User–based security |
پارامتر Community String چیست؟
در نسخه های 1 و 2 پروتکل SNMP از Community String برای بررسی مجوز دسترسی به مقادیر SNMP استفاده می شود. در واقع این Community String اینجا شبیه نام کاربری و رمز عبور عمل می کند. نرم افزار های مانیتورینگ مانند نرم افزار بینا، در هر دستور SNMP باید مقدار Community String را به دستگاه هدف ارسال کنند و دستگاه هدف تنها در صورتی که مقدار ارسال شده صحیح باشد به آن پاسخ می دهد.
بسیاری از دستگاه هایی که از SNMP پشتیبانی می کنند به صورت پیش فرض مقدار public را برای Community String خود در نظر می گیرند و این وظیفه مدیر شبکه است که این مقدار را روی همه تجهیزات تغییر دهد.
باید توجه داشته باشید که در نسخه SNMPv3 دیگر Community String وجود ندارد و در این نسخه تصدیق هویت به وسیله نام کاربری و رمز عبور انجام می شود.
از کدام نسخه SNMP استفاده کنیم؟
پاسخ به این سوال بستگی به محیط شبکه شما دارد، اینجا به چند اصل کلی اشاره می کنیم:
- اگر شبکه شما از طریق اینترنت قابل دسترسی است، شاید باید به SNMPv3 توجه کنید، چون از نظر امنیت بسیار بهتر است، اما باید این را هم در نظر بگیرید که رمز نگاری و ارتقاء امنیت روی این نسخه تا حدودی موجب افزایش بار کاری دستگاه ها و در نتیجه پایین آمدن سرعت (Performance) می شود.
- اگر شبکه شما به خوبی توسط فایروال ها محفوظ شده است، استفاده از نسخه های SNMPv1 و SNMPv2 ممکن است کافی باشد.
- از نقطه نظر مانیتورینگ شبکه، مثلا برای مانیتورینگ دستگاه ها با نرم افزار بینا ما پیشنهاد می کنیم از پروتکل SNMPv2 استفاده کنید که زمان اسکن پایین تری دارد و از شمارنده های 64-bit پشتیبانی می کند.