محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

Port Rule چیست؟ آموزش تعریف Port Rule در NLB Clustering

همانطور که قبلا هم اشاره کردیم Port Rule ها مهمترین قسمت و طبیعتا مهمترین تظیمات را در بین تنظیمات مربوط به NLB دارد. این Port Rule ها هستند که تعیین کنننده نوع ترافیک و همچنین چگونگی انجام شدن Load Balancing در بین NLB Cluster هستند. هر Port Rule برای خودش یک ترافیک ورودی یا Incoming Traffic تعریف شده به همراه محدوده ای از پورت های UDP و TCP یا آدرس IP به عنوام مقصد دارد.

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

قبلا هم گفته ایم یکی از نکات مهم در خصوص Port Rule ها این است که شما هیچوقت نمی توانید دو عدد Port Rule با یک نوع Incoming Traffic یا ترافیک ورودی ایجاد کنید بنابراین شما هیچوقت میان Port Rule های خود مشکلات تداخل ، اولویت بندی و یا ترتیب را نخواهید داشت. فقط و فقط یک Rule می توانید به یک Packet ورودی به NLB Cluster عمل کند و همانطور که در شکل زیر مشاهده می کنید مایکروسافت در NLB Cluster خود یک Rule پیشفرض دارد که به شکل زیر است :

Port Rule در تنظیمات NLB Clustering

همانطور که در تصویر بالا مشاهده می کنید این Port Rule پیشفرض تقریبا همه ترافیک های TCP//IP که از تمامی پورت های TCP و UDP بین 0 تا 65535 وجود دارند را در بر می گیرد. توجه کنید که در محیط های وافعی شما معمولا به این قسمت از ماجرا اصلا دست نمی زنید و پیشهاد مایکروسافت هم هست که همیشه این Port Rule پیشفرض را داشته باشید ، به قول یکی از دوستان ITPRO ای هر جا دیدید مایکروسافت چیزی را Recommend کرده انجام دهید و هر جا دیدید سیسکو چیزی را Recommend کرده هیچوقت انجام ندهید ، در اینجا هم شما لازم نیست تغییری بدهید اما به عنوان یک کارشناس ITPRO باید بدانید که این Port Rule ها چه هستند و چگونه پیکربندی می شوند. بعد از کلیک کردن بر روی دکمه Add به تصویر زیر مواجه خواهید شد :

Port Rule در تنظیمات NLB Clustering

همیشه باید تصور کنید که Port Rule پیشفرض وجود ندارد و شما بایستی همه تنظیمات را بصورت دستی خودتان انجام دهید. بنابراین شما باید با تمامی مواردی که در تصویر بالا مشاهده می کنید به خوبی آشنایی پیدا کنید تا در ایجاد کردن Port Rule ها مشکلی نداشته باشید و بتوانید آن را دلخواه سازی کنید. با انتخاب کردن دکنه Add یا Edit شما با مواردی که در تصویر بالا مشاهده می کنید مواجه خواهید شد که در پایین توضیحاتی در خصوص آنها ارائه کرده ایم :

  • Cluster IP Address : همانطور که قبلا هم اشاره کردیم یک Cluster ممکن است چندین Cluster IP Address داشته باشد و یا اینکه شما چندین Cluster در یک مجموعه داشته باشید. با استفاده از این قسمت شما می توانید یک Port Rule بنویسید که ترافیک ورودی را صرفا برای یک آدرس Cluster خاص ارسال کند و هدایت ترافیک را به سمت این آدرس IP انجام دهد. بصورت پیشفرض یک Port Rule جدید تمامی آدرس های IP موجود در Cluster ها را شامل می شود.
  • Port Range and Protocols : شما می توانید در این قسمت ترافیک ورودی بر اساس شماره پورت های تعریف شدن و یا نوع ترافیک از نظر UDP یا TCP یا هر دوی آنها را تعریف کنید و با توجه به این شرایط ترافیک ورودی به Cluster خود را به آدرس مقصد هدایت کنید. به این نکته توجه کنید که شما نمی توانید دو عدد Port Rule مشابه داشته باشید که محدوده پورت های آن با همدیگر یکسان باشند در چنین حالتی Overlap پیش می آید که NLB Clustering به شما اجازه ایجاد کردن این Rule جدید را نخواهد داد.
  • Filtering Mode : این قسمت در واقع به شما می گوید که درخواست ها چگونه در بین Host های موجود در مجموعه تقسیم می شوند. شما می توانید از بین گزینه های Multiple Host ، Single Host و Disable this port range انتخاب کنید. حالت Multiple Host بصورت پیشفرض انتخاب شده است ، با استفاده از قابلیت Multiple Host شما می توانید هم قابلیت Load Balancing و هم قابلیت Fault Tolerance را برای درخواست های ورودی که با Port Rule شما تناسب دارند ایجاد کنید. درخواست های کلاینت هایی که با Port Rule شما تناسب دارند بین Node های فعال NLB Cluster شما در یک Farm توزیع می شوند. زمانیکه شما گزینه Multiple Host Filtering را انتخاب می کنید ، شما باید یک نوع Affinity را نیز انتخاب کنید ، در واقع Affinity روش برخورد Host با درخواستی است که از طرف کلاینت در هنگام برقراری Session انجام می شود ، به زبان ساده تر Affinity به معنی چه کسی مسئول است ؟ می باشد. در این قسمت شما سه گزینه به نامهای Single ، Network و None را دارید که در ادامه در خصوص تک تک آنها صحبت خواهیم کرد :
  1. None : در این حالت ترافیک هر کلاینت ورودی به NLB Cluster شما به سمت هر سرور یا هر Node ای که Load کمتری روی آن هست هدایت می شود. ادامه ترافیکی که از طرف همین کلاینت به سمت NLB Cluster ارسال شود نیز مجددا همین برخورد انجام می شود ، یعنی Node ای که Load کمتری روی آن است به درخواست پاسخ می دهد. در چنین حالتی هر سرور یا Node ای که کمترین Load را در NLB Cluster داشته باشد به درخواست کاربران پاسخ می دهد ، اما توجه کنید که در خواست یک کلاینت ممکن است بار اول توسط ITPRO-NLB1 و بار دوم توسط ITPRO-NLB2 پاسخ داده شود.
  2. Single : با استفاده از این تنظیمات زمانیکه یک کلاینت به نام ITPRO-Client1 در اولین ارتباط خود با NLB Cluster درخواستی به یک Node در کلاستر ما به نام ITPRO-NLB1 ارسال می کند ، کلاینت ما در آینده نیز اگر درخواستی داشته باشد همیشه برای این سرور یا Node مشخص در NLB Cluster درخواست را ارسال خواهد کرد. همینطور اگر یک کلاینت دیگر به نام ITPRO-Client2 درخواست جدیدی به NLB Cluster ارسال کند و Node ای به نام ITPRO-NLB2 پاسخ آن را بدهید در آینده نیز تمامی درخواست های این کلاینت توسط همین سرور انجام خواهد شد و به همین ترتیب ادامه ماجرا طی می شود. مزیت این روش در این است که داده های وضعیت ارتباطی هر کلاینت که در یک Session ارتباطی وجود دارد در Local Node یا همان Node ای که به درخواست کاربر پاسخ داده است ذخیره می شود. این پیشفرض قرارگرفتن حالت Affinity است.
  3. Network : با استفاده از این پیکربندی NLB Cluster ما بر اساس یک Subnet تعریف شده به درخواست ها پاسخ می دهد ، برای مثال اگر کلاینتی با آدرس IP به شماره 172.16.1.150 درخواست خود را به یکی از Host های موجود در NLB Cluster ارسال کنید ، اگر کلاینت دیگری به آدرس 172.16.1.151 نیز درخواست جدیدی به این NLB Cluster ارسال کند همان Node ای پاسخگو خواهد بود که برای ادرس IP قبلی نی مورد استفاده قرار گرفته است ، در چنین شرایطی به دلیل اینکه NetID این دو عدد آدرس IP یکسان است فقط یکی از سرورهای موجود در NLB به درخواست های همه پاسخ می دهد.

توجه کنید که هر تصمیمی که شما در خصوص نحوه قرار دادن Affinity در این قسمت انجام دهید مستلزم این است که Application ای که شما در این NLB Cluster استفاده می کنید نیز قابلیت پشتیبانی از آن را داشته باشد. برای مثال برخی از Application ها هستند که از حالت Affinity که بصورت None باشد پشتیبانی می کنند و اما برخی از آنها نمی توانند با این حالت کار کنند. حالت فیلترینگ Single Host تمامی ترافیک ورودی به یک NLB Cluster را به سمت Host ای که دارای بالاترین اولویت یا Priority باشد هدایت می کند و اگر این Host از بین برود یا در دسترس نباشد ترافیک به Host بعدی که دارای بالاترین اولویت می باشد هدایت می شود.

اگر به خاط داشته باشید این دقیقا همان کاری است که پیشفرض در NLB Cluster انجام می شود. بنابراین چرا باید بتوانیم یک Port Rule جدید ایجاد کنیم ؟ مزیت اصلی پیکربندی Port Rule ها در حالت Single Host در این است که با استفاده از Port Rule شما می توانید بعدا یک اولویت بندی دلخواه برای سرورها و البته برای یک نوع خاص ترافیک از طریق Handling Priority در Network Load Balancing Manager تعریف کنید.

تنظیمات مربوط به Timeout باعث می شود که در صورت بروز تغییرات در پیکربندی NLB Cluster ساختار Affinity ما به میزان دقایقی که در Timeout تعریف شده است تغییر نکند. برای مثال اگر NLB Cluster شما برای سرویس دهی به یک وب سایت در نظر گرفته شده است و این وب سایت یک وب سایت خرید و فروش آنلاین باشد ، کاربر ابتدا اطلاعات کارت اعتباری خود را در این وب سایت وارد می کند ، در صورتیکه بار دیگر کاربر وارد همین وب سایت شود متوجه می شود که ارتباط قبلی آن از بین رفته است و اطلاعات کارت خرید خود را بایستی مجددا وارد کنید ، با استفاده از Timeout شما می توانید کاری کنید که اطلاعات این کاربر که مثلا تعداد درخواست های خرید وی بوده است در طی مدت زمانی که برای Timeout در نظر گرفته شده است در وب سایت و در Host اصلی باقی بماند و connection جدیدی ایجاد نشود.

اگر تنظیمات مربوط به Timeout نبودند با ورود مجدد درخواست کاربر به NLB Cluster یک سرور یا Host جدید درخواست وی را پاسخ می داد و اطلاعات قبلی کاربر از بین می رفت. گزینه Disable Port Range به شما این اجازه را می دهد که به NLB Cluster خود بگویید که ترافیک های خاصی را بر اساس Port Rule های تعریف شده Drop یا مسدود کند و به آنها پاسخ ندهد. توجه کنید که برخی از تنظیمات مانند Load Weight و Handling Priority تنها زمانی به شما نمایش داده می شوند که شما گزینه Edit یا New را در Host های موجود در NLB Cluster وارد کرده باشید ، به تصویر زیر نگاه کنید :

Port Rule در تنظیمات NLB Clustering

زمانیکه شما یک Port Rule را Edit می کنید ، همانطور که در تصویر بالا مشاهده می کنید ، می توانید دو گزینه جدید به نامهای Load Weight و Handling Priority را نیز تعریف کنید ، در ادامه در خصوص این دو مورد توضیحاتی را ارائه خواهیم کرد :

  • Load Weight : شما می توانید با استفاده از این گزینه به Host ای که در حال ویرایش تنظیمات Port Rule آن هستید بگویید که چه میزان از حجم کاری یا Workload این NLB Cluster با توجه به Port Rule موجود را سرویس دهی کند. بصورت پیشفرض گزینه Equal یا برابر برای همه Host های موجود در Cluster تعریف شده است و این بدین معناست که Workload شبکه در بین تمامی Host های موجود در NLB Cluster بصورت یکسان توزیع می شوند. توجه کنید که اگر شما گزینه Equal را غیرفعال کنید به صورت دستی می توانید به Cluster بگویید که این Host چه میزان از ترافیک را سرویس دهی کند ، شما می توانید عددی بین 0 تا 100 در این قسمت وارد کنید و فرض کنید که این عدد درصد ترافیکی است که این Host می تواند در شبکه سرویس دهی کند. به این نکته توجه کنید که تنظیمات این قسمت فقط زمانی کاربردی است که شما گزینه Multiple Host را انتخاب کرده باشید در غیر اینصورت این گزینه برای شما کاری انجام نخواهد داد. بصورت پیشفرض همگی Host ها ترافیک را بصورت یکسان سرویس دهی می کنند.
  • Handling Priority : این گزینه صرفا زمانی قابل پیکربندی است که شما Single Host را انتخاب کرده باشید در غیر اینصورت غیرفعال خواهد بود. در حالت Single Host سروری که دارای بالاترین اولویت یا Priority باشد همیشه ترافیک شبکه را بر اساس Port Rule تعریف شده دریافت می کند. مزایای استفاده از این قسمت این است که شما می توانید ترافیک مربوط به یک Port Rule خاص را در حالت Single برای سرورهایی با اولویت های متفاوت تعریف کنید. برای مثال شما می توانید برای این Host تعریف کنید که در صورتیکه ترافیک HTTP دریافت شد اولویت اجرا شدن این ترافیک بر اساس Port Rule تعریف شده برای ITPRO-NLB1 باشد.

در انتها فقط به این نکته اشاره می کنیم که زمانیکه صحبت از Host Priority می شود در واقع ما تعیین می کنیم که کدام سرور در NLB Cluster ترافیکی را که در Port Rule ها تعریف نشده است را مدیریت و دریافت کند. اما زمانیکه صحبت از Handling Priority می شود شما در خصوص ترافیکی صحبت می کنید که در Port Rule ها تعریف شده است و می خواهید ترافیک موجود در یک Port Rule با اولویتی که شما تعیین می کنید بر روی Host مورد نظر شما اجرا شود. امیدوارم مورد توجه شما قرار گرفته باشد ، اگر مقاله را کپی می کنید حق تالیف نویسنده و وب سایت انجمن تخصصی فناوری اطلاعات ایران را فراموش نکنید. ITPRO باشید


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات