مشاركة عبر


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

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

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

السيناريو

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

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

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

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

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

  3. قم بتوسيع Networking في الجزء الأيمن. حدد إعدادات الشبكة. تظهر الأرقام التالية إعدادات مجموعة أمان الشبكة لواجهة شبكة الجهاز الظاهري.

    لقطة شاشة لقواعد الأمان للشبكة الفرعية NSG nsg.

    لقطة شاشة لقواعد الأمان ل NSG nsg-nic.

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

    • nsg-subnet: مقترن بالشبكة الفرعية التي توجد بها واجهة الشبكة.
    • nsg-nic: مقترن بواجهة الشبكة في الجهاز الظاهري المسمى vm-1445.

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

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

    على الرغم من أن الصورة تعرض أربع قواعد واردة فقط لكل مجموعة أمان الشبكة، فقد تحتوي مجموعات أمان الشبكة الخاصة بك على أكثر من أربع قواعد. في الصورة، ترى VirtualNetwork ضمن Source and DestinationوAzureLoadBalancer ضمن SOURCE. VirtualNetwork وAzureLoadBalancer هما علامات خدمة. تمثل علامات الخدمة مجموعة من بادئات عناوين IP للمساعدة في تقليل التعقيد لإنشاء قاعدة الأمان.

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

  5. في إعدادات واجهة الشبكة، قم بتوسيع التعليمات، ثم حدد قواعد الأمان الفعالة.

    يوضح المثال التالي مثال واجهة الشبكة vm-1445 مع تحديد قواعد الأمان الفعالة .

    لقطة شاشة لقواعد الأمان الفعالة لواجهة الشبكة vm-1445.

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

  6. أظهرت الخطوات السابقة قواعد الأمان لواجهة شبكة تسمى vm-1445. ماذا لو كان الجهاز الظاهري يحتوي على واجهتي شبكة؟ يحتوي الجهاز الظاهري في هذا المثال على واجهتي شبكة متصلتين به. يمكن أن تكون قواعد الأمان الفعالة مختلفة لكل واجهة شبكة اتصال.

    لمشاهدة قواعد واجهة الشبكة vm-nic-2 ، حددها. كما هو موضح في المثال التالي، تحتوي واجهة الشبكة على نفس القواعد المقترنة بشبكتها الفرعية كواجهة شبكة vm-1445 ، لأن كلتا واجهتي الشبكة في نفس الشبكة الفرعية. عند إقران مجموعة أمان الشبكة إلى شبكة فرعية، يتم تطبيق القواعد الخاصة به على كافة واجهات شبكة الاتصال في الشبكة الفرعية.

    لقطة شاشة لقواعد الأمان ل nic vm-nic-2.

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

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

التشخيص باستخدام 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. يحصل المثال التالي على قواعد الأمان الفعالة لواجهة شبكة تسمى vm-nic الموجودة في مجموعة موارد تسمى test-rg:

$Params = @{
  NetworkInterfaceName = "vm-nic"
  ResourceGroupName    = "test-rg"
}
Get-AzEffectiveNetworkSecurityGroup @Params

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

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

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

$Params = @{
  Name              = "vm-1"
  ResourceGroupName = "test-rg"
}
$VM = Get-AzVM @Params
$VM.NetworkProfile

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

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

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

التشخيص باستخدام 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. يحصل المثال التالي على قواعد الأمان الفعالة لواجهة شبكة تسمى vm-nic الموجودة في مجموعة موارد تسمى test-rg:

az network nic list-effective-nsg \
  --name vm-nic \
  --resource-group test-rg

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

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

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

az vm show \
  --name vm-1 \
  --resource-group test-rg

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

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/test-rg/providers/Microsoft.Network/networkInterfaces/vm-nic",
        "primary": true,
        "resourceGroup": "test-rg"
      },

في الإخراج السابق، اسم واجهة الشبكة هو vm-nic

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

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

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

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

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

حل المشكلة

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

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

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

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

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

الاعتبارات

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

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

  • بالنسبة للشبكات الظاهرية النظيرة، بشكل افتراضي، يتم توسيع علامة خدمة VIRTUAL_NETWORK تلقائيا لتضمين بادئات للشبكات الظاهرية النظيرة. لاستكشاف أية مشكلات تتعلق بالتناظر مع الشبكة الظاهرية، يمكنك عرض البادئات في قائمة ExpandedAddressPrefix. تعرف على المزيد حول تناظر الشبكة الظاهرية وعلامات الخدمة.

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

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

المزيد من التشخيصات

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

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