سرورشبکهمیم تک 25نرم افزارنرم افزار کامپیوتر

پروتکل SNMP چیست و چه کاربردی دارد ؟

پروتکل SNMP چیست و چه کاربردی دارد ؟

مقدمه

در این مقاله قصد داریم مروری بر پروتکل SNMP یا Simple Network Management Protocol داشته باشیم.

در بسیاری از شبکه های کامپیوتری نرم افزار های مانیتورینگ وجود دارند.

با این نرم افزارها می توان به بررسی اطلاعات کامل و دقیق از تمامی بخش های شبکه پرداخت.

تمامی این نرم افزارها با استفاده از پروتکل های مختلفی مثل NetFlow، ICMP، ARP و از همه مهم تر SNMP اقدام به اسکن و بررسی شبکه می کنند.

نکته : لیست کلمات مربوط به هم برای درک بهتر این مقاله:

NMS = نرم افزار های مانیتورینگ = SNMP Server = کلاینت = SNMP Manager

دستگاه ها = Managed Device = SNMP Client = SNMP Agent = سرور = Agent

معرفی پروتکل SNMP

این پروتکل در لایه کاربرد از هفت لایه OSI قرار دارد.

معمولا SNMP روی پورت 161 پروتکل UDP پیاده سازی می شود.

به شکل ساده، روش کار این پروتکل به صورت سرور/کلاینت (یا request/response) است. یعنی کلاینت درخواست یک دیتا خاص را به سمت سرور ارسال کرده و سرور به درخواست جواب داده و دیتا مورد نظر را می‌فرستد.

بخش سرور (یا Managed Device) دستگاه های تحت شبکه می باشد که شامل مورد زیر است:

  • SNMP Agent : این بخش کار پاسخ به درخواست های SNMP تحت شبکه را می دهد.

نکته : Agent ها توانایی پاسخ به درخواست های NMS را دارند. همچنین Agent بخشی از دستگاه هایی مثل روتر، سوییچ، کامپیوترها و غیره است.

 

بخش کلاینت نرم افزار های مانیتورینگ (مثل Zabbix، PRTG، Solarwinds ) می باشند که شامل مورد زیر است:

  • NMS : یا Network Management System که درخواست های خود را به سمت SNMP Agent دستگاه های تحت شبکه ارسال می کنند.
مثال :

تصویر زیر جدول نمایش پردازنده های یک کلاینت SNMP در نرم افزار PRTG است.

یعنی ما قبلا این کلاینت را توسط اسکن پیدا کردیم و احراز هویت تحت SNMP را انجام دادیم که PRTG بتواند به SNMP Agent درخواست بفرستد.

احراز هویت توسط Community به عنوان یک نوع رمز عبور انجام می‌شود.

مقدار Community پیش فرض در دستگاه ها public می باشد. همچنین مقدار Community به شکل Plain Text است که از لحاظ امنیتی این یک مشکل است. احراز هویت در نسخه های مختلف این پروتکل متفاوت است. در مرحله بعد کار ما تمام شده و این PRTG است که درخواست های مختلف مورد نیاز ما را به سمت SNMP Agent ارسال کند و به ما نمایش دهد. به طور کلی، هر یک از تجهیزات شبکه یک نود از شبکه هستند که دارای یک SNMP Agent درون خود می باشند.

این تجهیزات به درخواست NMS ها (مثلا PRTG)  پاسخ می دهند.

نسخه های مختلف پروتکل SNMP :

این پروتکل دارای چند نسخه است.

SNMP ورژن 1 یا SNMPv1 چیست؟

امنیت این ورژن پروتکل SNMP بسیار پایین است.

هنگامی که ارسال جواب از سمت SNMP Agent به NMS در حال انتقال است، به راحتی میتوان جواب را تغییر داد تا NMS (مثلا PRTG) جواب تغییر یافته توسط ما را دریافت کند.

در واقع این نسخه فقط community-based است.

SNMP ورژن 2 یا SNMPv2 چیست؟

این ورژن پروتکل SNMP شامل سه نوع است که در مجموع امنیت بهتری از ورژن 1 دارد:

SNMPv2c : نسخه ای از ورژن 2 است که فقط community-based است.

SNMPv2u : نسخه ای از ورژن 2 است که فقط user-based است. یعنی می‌توانید جهت احراز هویت، نام کاربری تعریف کنید.

نکته : این ورژن مشکل امنیتی ورژن 1 را حل کرده است. در این ورژن می‌توانید به جای ارتباط Read-Write به Read-Only بهره ببرید تا دیتاها توانایی تغییر نداشته باشند.

SNMP ورژن 3 یا SNMPv3 چیست؟

این ورژن ایمن ترین کامل ترین همچنین پر دردسر ترین ورژن پروتکل SNMP است.

در SNMPv3 بسته ها کاملا Encrypt (رمزنگاری) می شوند. همچنین user-based است و NMS نیاز به رمزی برای احراز هویت دارد.

MIB چیست ؟

SNMP Agent شامل یک Database یا پایگاه است که به آن MIB یا Management Information Base  می گویند.

تمامی اطلاعاتی یک دستگاه می‌تواند از خود به سمت NMS ارسال کند، به شکل یک Tree در آن قرار دارد.

به هر یک از اطلاعاتی که در MIB قرار دارد OID یا Object identifier می گویند که شامل آدرس آن Tree می‌باشد. در نتیجه، تمامی اطلاعاتی که درون MIB وجود دارند، OID نام دارد.

برای دریافت اطلاعات یک OID باید آدرس آن را به سمت SNMP Agent توسط پروتکل SNMP ارسال کنید.

ساختار MIB :

جهت درک بهتر Tree و آدرس OID ها به تصویر زیر توجه کنید:

همانطور که می‌بینید، در اولین سطح ISO قرار داد که آدرس آن 1  می‌باشد. بعد از آن internet می‌باشد که آدرس آن 3.6.1  است.

در ادامه mgmt وجود دارد که  2 می‌باشد و آدرس درخواستی آن که باید از سطح اول نوشت توجه شود،  1.3.6.1.2 می‌شود. همین راه را تا آخرین سطح (منظور از آخرین سطح، بخش های دارای * قرمز  است.) که بروید و عدد هر سطح را به این  1.3.6.1.2 آدرس اضافه کنید، به آدرس OID می رسید.

این آدرس را می‌توانید از یک NMS به سمت یک Managed Device یا SNMP Agent یک دستگاه ارسال کنید تا جوابش را برای شما ارسال کند.

مثال :

می‌خواهیم عدد OID برای ifSpeed را پیدا کنیم. همانطور که گفته شد، اولین سطح ISO می‌باشد که آدرس آن 1  است و بعد سطح internet به آن می چسبد و عدد آدرس  1.3.6.1  می شود. این راه را تا آخر می رویم و به عدد آدرس 1.3.6.1.2.2.2.5  می رسیم.

در نهایت NMS باید درخواست را به عدد آدرس   1.3.6.1.2.2.2.5  ارسال کند.

نکته : MIB و اطلاعات آن هم درون SNMP Agent و هم در NMS قرار دارد.

انواع MIB ها در پروتکل SNMP :

MIB ها به دو دسته Public و Private تقسیم می‌شوند.

MIB های Public در تمام دستگاه ها قالب یکسانی دارند و پشتیبانی می‌شوند. (مثل MIB های RFC1759 که برای تمامی پرینتر ها است و یا RFC1213 که اطلاعات شبکه ی دستگاه را می‌دهد که درون تمامی دستگاه ها وجود دارد.)

MIB های Private توسط کمپانی یا شرکت سازنده دستگاه ها ارائه می شوند و فقط در دستگاه های آن ها وجود دارد. (مثل MIB ی CISCO-VTP-MIB که فقط درون دستگاه های سیسکو وجود دارد.)

نکته : وب سایت circitor.fr اطلاعات کامل و جامعی از MIB ها و نوع OID هایشان به شما می‌دهد.

انواع درخواست های پروتکل SNMP

از NMS به SNMP Agent با استفاده از درخواست ها و فرمان های زیر می توان مقادیر MIB ها را دریافت کرد.

Get : جهت دریافت دیتا یک OID خاص.

Get Next : جهت دریافت دیتا یک آدرس بعد از آخرین آدرس GET شده.

Set : برخی از OID ها در حالت Read-Write قرار دارند که از NMS میتوان مقدار آن OID را توسط این فرمان تغییر داد.

GetBulk : جهت دریافت دیتا از جدولی که تعداد زیادی OID دارد که هر OID شامل چندین خروجی است.

Trap : یک نوع Notification از وضعیت SNMP Agent برای NMS ها بدون Acknowledge. (در ادامه اطلاعات بیشتری وجود دارد.)

Inform : همان Trap می باشد با این تفاوت که دارای Acknowledge است و می‌توانید از ارسال بسته اطمینان حاصل کنید.

SNMP Trap چیست؟

یک سری دیتا مشخص شده می‌باشد که به صورت اعلان و به طور خودکار و بدون نیاز به ارسال درخواست، از SNMP Agent (یا همان Managed Device) برای NMS ارسال می‌شود.

برای فعال سازی این ابزار باید آدرس NMS را به دستگاه بدهید تا بداند که دیتای Trap برای کی ارسال شود.

نکته : برای فعال سازی Trap در دستگاه ها و Managed Device ها باید SNMP فعال باشد.

Trap وضعیت روشن یا خاموش بودن Interface ها، خاموش یا روشن شدن دستگاه ها، مشکلات و وضعیت در لحظه تجهیزات و دستگاه ها را  در لحظه به NMS ارسال می کند.

مطلب مرتبط :

پروتکل SNMP یکی از پیچیده ترین پروتکل های شبکه می‌باشد.

اگر بعد از خواندن این مقاله پاسخ سوالات خود را پیدا نکردید، کامنت بگذارید.

موفق باشید.

ارسال پاسخ

محمد رستمی
محمد رستمی هستم، دانشجوی رشته نرم افزار و فعال در حوزه آی تی. علاقه مند به "تمامی مباحث شبکه"، "امنیت"، "لینوکس"، "اندروید"، "مجازی سازی" و ...