كيفية ترحيل قواعد F5 iRules إلى مسار طيران Edgenexus flightPATH

هناك اعتقاد سائد على نطاق واسع بين زملائي في Edgenexus أنه على الرغم من أن موازنات تحميل F5 LTM قوية ومرنة للغاية، إلا أن الاعتماد على استخدام البرمجة النصية لـ iRules لأداء بعض الوظائف الأساسية يؤدي إلى تعقيدات غير ضرورية.

 

ما عليك سوى إجراء بحث عبر الإنترنت عن F5 iRules لاكتشاف الألم والقلق الذي يمر به العديد من محترفي تكنولوجيا المعلومات في عملية إنشاء قواعد iRules الوظيفية. في حين أنه من الصحيح أن توسيع وظائف “سياسات حركة المرور المحلية” في إصدارات برامج F5 الأخيرة قد أزال بعض الحاجة إلى إنشاء iRules لوظائف معالجة رؤوس بروتوكول نقل النص الفائق الشائعة، إلا أن هناك العديد من المستخدمين لا يزالون عالقين مع iRules القديمة في تكوين نظامهم.

لا يبدو أن نُهج حركة المرور المحلية تسمح بمعالجة بيانات HTML، على الرغم من أن نُهج الدفق تسمح بذلك، إلا أنها غير متقنة ويصعب التحكم فيها. تؤثر افتراضيًا على حركة المرور في أي من الاتجاهين بنفس الطريقة، على الرغم من أن هذا غير مرغوب فيه عادةً. هذا يعني العودة إلى iRules لأداء وظائف مثل استبدال النص الأساسي لعنوان URL http:// إلى https:// الذي قد يكون مطلوبًا بالتزامن مع إعادة توجيه http:// إلى https والتي يمكن تنفيذها باستخدام نُهج حركة المرور المحلية.

أدخل Edgenexus flightPath – إدارة حركة المرور أصبحت سهلة

في Edgenexus، نحن فخورون بشكل مبرر بقوة وبساطة تكوين وظيفة معالجة بروتوكول نقل النص الفائق (HTTP) من الطبقة 7 الخاصة بنا.

إذا كنت من مستخدمي F5 الحاليين، وتستخدم iRules لمعالجة HTTP أو HTML، يسعدنا أن تتاح لنا الفرصة لنقدم لك عرضًا توضيحيًا لموازن تحميل Edgenexus ALB-X ونوضح لك مدى سهولة تكوين مسار الطيران لتحقيق بعض الوظائف المعقدة نسبيًا. نود أن يتم اختبارنا لمساعدتك في ترجمة وظائف iRules الحالية الخاصة بك إلى قواعد مسار الطيران.

 

وكمثال على ذلك، قمنا بإعادة إنتاج مجموعة مختارة من قواعد F5 iRules أدناه مع لقطات شاشة تكوين قاعدة مسار الرحلة المكافئة ل Edgenexus.

توجيه خادم محتوى بروتوكول الإنترنت المصدر

فيما يلي مثال على كيفية استخدام قواعد F5 iRules لتوجيه المستخدمين من نطاق عناوين IP معين إلى تجمع خوادم واحد وتلك التي من نطاق آخر إلى تجمع خوادم آخر.

F5:

الاسم: IP_Choice
التعريف: عندما يكون HTTP_REQUEST { إذا كان { { [ [IP::addr [IP::client_addr] يساوي 24.24.15.100] ) أو ( [IP::addr [IP::client_addr] يساوي 10.1.1.2] ) } { تجمع تجمع2 } }


إيدجينيكسوس

كيفية ترحيل قواعد F5 iRules إلى مسار الطيران EdgeNEXUS flyPATH

 

انقر هنا للتكبير

 

  1. قم بإنشاء قاعدة مسار رحلة جديدة باسم IP_Choice_Pool_1 عبر واجهة المستخدم الرسومية للويب. أضف وصفًا موجزًا لتتمكن من تحديد الوظيفة التي تؤديها قاعدة مسار الرحلة.
  2. أضف حالة جديدة، مع تحديد عنوان IP المصدر من القائمة المنسدلة الشاملة. اختر “هل” من القائمة المنسدلة “Sense”. أحد الخيارات هو تحديد “بداية” من القائمة المنسدلة “تحقق” (كبديل يمكنك استخدام خيارات أخرى مثل RegEx لتوفير المزيد من المرونة لعنوان IP “القيمة”). أدخل نطاق IP البداية في مربع القيمة.
  3. إضافة إجراء جديد. من مربع الإجراء المنسدل اختر خيار استخدام الخادم (هناك أيضًا خيار استخدام خادم آمن إذا لزم الأمر). في المربع الهدف، أدخل عنوان IP ومنفذ الوجهة المطلوبة، وعادةً ما تكون هذه واجهة خدمة افتراضية أخرى للسماح بموازنة التحميل عبر مجموعة أخرى من الخوادم الحقيقية.

إعادة توجيه HTTP إلى HTTPS

في حين أن F5 لديها الآن بديل لاستخدام iRules لتنفيذ إعادة توجيه HTTP إلى HTTPs، إلا أن هناك العديد من الحالات التي لا يزال الناس يستخدمون فيها iRules لهذه الوظيفة. كما تسمح iRules أيضًا بمزيد من التخصيص لمعلمات إعادة التوجيه.

F5:

الاسم: إعادة توجيه HTTP_HTTPs
التعريف: عندما HTTP_REQUEST { HTTP::إعادة توجيه “https://[HTTP::host][HTTP::uri]” }


إيدجينيكسوس

 

انقر هنا للتكبير

 

  1. قم بإنشاء قاعدة مسار رحلة جديدة باسم إعادة توجيه HTTP إلى HTTPS عبر واجهة المستخدم الرسومية للويب. أضف وصفًا موجزًا لتتمكن من تحديد الوظيفة التي تؤديها قاعدة مسار الرحلة.
  2. بالنسبة لمعظم التطبيقات، يجب تنفيذ متطلبات إعادة توجيه HTTP إلى HTTPS على كل حركة المرور التي تصل إلى خدمة HTTP. في هذه الحالة لا يلزم إنشاء قاعدة شرط. هناك قدر كبير من المرونة لإنشاء قواعد شرط إذا كان يجب أن تؤثر قاعدة مسار الرحلة على حركة مرور معينة فقط.
  3. أضف إجراءً جديدًا باختيار إعادة التوجيه 302 من المربع المنسدل الإجراء (إعادة التوجيه 301 متاح أيضًا). ينشئ Edgenexus ALB-X تلقائيًا متغيرات لمعلمات رئيسية معينة لحركة المرور التي تتم معالجتها بواسطة ALB-X، وهذا يشمل المضيف والمسار وسلسلة الاستعلام. في المربع الهدف أدخل تفاصيل المكان الذي يجب إعادة توجيه الطلب إليه. في هذه الحالة اسبق الإدخال https:// واستخدم متغيرات $ المضيف $$$ المسار $$$ سلسلة الاستعلام $ لإدخال البيانات من طلب http الأصلي. كما ترى هناك مرونة هنا لتحديد وجهة مختلفة تمامًا إذا لزم الأمر.

إخفاء أرقام بطاقات الائتمان

فيما يلي مثال على تعقيدات iRules والطريقة التي تتعامل بها F5 مع معالجة نص HTML.

F5:

الاسم إخفاء رقم بطاقة الائتمان
التعريف: عند HTTP_REQUEST {

# منع الخادم من إرسال استجابة مضغوطة
# قم بإزالة عروض الضغط من العميل
HTTP::رأس الصفحة إزالة “قبول الترميز”

# لا تسمح بتجزئة بيانات الاستجابة
إذا كان { [HTTP::version] يساوي “1.1” } {

# فرض خفض مستوى الاتصال إلى HTTP 1.0، ولكن مع الاستمرار في السماح بالاتصالات المستمرة.
# بما أن HTTP 1.1 هو HTTP 1.1 هو HTTP 1.1 هو HTTP 1.1 هو HTTP Keep-alive افتراضيًا، و 1.0 ليس كذلك,
# نحتاج إلى التأكد من أن الرؤوس تعكس حالة البقاء على قيد الحياة.

# تحقق مما إذا كان هذا اتصالاً حياً أم لا
إذا { [HTTP::header is_keepalive] } {

# استبدل قيمة رأس الاتصال ب “Keep-Alive”
HTTP::header استبدل “اتصال” “Keep-Alive” ب “Keep-Alive”
}

# تعيين إصدار الطلب من جانب الخادم إلى 1.0
# هذا يجبر الخادم على الاستجابة دون تقطيع
HTTP::الإصدار “1.0”
}
}
عند HTTP_RESPONSE {

# تحقق فقط من الردود التي تكون من نوع محتوى نصي (نص/متل، نص/xml، نص/xml، نص/بلاين، إلخ).
إذا { { [HTTP::header “Content-Type”] يبدأ ب “نص/” } {

# احصل على طول المحتوى حتى نتمكن من جمع البيانات (ليتم معالجتها في حدث HTTP_RESPONSE_DATA)
# الحد من التجميع إلى 1 ميغابايت (1048576 ناقصًا القليل للتوفير) – انظر SOL6578 للحصول على التفاصيل
إذا { [HTTP::header exists “Content-Length”] } {
إذا { [HTTP::header “Content-Length”] > 1048000 }{
# طول المحتوى أكثر من 1 ميغابايت، لذا اجمع 1 ميغابايت
تعيين طول_المحتوى 1048000
} وإلا {
# طول المحتوى أقل من 1 ميغابايت، لذا اجمع الطول الفعلي
تعيين طول_المحتوى [HTTP::header “Content-Length”]
}
} وإلا {
# لا تحتوي الاستجابة على رأس طول المحتوى، لذا استخدم العنوان الافتراضي 1 ميغابايت
تعيين طول_المحتوى 1048000
}
# عدم تجميع المحتوى إذا كانت قيمة رأس “طول المحتوى” 0
إذا كان { { $content_length_length > 0 } {
HTTP::تجميع $content_length
}
}
}
عند HTTP_RESPONSE_DATA {
# ابحث عن جميع أرقام بطاقات الائتمان الممكنة في مسار واحد
تعيين مؤشرات_بطاقة_المؤشرات [regexp – الكل -في السطر -indices\
{(?:3[4|7]\d{2})(?:[ ,-]?(?:\d{5}(?:\d{1})?)){2}|(?:4\d{3})(?:[ ,-]?(?:\d{4})){3}|(?:5[1-5]\d{2})(?:[ ,-]?(?:\d{4})){3}|(?:6011)(?:[ ,-]?(?:\d{4})){3}}\
[HTTP::payload]]

قبل كل بطاقة_idx $ بطاقة_مؤشرات {
تعيين البطاقة_بداية [lindex $card_idx 0]
تعيين نهاية_البطاقة [lindex $card_idx 1]
ضبط البطاقة_len [expr {$ بطاقة_len – $ بطاقة_start + 1}]
تعيين #رقم_البطاقة [نطاق السلسلة [HTTP::payload] $ بطاقة_بداية $ بطاقة_نهاية $ بطاقة]
# قم بإزالة الشرطة أو المسافة إذا كانت موجودة وعدّ التكرارات في القواطع المتغيرة.
تعيين القواطع [regsub -all {[-]} $ البطاقة_رقم “” البطاقة_رقم]
# Adjsut card_len المتغير ولكن احتفظ به لاستخدامه لاحقًا.
تعيين new_card_len_len [expr {$$card_len – $cutouts}]

مجموعة مضاعفة [expr {$new_card_len_len & 1}]
تعيين chksum 0
تعيين isCard غير صالح

# احسب MOD10
بالنسبة ل { Set i 0 } { { $ i < $ new_card_len } { INSTR i } {
المجموعة ج [string index $card_number $i]
إذا كانت {($i & 1) = = = $ مزدوج} {
إذا كان {[incr c $c] >= 10} {إنكر ج -9}
}
incr chksum $ ج
}

# تحديد نوع البطاقة # تحديد نوع البطاقة
التبديل [string index $card_number 0] {
3 { { تعيين نوع أمريكان إكسبريس }
4 { 4 { ضبط نوع تأشيرة النوع 4 {}
5 { تعيين نوع بطاقة ماستركارد }
6 {تعيين نوع اكتشف النوع 6 {اكتشف النوع 6}
افتراضي { تعيين نوع غير معروف }
}

# إذا كان رقم البطاقة صالحًا، فقم بإخفاء الأرقام بحرف X
إذا كان { ($ chksum % 10) = = 0 = 0 } {
تعيين isCard صالح
HTTP::payload استبدل $ بطاقة_بداية $ بطاقة_لين [string repeat “X” $card_len]
}

# نتائج السجل
سجل محلي0. “تم العثور على $ $ ISCARD $ النوع CC# $ $ البطاقة_number”
}
}

 

إيدجينيكسوس

انقر هنا للتكبير

 

  1. إنشاء قاعدة مسار رحلة جديدة وتقديم وصف ذي معنى
  2. هذا مثال آخر قد لا تكون فيه مطابقة الشروط مطلوبة لأنك عادةً ما ترغب في حماية أي استجابات للخادم. الخيار موجود بالطبع إذا لزم الأمر.
  3. أضف “إجراءً” جديدًا واختر “استبدال النص المستهدف” من خيار القائمة المنسدلة. يتم استخدام التعبيرات العادية لتتمكن من مطابقة النص الهدف المراد استبداله بهذا الإجراء. استخدم \b(?:\d[ \t-?]?){12}\b كهدف لاكتشاف واستبدال أول 12 رقمًا من أرقام بطاقات الائتمان. في حقل البيانات أدخل xxxx-xxx-xxxx-xxxxxx كنص بديل. سيؤدي ذلك إلى ترك آخر 4 أرقام المعتادة سليمة كمعرف.
  4. كرر العملية المذكورة أعلاه لأنواع البيانات الحساسة الأخرى مثل أرقام التأمين الوطني باستخدام \b(?: \\d[ \t-?]?){7}\b مستبدلاً بـ xxx-xxxx و \b(?: \d[ \t-?]?){6}\b مستبدلاً بـ xxx.xxx
  5. من خلال الاستخدام الحكيم للتعبيرات العادية، يمكن مطابقة مجموعة واسعة من تسلسلات الأحرف وإخفائها ببساطة باستخدام إجراء استبدال الهيئة. استبدال الجسم أولاً واستبدال الجسم آخراً هما خياران آخران للإجراء يمكن استخدامهما عند الحاجة إلى استبدال المثيل الأول أو الأخير فقط من تسلسل الأحرف في الصفحة.

إزالة رؤوس X- الرؤوس X المحتملة المخلة بالأمان

غالبًا ما يُشار إلى أنه من الممارسات الجيدة تجنب تقديم معلومات غير ضرورية عن البنية التحتية للخادم المستخدم في تسليم التطبيق، وذلك عن طريق إزالة بعض رؤوس HTTP التي يتم إدراجها افتراضيًا بواسطة التطبيق أو تقنية الخادم. كلما زادت معرفة المخترقين بالنظام الذي يتطلعون لاستغلاله كلما كان الأمر أسهل. وغالباً ما يكون هناك فاصل زمني بين نشر ثغرات النظام وإصلاحها. وخلال هذه الفترة تكون الأنظمة أكثر عرضة للتهديد وحيث تكون عملية التعتيم على تفاصيل منصة تقديم التطبيقات أكثر فائدة.

يتم تضمين العديد من المعلومات غير الضرورية في الرؤوس X-Headers. تقوم iRule التالية بإجراء إزالة شاملة للعناوين X-Header والتي قد لا تكون مرغوبة.

F5:

الاسم: إزالة رأس خادم HTTP X-خادم HTTP
التعريف: عند HTTP_RESPONSE {

# إزالة جميع مثيلات رأس الخادم
HTTP::إزالة رأس الخادم

# إزالة جميع الرؤوس التي تبدأ ب x-
لكل عنوان_اسم_رأس_اسم [HTTP::header names] {

إذا كان {[string match -nocase x-* $header_name]}{{

HTTP::header إزالة اسم_اسم_رأس_رأس_المؤشر $
}
}
}


إيدجينيكسوس

انقر هنا للتكبير

 

  1. إنشاء قاعدة مسار رحلة جديدة باسم ذي معنى، على سبيل المثال إزالة رؤوس HTTP
  2. هذا مثال على قاعدة مسار الرحلة حيث من غير المحتمل أن تكون هناك حاجة إلى مطابقة الشروط. تتوفر مجموعة شاملة من معايير الاختيار إذا لزم الأمر.
  3. أضف إجراءً جديداً “إزالة رأس الاستجابة”، في الحقل الهدف أدخل قيمة الرأس المراد إزالته. أضف إدخال إجراء إزالة رأس الاستجابة لتعريف كل حقل من حقول الرؤوس التي تحتاج إلى إخفائها من استجابات الخادم. يمكن أن يكون للإجراء الشامل لإزالة جميع الرؤوس المخصصة المسبوقة بـ X تأثير ضار في الواقع، لذا يتطلب منك برنامج flightPATH تحديد الرؤوس المحددة التي تحتاج إلى إزالتها.
  4. قم بتطبيق مسار الرحلة الذي تم إنشاؤه على كل خدمة من الخدمات التي تتطلب الإجراء.


تطبيق قواعد مسار الرحلة على الخدمات الافتراضية

يعد مسار الرحلة أداة معالجة HTTP قوية للغاية، ولكنها سهلة الاستخدام. يمكنك إنشاء “مكتبة” من قواعد مسار الرحلة لتنفيذ إجراءات مختلفة على حركة مرور HTTP أثناء عبورها لجهاز موازن التحميل ALB-X. يمكن تطبيق قواعد مسار الرحلة المتعددة على خدمة افتراضية. تتم معالجة قواعد مسار الرحلة بالترتيب الذي يتم تطبيقها به على الخدمة. تقوم بعض قواعد مسار الرحلة بإنهاء المعالجة. يمكنك استخدام السحب والإفلات لإعادة ترتيب الترتيب لضمان تنفيذ جميع الإجراءات على النحو المطلوب. هناك تسجيل شامل لمسار الرحلة وتتبع شامل متاح يسمح بتصحيح أخطاء عملية مسار الرحلة. يمكن أن تقدم EdgeNEXUS خدمات احترافية للمساعدة في ترجمة وإنشاء قواعد مسار الرحلة الأكثر تعقيدًا.

هل تريد معرفة المزيد؟

لمزيد من المعلومات حول التلاعب بحركة المرور في Edgenexus انقر هنا.

لتنزيل نسخة تجريبية مجانية من ALB-X انقر هنا.

نحن نقدر فرصة عرض وظيفة Edgenexus ALB-X ووظيفة مسار الطيران. اطلب عرضًا توضيحيًا تقنيًا شخصيًا وسريعًا هنا.

About Donna Toomey

Recent Articles

لماذا يلتزم بعض مستخدمي مايكروسوفت Exchange Server بالاعتماد على المكاتب المحلية؟ وكيف تساعد موازنة التحميل؟

يحتفل Microsoft Exchange Server بعيد ميلاده الخامس والعشرين، وعلى الرغم من أن القليل من المشغلين…