مهدی  مرادی لیلستانی
کارشناس ارشد شبکه مراکز داده

بررسی iRule در تجهیزات F5

iRule یک ویژگی قدرتمند و انعطاف پذیر در مدیریت ترافیک محلی BIG-IP است که می توانید برای مدیریت ترافیک شبکه خود از آن استفاده کنید ویژگی iRules با استفاده از زبان دستوری ابزارهای استاندارد صنعتی (Tcl)، نه تنها به شما امکان می‌دهد Poolها را بر اساس داده‌های هدر انتخاب کنید، بلکه به شما امکان می‌دهد با جستجو در هر نوع داده محتوایی که تعریف می‌کنید، ترافیک را هدایت کنید. بنابراین، ویژگی iRules به طور قابل توجهی توانایی شما را برای سفارشی کردن سوئیچینگ محتوای خود با توجه به نیازهای دقیق شما افزایش می دهد.

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

دستورات iRule

یک فرمان iRule در iRule باعث می‌شود که Local Traffic Manager اقداماتی مانند جستجو برای داده‌ها، دستکاری داده‌ها یا تعیین مقصد ترافیک انجام دهد. انواع دستوراتی که می توانید در iRules قرار دهید عبارتند از:

Statement commands

این دستورات باعث اعمالی مانند انتخاب مقصد ترافیک یا اختصاص آدرس ترجمه SNAT می شود. نمونه ای از دستور دستور است استخر <نام>، که ترافیک را به استخر متعادل کننده بار نامگذاری شده هدایت می کند.

دستوراتی که داده ها را پرس و جو یا دستکاری می کنند

برخی از دستورات داده‌های هدر و محتوا را جستجو می‌کنند، در حالی که برخی دیگر دستکاری داده‌ها مانند درج هدرها در درخواست‌های HTTP را انجام می‌دهند. نمونه ای از دستور  IP::remote_addr، که آدرس IP راه دور یک اتصال را جستجو و برمی گرداند. نمونه ای از دستور دستکاری داده ها استHTTP::header حذف <name>، که آخرین رخداد هدر نامگذاری شده را از یک درخواست یا پاسخ حذف می کند.


Utility commands

این دستورات توابعی هستند که برای تجزیه و دستکاری محتوا مفید هستند. نمونه ای از دستورات کاربردی استdecode_uri <رشته>، که رشته نامگذاری شده را با استفاده از کدگذاری HTTP URI رمزگشایی می کند و نتیجه را برمی گرداند.


Event declarations

iRules رویداد محور هستند، به این معنی که Local Traffic Manager یک iRule را بر اساس رویدادی که در iRule مشخص کرده‌اید راه‌اندازی می‌کند. اعلان رویداد مشخصه یک رویداد در iRule است که باعث می‌شود مدیر ترافیک محلی هر زمان که آن رویداد رخ دهد، آن iRule را راه‌اندازی کند. نمونه‌هایی از اعلان‌های رویداد که می‌توانند یک iRule را راه‌اندازی کنند عبارتند ازHTTP_REQUEST، که هر زمان که سیستم یک درخواست HTTP دریافت می کند یک iRule را راه اندازی می کند وCLIENT_ACCEPTED، که وقتی یک کلاینت اتصال برقرار می کند، iRule را راه اندازی می کند.

when HTTP_REQUEST { if { [HTTP::uri] contains "aol" } { pool aol_pool } else { pool all_pool } }

Operators

عملگر iRule دو عملوند را در یک عبارت مقایسه می کند.به عنوان مثال، می توانید از عملگر contain برای مقایسه یک عملوند متغیر با یک ثابت استفاده کنید. شما این کار را با ایجاد یک دستور if انجام می دهید که نشان دهنده موارد زیر است: "اگر URI HTTP حاوی aol است، به pool aol_pool ارسال کنید." 

ایجاد iRule

  1. در برگه اصلی، روی Local Traffic > iRules کلیک کنید .
  2. روی Create کلیک کنید .
  3. در قسمت Name ، نامی مانند my_iruleنام  iRule نمی تواند از 255 کاراکتر بیشتر باشد.
  4. در قسمت Definition ، سینتکس iRule را با استفاده از زبان دستوری ابزار (Tcl) تایپ کنید.
  5. روی Finished کلیک کنید .

برای نمونه کد زیر جهت دریافت لاگ های ترافیک ورودی به Vserverأ می باشد.

when CLIENT_ACCEPTED {  
   set vip [IP::local_addr]:[TCP::local_port]
}

when SERVER_CONNECTED {  
   set client "[IP::client_addr]:[TCP::client_port]"
   set node "[IP::server_addr]:[TCP::server_port]"
   set snat "[IP::local_addr]:[TCP::local_port]"

}  

when CLIENT_CLOSED {  
    log connection info
   log local0.info "Client $client -> VIP: $vip -> SNAT: $snat -> Node: $node"  
}

نظرات