بررسی Profiles و iRules و iApps در F5 BIG-IP

در این پست به بررسی اهمیت و کاربردهای پروفایلها، iRules و iApps در F5 BIG-IP پرداخته می شود. همچین سعی شده برای تمام بخش ها توضیحات مفید به همراه ویدیو قرار داده شود.
انواع پروفایلها در F5 BIG-IP
پروفایل TCP: پروفایل TCP یکی از پروفایلهای اساسی در F5 BIG-IP است که برای بهینهسازی ارتباطات TCP بین کلاینت و سرور استفاده میشود. این پروفایل از ویژگیهایی مانند بهبود ترافیک، کنترل اتصالات و جلوگیری از افت اتصالات TCP استفاده میکند.

پروفایل HTTP: پروفایل HTTP برای بهبود عملکرد وبسرورها و بهینهسازی ترافیک HTTP بهکار میرود. این پروفایل شامل ویژگیهایی نظیر لایهبندی SSL، کشسازی، فشردهسازی و توزیع بار میشود تا تجربه کاربران بهبود یابد و بار سرورها بهطور متوازن توزیع شود.

پروفایل SSL: با توجه به اهمیت امنیت در ارتباطات اینترنتی، پروفایل SSL برای مدیریت گواهینامهها و رمزنگاری اطلاعات بهکار میرود. این پروفایل از TLS و SSL برای ایجاد ارتباط امن بین کلاینت و سرور استفاده میکند و اطمینان میحاصل کند که ارتباطات بهطور صحیح و ایمن انجام شوند.
پروفایل iRules: یک ابزار قدرتمند در F5 BIG-IP است که به مدیران سیستم امکان میدهد قوانین مخصوص خود را برای مدیریت ترافیک و ایجاد ارتباطات دلخواه تعریف کنند. این پروفایل امکانات قابل تنظیمی فراهم میکند تا به مدیران اجازه دهد بر اساس نیازهای خاص خود، بخشی از ترافیک را به سمت سرورها هدایت کنند.
چگونگی استفاده از پروفایلها
در F5 BIG-IP، پروفایلها بهعنوان تنظیمات قابل تنظیم برای اجزای مختلف یک ویژوال سرور تعریف میشوند. این پروفایلها به ویژه در زمینههای TCP، HTTP، SSL، و iRules تنظیمات مختلفی را فراهم میکنند. هنگامی که یک پروفایل به یک ویژوال سرور متصل میشود، تنظیمات مربوط به آن پروفایل به ترافیک عبوری از ویژوال سرور اعمال میشود.
ساختار سلسلهمراتبی پروفایلها
در F5 BIG-IP، ساختار پیچیدهای برای پروفایلها وجود دارد. هر پروفایل از یک پروفایل والد بهعنوان پروفایل اصلی شروع میشود. این پروفایل اصلی دارای تنظیمات عمومی است که تقریباً هر ویژوال سروری ممکن است نیاز داشته باشد. سپس، از این پروفایل اصلی، پروفایلهای فرعی تولید میشوند که مرتبط با نوع خاصی از سرویس یا پروتکل هستند.

پروفایلهای Persistence

پروفایلهای Persistence در F5 BIG-IP برای حفظ اتصال پایدار کلاینتها به یک عضو از گروه سرورها استفاده میشود. این امکان را فراهم میکند که یک کلاینت بهطور مداوم به همان سرور پشتیبان وصل شود، که برای مواردی مانند اطلاعات سبد خرید یا اطلاعات رزرو هتل بسیار مهم است. این پروفایلها از مکانیزمهایی نظیر مدیریت Cookie یا Persistence Table برای اطمینان از اتصال به همان سرور پشتیبان استفاده میکنند.
سه سناریو معمول SSL در F5 BIG-IP

در این بخش، به بررسی سه سناریو معمول استفاده از SSL در دستگاه F5 BIG-IP خواهیم پرداخت. این سناریوها عبارتند از “SSL Offload”، “SSL Bridging” و “SSL Pass-through”. هرکدام از این سناریوها ویژگیها و موارد استفاده خاص خود را دارند.
1. SSL Offload
- توضیح: در این حالت، اتصال SSL توسط F5 BIG-IP از سوی کلاینتها قطع شده و ترافیک به صورت متن ساده به سرورهای پشتیبان منتقل میشود.
- نیازمندیها: این سناریو نیازمند پروفایلهای SSL برای اجرای بهینه و امن میباشد.
2. SSL Bridging
- توضیح: در این حالت، اتصال SSL از سوی کلاینتها به F5 BIG-IP انجام میشود، سپس ترافیک به سرورهای پشتیبان Re-encrypt شده و اتصال SSL دوباره بین F5 و سرورهای پشتیبان برقرار میشود.
- نیازمندیها: نیازمند پروفایلهای SSL برای قطع و برقراری اتصالهای مجدد و همچنین برای امنیت در دو سمت مختلف میباشد.
3. SSL Pass-through
- توضیح: در این حالت، ترافیک رمزگشایی نمیشود و به صورت رمزگشایی شده به سرورهای پشتیبان منتقل میشود، بدون این که F5 توانایی بازبینی داشته باشد.
- نیازمندیها: این سناریو به هیچ پروفایل SSL خاصی نیاز ندارد.
SSL Virtual Server Overview

بارگزاری گواهینامه برای رمزگذاری ترافیک به سمت سرور مجازی در F5 BIG-IP
اکنون که شما سناریوی ایجاد یک سرور SSL برای وبسایت Globomantics در این دمو را میشناسید، ما قصد داریم یک گواهینامه ایجاد کنیم که توسط مرکز گواهی Globomantics امضا شده است. برای این کار، ابتدا به شما نشان میدهم چگونه یک CSR ایجاد کنید و سپس آن CSR را توسط مرکز گواهی Globomantics امضا کنیم، و در نهایت این گواهینامه را در F5 بارگزاری کنیم.
برای ایجاد گواهینامه در F5، به قسمت “system” بروید و سپس بر روی “certificate management” و “traffic” و “certificate management” کلیک کنید. در لیست گواهینامههای SSL، بر روی علامت + کلیک کرده و نام گواهینامه را مانند “global-web-HTTPS” قرار دهید. Issuer را از “self” به “certificate authority” تغییر دهید و برای Common Name، آن را به “global-web-HTTPS.Globomantics.com” تنظیم کنید.
در قسمت “subject alternative name” نیز “IP: 192.168.0.101” را وارد کنید تا کاربران بتوانند به این وبسایت بروند و گواهینامه برای آن معتبر باشد. حالا به پایین صفحه بروید و سایر تنظیمات را با پیشفرضها رها کرده و بر روی “finished” کلیک کنید.
سپس میتوانید این گواهینامه را دانلود کرده و یا متن CSR را که از آن استفاده خواهیم کرد را به دست آورید. برای ادامه، این متن CSR را کپی کنید و سپس به مرکز گواهی مربوطه بروید تا این CSR را امضا کرده و گواهینامه را دریافت کنید.
پس از دریافت گواهینامه، آن را در F5 بارگزاری کنید. برای این کار، به صفحه “certificate management” در F5 بروید و گواهینامهها را مشاهده کنید. از اینجا میتوانید گواهینامه و کلید را انتخاب کرده و آنها را وارد کنید.
در نهایت، این گواهینامه را میتوانید به عنوان بخشی از پروفایل SSL در سرور مجازی جدید خود در F5 استفاده کنید. این کار به شما این امکان را میدهد که ترافیک خود را به صورت ایمن از سمت کاربران به سمت سرورهای پشتیبان ارسال کنید و از امضای معتبر مرکز گواهینامه محلی بهرهمند شوید.
مقدمهای به iApps در F5 BIG-IP
در این بخش، با مفهوم iApps و iApps LX در دستگاه F5 BIG-IP آشنا خواهیم شد. این تکنولوژیها، فرآیند پیکربندی سرورهای مجازی را بهطور قابل توجهی سادهتر میکنند.
iApps و اصول مقدماتی
در قسمت قبل، با دشواریهای پیکربندی یک پروفایل SSL صحیح آشنا شدیم. حالا میخواهیم نشان دهیم چگونه iApps (Application Services) این فرآیند را بسیار سادهتر و کاراتر میکنند.
IApps به ما این امکان را میدهد که سرورهای مجازی را بهسرعت ایجاد کنیم و همچنین از بهترین رویکردهای F5 برای ارائه هر برنامه خاص استفاده کنیم. این سادگی از طریق پرسشهایی که از شما میپرسد بهدست میآید و سپس این پاسخها با الگوهای مختلف ترکیب میشوند.

دو نسل iApps
دو نسل اصلی از iApps وجود دارد: نسل اول به نام iApps و نسل بعدی با عنوان iApps LX. بیشتر الگوهای سنتی iApps در حال حاضر depreciated شدهاند. با این حال این مورد را هم توضیح خواهیم داد.
نصب پلاگینها
برای استفاده از نسل جدید iApps LX، نیاز به نصب دو پلاگین داریم. این پلاگینها به نام “App Services 3 Extension” یا به اختصار AS3 و “App Services Template” یا به اختصار FAST هستند. AS3 به شما این امکان را میدهد که بهوسیله API به F5 دسترسی داشته باشید و FAST به شما این امکان را میدهد که از الگوهای IFLX استفاده کنید.
راهاندازی iApps در F5 BIG-IP
در اینجا میخواهم بهصورت سریع به شما نشان دهم چگونه از iApps سنتی (IOPS) استفاده کنید، در صورتی که هنوز به آن نیاز دارید. این مرحله به شما یک دید کلی از نحوه عملکرد iApps میدهد، سپس بهصورت عمیقتر وارد جزئیات میشویم و هر دو AS3 و F5 Application Services Templates را نصب خواهیم کرد.
ایجاد یک iApp سنتی
برای ایجاد یک iApp جدید، ابتدا به بخش “Applications” در منوی اصلی رفته و سپس “Create” را انتخاب میکنیم. برای مثال، یک iApp جدید با نام “test” ایجاد خواهیم کرد.
از آنجا که iApps سنتی دیگر پشتیبانی نمیشوند، باید بر روی “Show Deprecated Templates” کلیک کنیم. سپس در بخش “Template”، Microsoft IIS را انتخاب میکنیم.
تنظیمات شبکه و SSL
در مراحل بعدی، تصمیمهای مهمی را انجام خواهیم داد. به عنوان مثال، در بخش شبکه، تصمیم میگیریم که آیا از آخرین تنظیمات TCP استفاده کنیم یا خیر.
سپس در بخش “SSL Encryption”، تصمیمگیری میکنیم که چگونه ترافیک SSL را مدیریت کنیم. به عنوان مثال، آیا میخواهیم SSL را ترمینیت و سپس مجدداً رمزنگاری کنیم یا هر یک از گزینههای دیگر را انتخاب کنیم. در ادامه، تنظیمات پیشرفته مانند پروفایل SSL سرور و سوالات مربوط به ایجاد پول و نودها را انجام میدهیم.
راهاندازی iApps LX یا AS3 در F5 BIG-IP
برای نصب AS3، ابتدا یک مرورگر را باز میکنم و به آدرس GitHub.com/F5Networks میرویم. این امکان را به ما میدهد تا برنامه AS3 را دانلود کرده و سپس در F5 وارد کنیم. برای این کار، بر روی “F5 App Services Extension” کلیک کرده و در بخش “Releases”، بر روی آخرین نسخه کلیک کرده و سپس در بخش “Assets”، بر روی فایلی با پسوند “.noarch.rpm” کلیک میکنیم.
حالا که فایل را دانلود کردیم، به F5 باز میگردیم. در بخش “Package Management LX” و “App”، بر روی “Import” کلیک میکنیم و فایل دانلود شده را انتخاب و آپلود میکنیم.
حالا نیاز به دانلود برنامه F5 Application Services Templates (Fast) داریم. برای این کار، به GitHub باز میگردیم و در بخش جستجو عبارت “F5 App” را تایپ میکنیم. سپس وارد بخش “App Services Templates” میشویم و در بخش “Releases”، بر روی آخرین نسخه کلیک کرده بر روی فایل “.noarch.rpm” کلیک میکنیم تا آن را دانلود کنیم.
همچنین، توجه داشته باشید که در محیط واقعی، بهتر است اطمینان حاصل کنید که هش SHA-256 فایل دانلودی با هش SHA-256 ارائه شده توسط F5 مطابقت دارد.
حالا به F5 باز میگردیم و مراحل قبلی را برای وارد کردن فایل Fast تکرار میکنیم.
حالا که هر دو برنامه بهدرستی وارد شدهاند، بهصورت گام به گام نحوه ایجاد یک سرور مجازی جدید با استفاده از F5 Application Services Templates (Fast) را با هم انجام می دهیم
ایجاد سرور مجازی جدید با استفاده از FAST در F5 BIG-IP
حالا میخواهیم از این ابزار برای یک سرور مجازی مایکروسافت IIS یک SSL ایجاد کنیم، سایت دموی ما Globomantics می باشد. در قسمت “iApps”، به بخش “application services” بروید و سپس “application ” را انتخاب کنید.
از اینجا به قالبهای خدمات برنامه F5 بروید. متاسفانه یک اشکال معروفی وجود دارد که F5 از آن آگاه است و مربوط به مشکل ارتباط ثابت بین F5 و ماژول S3 است که متاسفانه هنوز تصحیح نشده است. اما راه حل آن این است که صفحه را بازنشانی کنید.
در اینجا قالب های آماده ای وجود دارد، برای مثال میخواهید یک برنامه HTTP یا برنامه DNS یا حتی یک برنامه LDAP ایجاد کنید. تعدادی از برنامههای مایکروسافت مختلف نیز وجود دارند و ما از قالب برنامه Microsoft IIS استفاده خواهیم کرد.
آشنایی با iRules در F5 BIG-IP
در طول این پست، من چند بار به iRules اشاره کردم. حالا فکر میکنم وقت آن رسیده که بهتر آنها را درک کنید.
iRules به سادگی اظهار و اجرای شرایط if-then هستند که به شما این امکان را میدهند تا نحوه برخورد F5 با ترافیک را سفارشیسازی کنید.

iRules اسکریپتهایی هستند که به ترافیک و دادههای داخل ترافیک نگاه میکنند تا تصمیمهایی بگیرند. این تصمیمها میتوانند به سادگی از انتقال ترافیک به یک سرور مجازی دیگر مانند سرور مجازی HTTPS یا HTTP، یا حتی تغییر پول (Pool) استاندارد، گرفته تا ارسال ترافیک به منابع مختلف در نودها پشتیبانی می کند.
به عنوان مثال، iRule میتواند ترافیک را به زیرصفحات خاص یک برنامه وب هدایت کند یا به یک دایرکتوری خاص در یک سرور FTP. در برنامههای دیگر، ممکن است iRule تصمیم بگیرد که آیا کاربر احراز هویت داده است یا خیر، و در صورت عدم احراز هویت، کاربر را به یک راهحل ورود یکپارچه (SSO) هدایت کند تا قبل از دسترسی به برنامه احراز هویت شود.
همچنین، iRules میتوانند برای کارهای پیچیدهتری نیز استفاده شوند؛ به عنوان مثال، تغییر بار ترافیک یا هدایت ترافیک به یک سیستم ترتیب دهندهای سوم که حتی توسط F5 نیز مدیریت نمیشود.
حدود iRules تقریباً ناپایان هستند؛ تا زمانی که دادهای وجود داشته باشد که میتواند یک رویداد را فعال کند، ممکن است از iRules برای تعیین ترافیک به هر شکل دلخواهی استفاده کرد.
اجزای iRule:
برخی از اجزا و ساختارهای مهم یک iRule عبارتند از:
- رویداد (Event): هر iRule نیاز به یک رویداد خاص دارد که رخ میدهد و iRule فعال میشود. این رویداد میتواند از انواع مختلفی مثل درخواست HTTP یا پاسخ DNS باشد.
- عبارات شرطی (Conditional Statements): این عبارات مقدارهای خاصی را در دادههای رویداد چک میکنند و بر اساس مقدارها تصمیمهایی اتخاذ میکنند.
- اپراتورهای مقایسه (Comparison Operators): این اپراتورها مقدار یک داده را با یک مقدار مقایسه میکنند. برای مثال، بررسی میکنند که آیا یک مقدار برابر با یک مقدار خاص است یا کمتر یا بیشتر از آن.
- اپراتورهای منطقی (Logical Operators): این اپراتورها به شما امکان میدهند تا عبارات شرطی را ترکیب و ترتیب دهید.
- دستورات (Commands): این دستورات نشان میدهند که اگر عبارات شرطی درست باشند، چه اقداماتی انجام شود. به عنوان مثال، ارسال ترافیک به یک استخر خاص یا یک میمبر مشخص از آن.
- ساختارهای کنترل (Control Structures): این ساختارها مانند if و else به شما این امکان را میدهند که شرایط مختلف را اجرا و کنترل کنید.
با این توضیحات ابتدایی، شما میتوانید از F5 Cloud Docs برای یادگیری بیشتر در مورد iRules استفاده کنید. این مستندات شامل منابع مختلفی از جمله دورههای مقدماتی، متوسط و پیشرفته در مورد iRules میشود. همچنین، اگر دنبال iRules ارسالشده توسط اعضای جامعه F5 هستید، میتوانید به وبسایت community.f5.com مراجعه کرده و جستجوی iRules را انجام دهید.
در زیر یک نمونه کد آن را برای شما قرار دادیم:
when HTTP_REQUEST { set accept_language [HTTP::header "Accept-Language"] if {[string match "*en*" $accept_language]} { # اگر زبان مرورگر انگلیسی است، به استخر انگلیسی هدایت کن pool english_pool } elseif {[string match "*fr*" $accept_language]} { # اگر زبان مرورگر فرانسوی است، به استخر فرانسوی هدایت کن pool french_pool } else { # در غیر این صورت، به استخر پیشفرض هدایت کن pool default_pool } }
when HTTP_REQUEST { ... }
: این بلوک کد زمانی اجرا میشود که یک درخواست HTTP ارسال میشود.set accept_language [HTTP::header "Accept-Language"]
: این خط کد مقدار هدر “Accept-Language” را دریافت میکند و در متغیرaccept_language
ذخیره میکند.if {[string match "*en*" $accept_language]} { ... }
: این شرط بررسی میکند که آیا زبان مرورگر انگلیسی است یا خیر. اگر این شرط درست باشد، ترافیک به استخر انگلیسی هدایت میشود.elseif {[string match "*fr*" $accept_language]} { ... }
: این شرط بررسی میکند که آیا زبان مرورگر فرانسوی است یا خیر. اگر این شرط درست باشد، ترافیک به استخر فرانسوی هدایت میشود.else { ... }
: اگر هیچ یک از شروط قبلی برقرار نشود، ترافیک به استخر پیشفرض هدایت میشود.
این نمونه iRule یک سناریو ساده را نشان میدهد که بر اساس زبان مرورگر، ترافیک را به یکی از استخرهای مجازی هدایت میکند. شما میتوانید این قالب را برای سناریوهای مختلف و به پیچیدگیهای بیشتر گسترش دهید.
راهاندازی iRules بر روی یک سرور مجازی در F5 BIG-IP
در پایین مراحل ایجاد iRules بر روی یک سرور مجازی در F5 BIG-IP توضیح داده شده است. این مراحل شامل ایجاد یک سرور مجازی جدید، ایجاد استخرهای آلمانی و لهستانی، ساخت iRule، اتصال iRule به سرور مجازی و بررسی نهایی میشوند.
مرحله ۱: ایجاد یک سرور مجازی جدید
- برای ایجاد سرور مجازی، روی گزینه “Create” کلیک کنید و سپس نام آن را به “global-web-language-optimized” تغییر دهید.
- برای آدرس IP مقصد، از “192.168.0.102” استفاده کنید.
- پورت سرویس را به 80 تنظیم کنید.
- یک پروفایل HTTP پیشفرض را به عنوان پروفایل اینترنت HTTP انتخاب کنید.
- سایر تنظیمات را به حالت پیشفرض بگذارید و روی “Finish” کلیک کنید.
مرحله ۲: ایجاد استخرهای آلمانی و لهستانی
- روی “Pools” کلیک کرده و گزینه “Create” را انتخاب کنید.
- یک استخر با نام “german” ایجاد کرده و یک عضو با نام “global-web01” و پورت 80 به آن اضافه کنید.
- استخر دیگر را با نام “polish” ایجاد کرده و یک عضو با نام “global-web02” و پورت 80 به آن اضافه کنید.
مرحله ۳: ایجاد iRule
- در بخش “iRules” به بخش “Create” بروید و یک iRule با نام “browser-language” ایجاد کنید. محتوای iRule را که در زیر آمده است، کپی کنید:
# iRule to Direct Traffic Based on Browser Language when HTTP_REQUEST { # Check the Accept-Language header to determine the browser language set accept_language [HTTP::header "Accept-Language"] # If the browser language contains "de" (German), direct traffic to the German pool if {[string match "*de*" $accept_language]} { pool German } # If the browser language contains "pl" (Polish), direct traffic to the Polish pool elseif {[string match "*pl*" $accept_language]} { pool Polish } # If the browser language is not German or Polish, direct traffic to the default pool else { pool Globo-Website-Pool member 10.100.1.13 80 } }
- پس از وارد کردن کد iRule، روی “Finish” کلیک کنید.
مرحله ۴: اتصال iRule به سرور مجازی
- وارد بخش “iRules” شده و iRule جدید را به سرور مجازی اضافه کنید.
- روی “Finish” کلیک کنید.
مرحله ۵: بررسی
- اطمینان حاصل کنید که iRule به سرور مجازی اتصال پیدا کرده است.
- از یک دستگاه تست، به آدرس “http://192.168.0.102” بروید و اطمینان حاصل کنید که ترافیک به استخرهای مجازی متناسب با زبان مرورگر هدایت میشود.
- با تغییر زبان مرورگر و تکرار تست، از صحت عملکرد iRule اطمینان حاصل کنید.