تشخيص مشكلة عامل تصفية حركة مرور شبكة اتصال الجهاز الظاهري

في هذه المقالة، تتعلم كيفية تشخيص مشكلة عامل تصفية حركة مرور شبكة الاتصال عن طريق عرض قواعد الأمان لمجموعة أمان الشبكة (NSG) التي تكون فعالة للجهاز الظاهري (VM).

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

السيناريو

حاولت الاتصال بالجهاز الظاهري عبر المنفذ 80 من الإنترنت، ولكن فشل الاتصال. لتحديد سبب عدم إمكانية الوصول إلى المنفذ 80 من الإنترنت، يمكنك عرض قواعد الأمان الفعالة لواجهة شبكة اتصال باستخدام مدخل Azure أو PowerShell أو Azure CLI.

تفترض الخطوات التالية أن لديك جهازًا ظاهريًا حاليًا لعرض قواعد الأمان الفعالة له. إذا لم يكن لديك جهاز ظاهري موجود، قم أولاً بتوزيع جهاز ظاهري يعمل بنظام Linux أو Windows لإكمال المهام الواردة في هذه المقالة. الأمثلة في هذه المقالة مخصصة لجهاز ظاهري يسمى myVM باستخدام واجهة الشبكة المسماة myVMVMNic. يوجد الجهاز الظاهري وواجهة الشبكة في مجموعة الموارد المسماة myResourceGroup، وفي منطقة شرق الولايات المتحدة. قم بتغيير القيم في الخطوات، حسب الاقتضاء، للجهاز الظاهري الذي تقوم بتشخيص المشكلة من أجله.

التشخيص باستخدام مدخل Microsoft Azure

  1. سجل الدخول في مدخل Azure باستخدام حساب Azure يحتوي على الأذونات اللازمة.

  2. في أعلى مدخل Azure، أدخل اسم الجهاز الظاهري في مربع البحث. عندما يظهر اسم الجهاز الظاهري في نتائج البحث، حدده.

  3. ضمن إعدادات، حدد شبكة الاتصال، كما هو موضح في الصورة التالية:

    تُظهر لقطة الشاشة مدخل Microsoft Azure مع إعدادات الشبكة لـ V M V M Nic.

    القواعد التي تراها مدرجة في الصورة السابقة هي واجهة شبكة الاتصال المسماة myVMVMNic. ترى أن هناك قواعد المنفذ الواردة لواجهة شبكة الاتصال من مجموعتين مختلفتين لأمان الشبكة:

    • mySubnetNSG: المقترنة بالشبكة الفرعية التي توجد فيها واجهة الشبكة.
    • myVMNSG: المقترنة بواجهة الشبكة في الجهاز الظاهري المسمى myVMVMNic.

    القاعدة المسماة DenyAllInBound هي ما يمنع الاتصال الداخلي بالجهاز الظاهري عبر المنفذ 80، من الإنترنت، كما هو موضح في السيناريو. تسرد القاعدة 0.0.0.0/0 لـ المصدر، والتي تشمل الإنترنت. لا توجد قاعدة أخرى ذات أولوية أعلى (رقم أقل) تسمح بالمنفذ 80 الوارد. للسماح بالمنفذ 80 الوارد إلى الجهاز الظاهري من الإنترنت، راجع حل مشكلة. لمعرفة المزيد حول قواعد الأمان وكيفية تطبيق Azure لها، راجع مجموعات أمان الشبكة.

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

  4. تأكد من أن الجهاز الظاهري في حالة التشغيل، ثم حدد قواعد الأمان الفعالة، كما هو موضح في الصورة السابقة، لرؤية قواعد الأمان الفعالة، الموضحة في الصورة التالية:

    تُظهر لقطة الشاشة جزء قواعد الأمان الفعالة مع تحديد تنزيل وتحديد قاعدة AllowAzureLoadBalancerInbound Inbound.

    القواعد المذكورة هي نفسها كما رأيت في الخطوة 3، على الرغم من وجود علامات تبويب مختلفة لمجموعة أمان الشبكة المقترنة بواجهة الشبكة والشبكة الفرعية. كما ترى في الصورة، يتم عرض أول 50 قاعدة فقط. لتنزيل ملف ‎.csv يحتوي على كافة القواعد، حدد تنزيل.

    لمعرفة البادئات التي تمثلها كل علامة خدمة، حدد قاعدة، مثل القاعدة المسماة AllowAzureLoadBalancerInbound. تظهر الصورة التالية البادئات لعلامة خدمة AzureLoadBalancer:

    لقطة شاشة تعرض بادئات العنوان لـ AllowAzureLoadBalancerInbound التي تم إدخالها.

    على الرغم من أن علامة خدمة AzureLoadBalancer تمثل بادئة واحدة فقط، فإن علامات الخدمة الأخرى تمثل عدة بادئات.

  5. أظهرت الخطوات السابقة قواعد الأمان لواجهة شبكة تسمى myVMVMNic، ولكنك رأيت أيضًا واجهة شبكة تسمى myVMVMNic2 في بعض الصور السابقة. يحتوي الجهاز الظاهري في هذا المثال على واجهتي شبكة متصلتين به. يمكن أن تكون قواعد الأمان الفعالة مختلفة لكل واجهة شبكة اتصال.

    لمشاهدة قواعد واجهة شبكة myVMVMNic2، حددها. كما هو موضح في الصورة التالية، واجهة الشبكة لديها نفس القواعد المقترنة بالشبكة الفرعية كواجهة شبكة الاتصال myVMVMNic، لأن كلتا واجهتي الشبكة في نفس الشبكة الفرعية. عند إقران مجموعة أمان الشبكة إلى شبكة فرعية، يتم تطبيق القواعد الخاصة به على كافة واجهات شبكة الاتصال في الشبكة الفرعية.

    تُظهر لقطة الشاشة مدخل Microsoft Azure مع إعدادات الشبكة لـ V M V M Nic 2.

    على عكس واجهة شبكة الاتصال myVMVMNic، فإن واجهة شبكة الاتصال myVMVMNic2 ليس لديها مجموعة أمان شبكة الاتصال المقترنة بها. يمكن أن تحتوي كل واجهة شبكة وشبكة فرعية على مجموعة أمان شبكة مرتبطة بها أو لا تحتوي على أي منها على الإطلاق. يمكن أن تكون مجموعة أمان الشبكة المقترنة بكل واجهة شبكة اتصال أو شبكة فرعية هي نفسها أو مختلفة. يمكنك إقران نفس مجموعة أمان الشبكة بالعديد من واجهات الشبكة والشبكات الفرعية كما تختار.

على الرغم من أن قواعد الأمان الفعالة تم عرضها من خلال الجهاز الظاهري، يمكنك أيضًا عرض قواعد الأمان الفعالة من خلال فرد:

التشخيص باستخدام PowerShell

ملاحظة

نوصي باستخدام وحدة Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

يمكنك تشغيل الأوامر التي تتبع في Azure Cloud Shell، أو عن طريق تشغيل PowerShell من الكمبيوتر. Azure Cloud Shell هو واجهة تفاعلية مجانية. يحتوي على أدوات Azure الشائعة والمثبتة مسبقًا والتي تم تكوينها للاستخدام مع حسابك. إذا قمت بتشغيل PowerShell من جهاز الكمبيوتر الخاص بك، فأنت بحاجة إلى الوحدة النمطية Azure PowerShell، الإصدار 1.0.0 أو إصدار أحدث. شغّل Get-Module -ListAvailable Az على جهاز الكمبيوتر الخاص بك، للعثور على الإصدار المُثبت. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. إذا كنت تقوم بتشغيل PowerShell محلياً، فستحتاج أيضاً إلى تشغيل Connect-AzAccount لتسجيل الدخول إلى Azure بحساب لديه الأذونات اللازمة].

الحصول على قواعد الأمان الفعالة لواجهة شبكة اتصال مع Get-AzEffectiveNetworkSecurityGroup. يحصل المثال التالي على قواعد الأمان الفعالة لواجهة شبكة الاتصال المسماة myVMVMNic، والتي توجد في مجموعة موارد تسمى myResourceGroup:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

يتم إرجاع الإخراج بتنسيق json. لفهم الإخراج، راجع تفسير إخراج الأمر. يتم إرجاع الإخراج فقط إذا كانت مجموعة أمان الشبكة مقترنة بواجهة الشبكة أو الشبكة الفرعية التي توجد بها واجهة الشبكة أو كلتيهما. يجب أن يكون الجهاز الظاهري في حالة التشغيل. قد يكون لدى الجهاز الظاهري واجهات شبكة اتصال متعددة مع مجموعات أمان شبكة مختلفة مطبقة. عند استكشاف الأخطاء وإصلاحها، قم بتشغيل الأمر لكل واجهة شبكة اتصال.

إذا كنت لا تزال تواجه مشكلة في الاتصال، فراجع التشخيصات والاعتبارات الإضافية.

إذا كنت لا تعرف اسم واجهة الشبكة، ولكنك تعرف اسم الجهاز الظاهري الذي تم توصيل واجهة الشبكة به، فإن الأوامر التالية ترجع معرّفات جميع واجهات الشبكة المتصلة بالجهاز الظاهري:

$VM = Get-AzVM -Name myVM -ResourceGroupName myResourceGroup
$VM.NetworkProfile

تتلقى إخراجاً مشابهاً للمثال التالي:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic

في الإخراج السابق، اسم واجهة الشبكة هو myVMVMNic.

التشخيص باستخدام Azure CLI

إذا كنت تستخدم أوامر Azure CLI لإكمال المهام في هذه المقالة، قم بتشغيل الأوامر في Azure Cloud Shell، أو عن طريق تشغيل Azure CLI من الكمبيوتر. تتطلب هذه المقالة الإصدار 2.0.32 من Azure CLI أو إصدار أحدث. بادر بتشغيل az --version للعثور على الإصدار المثبت. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. إذا كنت تقوم بتشغيل Azure CLI محلياً، فستحتاج أيضاً إلى تشغيل az login لتسجيل الدخول إلى Azure بحساب لديه الأذونات اللازمة.

احصل على قواعد الأمان الفعالة لواجهة شبكة اتصال باستخدام الأمر az network nic list-effective-nsg. يحصل المثال التالي على قواعد الأمان الفعالة لواجهة شبكة الاتصال المسماة myVMVMNic، والتي توجد في مجموعة موارد تسمى myResourceGroup:

az network nic list-effective-nsg \
  --name myVMVMNic \
  --resource-group myResourceGroup

يتم إرجاع الإخراج بتنسيق json. لفهم الإخراج، راجع تفسير إخراج الأمر. يتم إرجاع الإخراج فقط إذا كانت مجموعة أمان الشبكة مقترنة بواجهة الشبكة أو الشبكة الفرعية التي توجد بها واجهة الشبكة أو كلتيهما. يجب أن يكون الجهاز الظاهري في حالة التشغيل. قد يكون لدى الجهاز الظاهري واجهات شبكة اتصال متعددة مع مجموعات أمان شبكة مختلفة مطبقة. عند استكشاف الأخطاء وإصلاحها، قم بتشغيل الأمر لكل واجهة شبكة اتصال.

إذا كنت لا تزال تواجه مشكلة في الاتصال، فراجع التشخيصات والاعتبارات الإضافية.

إذا كنت لا تعرف اسم واجهة الشبكة، ولكنك تعرف اسم الجهاز الظاهري الذي تم توصيل واجهة الشبكة به، فإن الأوامر التالية ترجع معرّفات جميع واجهات الشبكة المتصلة بالجهاز الظاهري:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

ضمن الإخراج الذي تم إرجاعه، تشاهد معلومات مشابهة للمثال التالي:

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      },

في الإخراج السابق، اسم واجهة الشبكة هو واجهة myVMVMNic.

تفسير إخراج الأمر

بغض النظر عما إذا كنت تستخدم PowerShell أو Azure CLI لتشخيص المشكلة، تتلقى الإخراج الذي يحتوي على المعلومات التالية:

  • NetworkSecurityGroup: معرف مجموعة أمان الشبكة.
  • الاقتران: سواء إذا كانت مجموعة أمان الشبكة مقترنة بـ NetworkInterface أو شبكة فرعية. إذا كانت مجموعة أمان الشبكة مرتبطة بكلتيهما، يتم إرجاع الإخراج باستخدام NetworkSecurityGroup، والاقتران، وEffectiveSecurityRules، لكل مجموعة أمان شبكة. إذا تم إقران مجموعة أمان شبكة أو إلغاء إقرانها مباشرة قبل تشغيل الأمر لعرض قواعد الأمان الفعالة، فقد تحتاج إلى الانتظار بضع ثوانٍ حتى ينعكس التغيير في إخراج الأمر.
  • EffectiveSecurityRules: شرح كل خاصية مفصلة في إنشاء قاعدة أمان. أسماء القواعد التي تبدأ بـ defaultSecurityRules/ هي قواعد الأمان الافتراضية الموجودة في كل مجموعة أمان شبكة. أسماء القواعد التي تبدأ بـ securityRules/ هي القواعد التي قمت بإنشائها. القواعد التي تحدد علامة خدمة، مثل الإنترنت وVirtualNetwork وAzureLoadBalancer لخصائص DestinationAddressPrefix أو SourceAddressPrefix تحتوي أيضًا على قيم للخاصية expandedDestinationAddressPrefix. تسرد الخاصية expandedDestinationAddressPrefix كافة بادئات العناوين الممثلة بعلامة الخدمة.

إذا رأيت قواعد مكررة مدرجة في الإخراج، فذلك لأن مجموعة أمان الشبكة مقترنة بكل من واجهة الشبكة والشبكة الفرعية. مجموعتا أمان الشبكة كلتاهما لهما نفس القواعد الافتراضية، وقد يكون لها قواعد مكررة إضافية، إذا كنت قد أنشأت قواعدك الخاصة التي هي نفسها في مجموعتي أمان الشبكة كلتيهما.

القاعدة المسماة defaultSecurityRules/DenyAllInBound هي ما يمنع الاتصال الداخلي بالجهاز الظاهري عبر المنفذ 80، من الإنترنت، كما هو موضح في السيناريو. لا توجد قاعدة أخرى ذات أولوية أعلى (رقم أقل) تسمح بالمنفذ 80 الوارد من الإنترنت.

حل المشكلة

سواء أكنت تستخدم مدخل Azure أم PowerShell أم Azure CLI لتشخيص المشكلة المعروضة في السيناريو في هذه المقالة، فإن الحل هو إنشاء قاعدة أمان شبكة اتصال بالخصائص التالية:

الخاصية القيمة
المصدر أي
نطاقات منافذ المصادر أي
الوجهة عنوان IP الخاص بالجهاز الظاهري أو نطاق عناوين IP أو كافة العناوين في الشبكة الفرعية.
نطاقات المنفذ الوجهات 80
البروتوكول بروتوكول تحكم الإرسال
إجراء السماح
أولوية 100
الاسم Allow-HTTP-All

بعد إنشاء القاعدة، يُسمح بالمنفذ 80 الوارد من الإنترنت، لأن أولوية القاعدة أعلى من قاعدة الأمان الافتراضية المسماة DenyAllInBound، والتي ترفض حركة المرور. تعرف على كيفية إنشاء قاعدة أمان. إذا كانت مجموعات أمان الشبكة المختلفة مقترنة بكل من واجهة الشبكة والشبكة الفرعية، يجب إنشاء نفس القاعدة في كل مجموعة من مجموعات أمان الشبكة.

عندما يقوم Azure بمعالجة حركة المرور الواردة، فإنه يعالج القواعد في مجموعة أمان الشبكة المقترنة بالشبكة الفرعية (إذا كانت هناك مجموعة أمان شبكة مقترنة)، ثم يقوم بمعالجة القواعد في مجموعة أمان الشبكة المقترنة بواجهة الشبكة. إذا كانت هناك مجموعة شبكة أمان مقترنة بواجهة الشبكة والشبكة الفرعية، يجب أن يكون المنفذ مفتوحًا في مجموعتي أمان الشبكة كلتيهما لحركة المرور للوصول إلى الجهاز الظاهري. لتسهيل مشاكل الإدارة والاتصال، نوصي بربط مجموعة أمان الشبكة بشبكة فرعية، بدلاً من واجهات الشبكة الفردية. إذا كانت الأجهزة الظاهرية داخل شبكة فرعية تحتاج إلى قواعد أمان مختلفة، يمكنك جعل واجهات الشبكة أعضاء مجموعة أمان التطبيقات (ASG)، وتحديد مجموعة أمان التطبيقات كمصدر ووجهة لقاعدة أمان. تعرف على المزيد حول مجموعات أمان التطبيقات.

إذا كنت لا تزال تعاني من مشاكل في الاتصال، فشاهد الاعتبارات والتشخيص الإضافي.

الاعتبارات

خذ بعين الاعتبار النقاط التالية عند استكشاف مشكلات الاتصال وإصلاحها:

  • تحظر قواعد الأمان الافتراضية الوصول الوارد من الإنترنت، ولا تسمح إلا بحركة المرور الواردة من الشبكة الظاهرية. للسماح بحركة المرور الواردة من الإنترنت، أضف قواعد الأمان ذات الأولوية الأعلى من القواعد الافتراضية. تعرف على المزيد حول قواعد الأمان الافتراضية، أو كيفية إضافة قاعدة أمان.
  • إذا قمت بالتحقق من الشبكات الظاهرية، بشكل افتراضي، يتم توسيع علامة خدمة VIRTUAL_NETWORK تلقائيًا لتشمل بادئات للشبكات الظاهرية المتناظرة. لاستكشاف أية مشكلات تتعلق بالتناظر مع الشبكة الظاهرية، يمكنك عرض البادئات في قائمة ExpandedAddressPrefix. تعرف على المزيد حول تناظر الشبكة الظاهرية وعلامات الخدمة.
  • لا تظهر قواعد الأمان الفعالة لواجهة الشبكة إلا إذا كانت هناك مجموعة أمان شبكة مرتبطة بواجهة شبكة الجهاز الظاهري و/أو، الشبكة الفرعية، وإذا كان الجهاز الظاهري في حالة التشغيل.
  • إذا لم تكن هناك مجموعات أمان شبكة مقترنة بواجهة الشبكة أو الشبكة الفرعية، وكان لديك عنوان IP عام معين إلى جهاز ظاهري، تكون كافة المنافذ مفتوحة للوصول الوارد من أي مكان والوصول الصادر إليه. إذا كان لدى الجهاز الظاهري عنوان IP عام، نوصي بتطبيق مجموعة أمان شبكة على الشبكة الفرعية وواجهة الشبكة.

التشخيص الإضافي

  • لتشغيل اختبار سريع لتحديد ما إذا كان يسمح بحركة المرور من الجهاز الظاهري أو إليه، استخدم إمكانية التحقق من تدفق IP من Azure Network Watcher. يخبرك التحقق من تدفق IP ما إذا كانت حركة المرور مسموحًا بها أم مرفوضة. إذا تم رفضها، فإن التحقق من تدفق IP يخبرك بقاعدة الأمان التي ترفض حركة المرور.
  • إذا لم تكن هناك قواعد أمان تسبب فشل اتصال شبكة الجهاز الظاهري قد تكون المشكلة بسبب:
    • برنامج جدار الحماية يعمل داخل نظام تشغيل الجهاز الظاهري
    • المسارات التي تم تكوينها للأجهزة الظاهرية أو حركة المرور الداخلية. يمكن إعادة توجيه حركة المرور على الإنترنت إلى الشبكة المحلية الخاصة بك عن طريق النفق القسري. إذا قمت بفرض حركة مرور نفق الإنترنت إلى جهاز ظاهري، أو في الموقع، فقد لا تتمكن من الاتصال بالجهاز الظاهري من الإنترنت. لمعرفة كيفية تشخيص مشاكل التوجيه التي قد تعوق تدفق حركة المرور من الجهاز الظاهري، راجع تشخيص مشكلة توجيه حركة مرور شبكة اتصال الجهاز الظاهري.

الخطوات التالية