نقش دروازه خروج یا همان gateway، از کلیدیترین نقاط در طراحیها شبکه است. دروازههای خروجی یا gatewayها، ارتباط دهنده VLANها، زونهای مختلف، دسترسیهای اینترنت و … هستند. برای بهبود بیشتر عملکرد هر شبکهای، نقاط حساسی مانند gateway که عدم دسترسی به آنها باعث از کار افتادن قسمت بزرگی از شبکه میشود، بایستی برایشان افزونگی یا redundancy ایجاد نمود. برای ایجاد و راهاندازی افزونگی یا HA، باید بتوان به روشی از عدم دسترسی به gateway را گرفت. یکی از روشهای دستیابی به HA پروتکل HSRP است و در این بحث میخواهیم به معرفی و پیادهسازی پروتکل HSRP بپردازیم.
برای ایجاد افزونگی دسترسی به gaeway میتوان از سه روش زیر استفاده نمود:
- Host Standby Router Protocol یا HSRP
- Virtual Router Redundancy Protocol یا VRRP
- Gateway Load Balancing Protocol یا GLBP
این متدها همچین FHRP یا first hop redundancy protocols نیز نامیده میشوند.
مفاهیم HSRP
این پروتکل مختص سیسکو بوده و برای ایجاد HA در شبکه ارائه شده است. این پروتکل از طریق ایجاد redundancy در First_Hop و نمایش یک gateway ip address به ازای چندین روتر یا سوئیچ لایه 3 به کاربران استفاده میشود. برای بررسی جزئیات کامل این پروتکل، میتوان به RFC 2281 مراجعه کرد.
اساساً HSRP ترافیک IP را بدون هیچگونه وابستگی به در دسترس بودن هر یک از روترها، مسیریابی مینماید. هنگامی که HSRP راهاندازی میشود، مانند این است که تمام دستگاههایی که نقش gateway را دارند، در قالب یک دستگاه مجازی به کاربران نمایش داده میشود. این دستگاه مجازی دارای IP جدا از آدرسهای دستگاههای واقعی است که MAC مخصوص به خود را دارد.
از بین تمام دستگاههایی در HSRP راهاندازی شده هستند، یکی به عنوان active و بقیه standby هستند. تا زمانی که مشکل برای دستگاه active وجود نداشته باشد، این دستگاه به تمام درخواستهای ارسال شده برای IP مجازی پاسخ میدهد. برای اطلاع از وضعیت همدیگر، بین دستگاهها پیغامی به نام HSRP Hello ارسال میشود، تا بتوانند از وجود دستگاه active اطمینان داشته باشند.
پروتکل HSRP پیغام hello را به آدرس multicast: 224.0.0.2 با استفاده از پورت UDP 1985 ارسال میکند. هر دستگاهی که این پروتکل در آن فعال شود، به این سوکت گوش میکند.
عددHSRP group میتواند بین 0 تا 255 باشد. اما بیشتر سوئیچها تا شانزده VLAN را پشتیبانی میکنند.
نکته: HSRP group 1 در VLAN 10 با HSRP group 1 در VLAN 11 متفاوت و مجزا است.
انتخاب در HSRP
انتخاب در HSRP براساس عدد اولویت دستگاهها است. این عدد به صورت پیش فرض 100 میباشد و میتواند بین 0 تا 255 قرار بگیرد. اگر تمام اولویت ها یکسان باشد دستکاه با بالاترین IP به عنوان دستگاه active انتخاب میشود.
برای تنظیم اولویت از دستور زیر استفاده میشود.
-if)#standby group-number priority priority-number
به عنوان مثال، در دستور standby 1 priority 110، عدد 1 گروهی است که HSRP در آن گروه اجرا شده و عدد 110 اولویت جدید interface است.
زمانی که HSRP بروی interface ایی راهاندازی میشود، پورت دستگاه پس از گذراندن مراحلی، وضعیتش به active تبدیل میشود.
وضعیتهای مختلف پورتها داخل HSRP به شرح زیر است:
- Disabled
- Init
- Listen
- Speak
- Standby
- Active
دستگاهی که وضعیت standby دارند پیغامهای hello ارسالی از طریق دستگاه active را بررسی میکند. اگر پس از 3 فاصله زمانی ارسال hello، پیغامی از دستگاه primary دریافت نشود، دستگاه standby خود را primary معرفی میکند و وضعیت پورت خود را به حالت active میبرد.
فرمت کامل دستور تغییر زمانها در HSRP به صورت زیر است.
config-if)#standby group-number timers [msec] hello [msec] holdtime
Hello time میتواند بین 1 تا 254 و holde time زمانی بین 15 تا 999 باشد. این زمانها میتواند براساس sec و یا milisec تنظیم شوند. Holde time بایستی حداقل 3 برابر hello time تنظیم شود.
در نظر داشته باشید که کم کردن زمان hello بار زیادی بروی سوئیچ می گذارد.
در صورتیکه بخواهیم بدون استفاده از HSRP برای بالا بردن availability همانند تصویر زیر، از دو gateway استفاده کنیم در سیستم کاربران استفاده کنیم
بروی هر سیستم فقط میتوان یک default gateway تعریف نمود. البته، قابلیت تعریف چندین default gateway بروی سیستم وجود دارد، اما بایستی یکی از چندین gateway را در بین همه، به وسیله روشهایی مانند metric انتخاب نمود. با این وجود هم، در صورت قطع شدن gateway اول، سیستمی که چندین gateway برایش تعریف شده، متوجه این قطعی نمیشود تا بتواند آنرا تغییر دهد. تا زمانی که ارتباط فیزیکی interface سیستم برقرار باشد سیستم ارتباط را برقرار می داند. به همین علت، میخواهیم از روش HSRP برای بالا بردن availability استفاده کنیم. در روش HSRP نیازی به انجام تنظیمات اضافه بروی سیستم کاربر وجود ندارد.
برای راهاندازی HSRP بایستی یک IP مجازی به نام VIP تعریف شود. در این سناریو این IP را 10.2.1.1 تعریف میکنیم.
و IP مجازی را به عنوان gateway سیستم کاربر تعریف میکنیم. این IP مربوط به هیچ کدام از سوئیچها تعلق ندارد. به وسیله راهاندازی HSRP، بروی دو سوئیچی که عملیات مسیریابی را انجام میدهند، مشخص میکنیم که بایستی به درخواستهای ارسالی برای IP مجازی در HSRP نیز براساس اولویت تعیین شده پاسخ دهند.
انجام تنظیمات HSRP
دستور راهاندازی HSRP بروی اینترفیس، standby است. بروی interface ایی که بایستی پاسخگو باشد دستور standby را وارد میکنیم.
سپس باید شماره ایی را برای گروه بندی مشخص نماییم.
پس از مشخص نمودن شماره گروه بایستی VIP را تنظیم نماییم که این ویژگی با دستور IP انجام میشود. عینا این تنظیمات بروی interface سوئیچ دوم، که بایستی پاسخگو باشد تنظیم میشود.
پس از انجام این تنظیمات دو سوئیچ شروع به مذاکره میکنند تا سوئیچ active و سوئیچ standby مشخص شود. برای دیدن این وضعیت از دستور show standby brief استفاده میشود.
ستون اول، interface ایی که بروی آن متد اجرا شده را نمایش میدهد، در ستون بعدی شماره گروهی که HSRP بروی interface در آن اجرا شده است، ستون Pri، اولویت که پیش فرض 100 است، ستون State وضعیت interface در سوئیچ را مشخص میکند. در ستونهای Active و Standby آدرسهای interfaceهای مربوط و در ستون آخر نیز VIP نمایش داده میشود.
اگر سوئیچ active قطع شود حداکثر تا 10 ثانیه زمان سپری میشود تا سوئیچ standby جایگزین سوئیچ active شود.
HSRP PREEMPTION
به طور معمول، اگر دستگاه active، fail شود و standby جای آنرا بگیرد، زمانی که دستگاه active قبلی به شبکه بازگردد، نمیتواند مجدداً active شود. تا زمانی که دستگاه active فعلی fail نشود، دستگاهی نمیتواند این جایگاه را از آن خود کند، حتی اگر اولویت بالاتری نسبت به دستگاه active حال حاضر داشته باشد.
میتوان تنظیمات را به گونهای انجام داد تا دستگاهی که اولویت بالاتری دارد، به محض ورود به شبکه، جایگاه active را بدست آورد. این ویژگی preemption نام دارد. نحوه نوشتن و نمونه دستور preemption به صورت زیر است:
-if)#standby group-number preempt [delay [minimum second] [reload second]
در طراحی، اگر برایمان تفاوتی نمیکند که چه سوئیچی active شود این گزینه را فعال نمیکنیم. اما، اگر بخواهیم سوئیچ و یا سوئیچهایی با اولویت بالاتر به سوئیچ active تبدیل شوند، دستور preempt را بروی آنها فعال میکنیم.
اگر سوئیچی را جایگزین سوئیچ active ای که fail شده کردهایم، اما به دلایلی (مثل تکمیل نشدن تنظیمات سوئیچ) نمیخواهیم در همان لحظه سوئیچ جایگزین شده به حالت active برود، میتوان به فرآیند preemption تاخیر بدهیم. این کار با دستور preemption delay انجام میشود. توسط این دستور مشخص میکنیم، پس از مدت زمان مشخص شده در دستور، سوئیچ جایگاه active را در اختیار میگیرد.
اگر اجازه داده شود، که هر سوئیچی (مخصوصا سوئیچهای مجازی که برای attack راهاندازی می شوند) بتواند با سوئیچ های دیگر در شبکه مذاکره کند، این گونه سوئیچها میتوانند خود را به عنوان سوئیچ برتر معرفی کرده و تمام ترافیک شبکه را به سمت خود منتقل کند. در سادهترین انواع attack، ترافیک به مقصد نا معلوم منتقل شده تمامی ارتباطات تا زمان پیدا کردن مشکل قطع خواهند شد.
برای جلوگیری از این اتفاقات، بایستی احرازهویت را بین سوئیچها در مذاکرات HSRP فعال کنیم.
فعال سازی احراز هویت در HSRP
به وسیله دستور زیر و با استفاده از الگوریتم md5 به دو روش key-chain (چند کلید در دسته کلید) و یا key-string (یک کلید) احراز هویت را انجام داد.
در صورتیکه سوئیچی بخواهد خود را به عنوان یکی از اعضای گروه HSRP معرفی کند اما کلمه عبور را نداشته باشد با پیغام خطای زیر مواجه میشود.
روش دیگر احراز هویت بر اساس key-chain است. در این روش یک دسته کلید (key-chain) مانند TEST ایجاد میکنیم و داخل آن key-string ها را قرار میدهیم.
مهم نیست اسم دسته کلید در سوئیچها متفاوت باشد، مهم کلیدهای داخل دسته کلید هستند که بایستی یکسان باشند.
دسته کلید را بایستی در محیط global ایجاد نمود. کلیدها بایستی شماره داشته باشند و به تعداد 2.147.483.647 معادل 2^31 عدد کلید میتوان ایجاد نمود.
برای ساخت این کلید ها مانند زیر عمل میکنیم
و پس از اعمال تنظیمات میتوان با استفاده از دستور show running-configuration کلیدهای ساخته شده را بررسی نمود.
آدرس دهی لایه2 پیشفرض VIP
اگر برای VIP آدرس MAC مجازی تنظیم نشود، آدرس دهی به صورت 0000-0C07-AC01 (0000.0c07.acxx) انجام میشود. در صورتیکه سوئیچ جدید این آدرس مجازی را داشته باشد به محض active شدن MAC خود را به سوئیچ اصلی اعلام میکند. چون از گروه 1 استفاده کردهایم، دو عدد انتهایی 01 است (اگر گروه 10 را استفاده می کردیم دو هگز آخر معادل 0A می شد).
به ازای هر VLAN بایستی یک HSRP اجرا شود. برای انجام این کار بهتر است که HSRP بین interface vlan ها ایجاد شود.