البرنامج التعليمي: إنشاء شبكات Azure الظاهرية وإدارتها لأجهزة Linux الظاهرية باستخدام واجهة Azure CLI

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

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

  • إنشاء شبكة ظاهرية وشبكة فرعية
  • بإنشاء عنوان IP عام
  • إنشاء VM أمامي
  • تأمين حركة مرور الشبكة
  • إنشاء جهاز ظاهري خلفي

يستخدم هذا البرنامج التعليمي CLI داخل Azure Cloud Shell، الذي يتم تحديثه باستمرار إلى أحدث إصدار. لفتح Cloud Shell، حدد Try it من الجزء العلوي لكتلة التعليمة البرمجية.

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

نظرة عامة على شبكات VM

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

أثناء إكمال البرنامج التعليمي، يتم إنشاء موارد الشبكة الظاهرية التالية:

شبكة اتصال ظاهرية مع شبكتين فرعيتين

  • myVNet - الشبكة الظاهرية التي تستخدمها الأجهزة الظاهرية للتواصل مع بعضها البعض ومع الإنترنت.
  • myFrontendSubnet - الشبكة الفرعية في myVNet المستخدمة بواسطة موارد الواجهة الأمامية.
  • myPublicIPAddress - عنوان IP العام المستخدم للوصول إلى myFrontendVM من الإنترنت.
  • myFrontentNic - واجهة الشبكة المستخدمة بواسطة myFrontendVM للاتصال بـ myBackendVM.
  • myFrontendVM - الجهاز الظاهري المستخدم للاتصال بين الإنترنت وmyBackendVM.
  • myBackendNSG - مجموعة أمان الشبكة التي تتحكم في الاتصال بين myFrontendVM و myBackendVM.
  • myBackendSubnet - الشبكة الفرعية المرتبطة بـ myBackendNSG والمستخدمة بواسطة موارد النهاية.
  • myFrontendNic -- واجهة الشبكة المستخدمة من قبل myFrontendVM للتواصل مع myBackendVM.
  • myBackendVM - الجهاز الظاهري الذي يستخدم المنفذين 22 و3306 للتواصل مع myFrontendVM.

إنشاء شبكة ظاهرية وشبكة فرعية

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

قبل أن تتمكن من إنشاء شبكة ظاهرية، قم بإنشاء مجموعة موارد باستخدام az group create. ينشئ المثال التالي مجموعة موارد باسم myRGNetwork في موقع Eastus.

az group create --name myRGNetwork --location eastus

إنشاء شبكة ظاهرية

استخدم الأمر az network vnet create لإنشاء شبكة ظاهرية. في هذا المثال، تمت تسمية الشبكة mvVNet وتم إعطاء بادئة عنوان 10.0.0.0/16. يتم أيضًا إنشاء شبكة فرعية باسم myFrontendSubnet وبادئة 10.0.1.0/24. لاحقًا في هذا البرنامج التعليمي، تم توصيل جهاز ظاهري أمامي بهذه الشبكة الفرعية.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

إنشاء شبكة فرعية

تمت إضافة شبكة فرعية جديدة إلى الشبكة الظاهرية باستخدام الأمر az network vnet subnet create. في هذا المثال، تسمى الشبكة الفرعية myBackendSubnet ويتم إعطاء بادئة عنوان 10.0.2.0/24. تُستخدم هذه الشبكة الفرعية مع جميع الخدمات الخلفية.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

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

بإنشاء عنوان IP عام

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

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

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

عند إنشاء جهاز ظاهري باستخدام الأمر az vm create، فإن طريقة تخصيص عنوان IP العام الظاهرية تكون ديناميكية. عند إنشاء جهاز ظاهري باستخدام الأمر az vm create، قم بتضمين الوسيطة --public-ip-address-allocation static لتعيين عنوان IP عام ثابت. لم يتم توضيح هذه العملية في هذا البرنامج التعليمي، ولكن في القسم التالي، يتم تغيير عنوان IP المخصص ديناميكيًا إلى عنوان مخصص بشكل ثابت.

تغيير طريقة التخصيص

يمكن تغيير طريقة تخصيص عنوان IP باستخدام الأمر az network public-ip update. في هذا المثال، يتم تغيير طريقة تخصيص عنوان IP لجهاز VM للواجهة الأمامية إلى ثابت.

أولاً، قم بإلغاء تخصيص VM.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

استخدم الأمر az network public-ip update لتحديث طريقة التخصيص. في هذه الحالة، يتم تعيين --allocation-method على ثابت .

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

تشغيل الجهاز الظاهري.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

لا يوجد عنوان IP عام

في كثير من الأحيان، لا يلزم أن يكون الجهاز الافتراضي متاحًا للوصول إليه عبر الإنترنت. لإنشاء جهاز ظاهري بدون عنوان IP عام، استخدم الوسيطة --public-ip-address "" مع مجموعة فارغة من علامات الاقتباس المزدوجة. تم توضيح هذا التكوين لاحقًا في هذا البرنامج التعليمي.

إنشاء VM أمامي

استخدم الأمر az vm create لإنشاء VM المسمى myFrontendVM باستخدام myPublicIPAddress.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image Ubuntu2204 \
  --generate-ssh-keys

تأمين حركة مرور الشبكة

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

قواعد مجموعة أمان الشبكة

تحدد قواعد NSG منافذ الشبكات التي يُسمح فيها بحركة المرور أو يتم رفضها. يمكن أن تتضمن القواعد نطاقات عناوين IP للمصدر والوجهة بحيث يتم التحكم في حركة المرور بين أنظمة أو شبكات فرعية محددة. تتضمن قواعد NSG أيضًا أولوية (بين 1 و4096). يتم تقييم القواعد بترتيب الأولوية. يتم تقييم القاعدة ذات الأولوية 100 قبل القاعدة ذات الأولوية 200.

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

القواعد الظاهرية لمجموعة NSG هي:

  • الشبكة الظاهرية - يسمح بنقل البيانات التي تنشأ وتنتهي في شبكة ظاهرية في كل من الاتجاهات الواردة والصادرة.
  • الإنترنت - يُسمح بحركة المرور الصادرة، ولكن يتم حظر حركة المرور الواردة.
  • موازن التحميل - اسمح لموازن تحميل Azure بفحص حالة الأجهزة الظاهرية ومثيلات الأدوار. إذا كنت لا تستخدم مجموعة موازنة الحمل، فإنه يمكنك تجاوز هذه القاعدة.

إنشاء مجموعات أمان الشبكة

يمكن إنشاء مجموعة أمان شبكة في نفس الوقت مع جهاز ظاهري باستخدام الأمر az vm create. عند القيام بذلك، يتم ربط NSG بواجهة شبكة VMs ويتم إنشاء قاعدة NSG تلقائيًا للسماح بحركة المرور على المنفذ 22 من أي مصدر. في وقت سابق من هذا البرنامج التعليمي، تم إنشاء NSG للواجهة الأمامية تلقائيًا باستخدام الواجهة الأمامية VM. تم أيضًا إنشاء قاعدة NSG تلقائيًا للمنفذ 22.

في بعض الحالات، قد يكون من المفيد إنشاء NSG مسبقًا، على سبيل المثال عندما لا يجب إنشاء قواعد SSH الظاهرية، أو عندما يجب إرفاق NSG بشبكة فرعية.

استخدم الأمر az network nsg create لإنشاء مجموعة أمان للشبكة.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

بدلاً من ربط مجموعة NSG بواجهة شبكة، يتم ربطها بشبكة فرعية. في هذا التكوين، يرث أي جهاز ظاهري متصل بالشبكة الفرعية قواعد مجموعة NSG.

قم بتحديث الشبكة الفرعية الحالية المسماة myBackendSubnet بمجموعة NSG الجديدة.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

تأمين حركة المرور الواردة

عندما تم إنشاء VM للواجهة الأمامية، تم إنشاء قاعدة NSG للسماح بحركة المرور الواردة على المنفذ 22. تسمح هذه القاعدة باتصالات SSH بـ VM. في هذا المثال، يجب أيضًا السماح بالمرور عبر المنفذ 80. يسمح هذا التكوين بالوصول إلى تطبيق ويب على الجهاز الظاهري.

استخدم الأمر az network nsg create لإنشاء قاعدة للمنفذ 80.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

لا يمكن الوصول إلى الجهاز الظاهري للواجهة الأمامية إلا من المنفذ 22 والمنفذ 80. يتم حظر جميع حركة المرور الواردة الأخرى في مجموعة أمان الشبكة. قد يكون من المفيد تصور تكوينات قواعد مجموعة NSG. قم بإعادة تكوين قاعدة NSG باستخدام الأمر az network rule list.

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

تأمين حركة مرور VM إلى VM

يمكن أيضًا تطبيق قواعد مجموعة أمان الشبكة بين الأجهزة الظاهرية. في هذا المثال، يحتاج الجهاز الظاهري للواجهة الأمامية إلى الاتصال مع الجهاز الظاهري للجهة الخلفية على المنفذ 22 و 3306. يسمح هذا التكوين لاتصالات SSH من الجهاز الظاهري للواجهة الأمامية، ويسمح أيضًا للتطبيق على الواجهة الظاهرية VM بالاتصال بقاعدة بيانات MySQL الخلفية. يجب حظر جميع حركة المرور الأخرى بين الأجهزة الظاهرية للواجهة الأمامية والخلفية.

استخدم الأمر az network nsg create لإنشاء قاعدة للمنفذ 22. لاحظ أن الوسيطة --source-address-prefix تحدد قيمة 10.0.1.0/24 . يضمن هذا التكوين السماح فقط بحركة المرور من الشبكة الفرعية للواجهة الأمامية عبر مجموعة NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

أضف الآن قاعدة لحركة مرور MySQL على المنفذ 3306.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

أخيرًا، نظرًا إلى أن مجموعات NSG لها قاعدة ظاهرية تسمح لجميع حركات المرور بين الأجهزة الظاهرية في نفس الشبكة الظاهرية الخاصة، يمكن إنشاء قاعدة لمجموعات NSG الخلفية لحظر كل حركة المرور. لاحظ هنا أن --priority حصل على القيمة 300 ، وهي أقل من قواعد NSG وMySQL. يضمن هذا التكوين أن حركة مرور SSH وMySQL لا تزال مسموحًا بها من خلال NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

إنشاء VM الخلفية

الآن قم بإنشاء آلة ظاهرية متصلة بـ myBackendSubnet. لاحظ أن الوسيطة --nsg لها قيمة علامات اقتباس مزدوجة فارغة. لا يلزم إنشاء NSG باستخدام الجهاز الظاهري. يتم توصيل الجهاز الظاهري بالشبكة الفرعية الخلفية، المحمية بواسطة مجموعة NSG الخلفية التي تم إنشاؤها مسبقًا. ينطبق هذا NSG على VM. لاحظ أيضًا هنا أن الوسيطة --public-ip-address لها قيمة علامات اقتباس مزدوجة فارغة. ينشئ هذا التكوين جهازًا ظاهريًا بدون عنوان IP عام.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image Ubuntu2204 \
  --generate-ssh-keys

لا يمكن الوصول إلى الجهاز الظاهري للجهة الخلفية إلا من المنفذ 22 والمنفذ 3306 من الشبكة الفرعية للواجهة الأمامية. يتم حظر جميع حركة المرور الواردة الأخرى في مجموعة أمان الشبكة. قد يكون من المفيد تصور تكوينات قواعد مجموعة NSG. قم بإعادة تكوين قاعدة NSG باستخدام الأمر az network rule list.

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

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

في هذا البرنامج التعليمي، قمت بإنشاء وتأمين شبكات Azure فيما يتعلق بالأجهزة الظاهرية. لقد تعرفت على كيفية:

  • إنشاء شبكة ظاهرية وشبكة فرعية
  • بإنشاء عنوان IP عام
  • إنشاء VM أمامي
  • تأمين حركة مرور الشبكة
  • إنشاء VM الخلفية

لمعرفة المزيد حول حماية أقراص الجهاز الظاهري راجع النسخ الاحتياطي واسترداد البيانات بعد عطل فادح للأقراص.