قم بتوجيه نسبة استخدام الشبكة باستخدام جدول توجيه باستخدام Azure CLI

يقوم Azure تلقائياً بتوجيه نسبة استخدام الشبكة بين جميع الشبكات الفرعية داخل شبكة ظاهرية، افتراضياً. يُمكن إنشاء اتجاهات لتجاوز التوجيه الافتراضي لـ Azure. تعد القدرة على إنشاء مسارات مخصصة مفيدة إذا كنت تريد، على سبيل المثال، توجيه نسبة استخدام الشبكة بين الشبكات الفرعية من خلال جهاز ظاهري للشبكة (NVA). في هذه المقالة، ستتعرف على كيفية:

  • إنشاء جدول توجيه
  • إنشاء مسار
  • إنشاء شبكة اتصال ظاهرية مع شبكات فرعية متعددة
  • توصيل جدول المسار بالشبكة الفرعية
  • إنشاء NVA أساسي يوجه نسبة استخدام الشبكة من جهاز Ubuntu الظاهري
  • نشر الأجهزة الظاهرية في الشبكات الفرعية المختلفة
  • توجيه نسبة استخدام الشبكة من شبكة فرعية إلى أخرى عبر الجهاز الظاهري للشبكة

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

  • تتطلب هذه المقالة الإصدار 2.0.28 أو إصدارًا أحدث من واجهة سطر الأوامر من Azure. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

إنشاء جدول توجيه

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

# Create a resource group.
az group create \
  --name myResourceGroup \
  --location eastus

قم بإنشاء جدول توجيه باستخدام الأمر az network route-table create. يقوم المثال التالي بإنشاء جدول توجيه يسمى myRouteTablePublic.

# Create a route table
az network route-table create \
  --resource-group myResourceGroup \
  --name myRouteTablePublic

إنشاء مسار

قم بإنشاء مسار في جدول التوجيه باستخدام الأمر az network route-table route create.

az network route-table route create \
  --name ToPrivateSubnet \
  --resource-group myResourceGroup \
  --route-table-name myRouteTablePublic \
  --address-prefix 10.0.1.0/24 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.0.2.4

توصيل جدول المسار بالشبكة الفرعية

قبل أن تتمكن من إقران جدول توجيه بشبكة فرعية، يجب عليك إنشاء شبكة ظاهرية وشبكة فرعية. قم بإنشاء شبكة ظاهرية بشبكة فرعية واحدة باستخدام الأمر az network vnet create.

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefix 10.0.0.0/16 \
  --subnet-name Public \
  --subnet-prefix 10.0.0.0/24

قم بإنشاء شبكتين فرعيتين إضافيتين باستخدام الأمر az network vnet subnet create.

# Create a private subnet.
az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name Private \
  --address-prefix 10.0.1.0/24

# Create a DMZ subnet.
az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name DMZ \
  --address-prefix 10.0.2.0/24

قم بإقران جدول توجيه myRouteTablePublic بالشبكة الفرعية Public باستخدام الأمرaz network vnet subnet update.

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --name Public \
  --resource-group myResourceGroup \
  --route-table myRouteTablePublic

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

NVA هو جهاز ظاهري يقوم بوظيفة شبكة، مثل التوجيه أو جدار الحماية أو تحسين WAN. سننشئ NVA أساسيا من جهاز Ubuntu ظاهري للأغراض العامة، لأغراض العرض التوضيحي.

إنشاء جهاز ظاهري لاستخدامه ك NVA في الشبكة الفرعية DMZ مع az vm create. عند إنشاء جهاز ظاهري، يقوم Azure بإنشاء وتعيين واجهة شبكة myVmNvaVMNic وعنوان IP عام للجهاز الظاهري، بشكل افتراضي. المعلمة --public-ip-address "" ترشد Azure إلى عدم إنشاء عنوان IP عام وتعيينه إلى الجهاز الظاهري، نظرًا لأن الجهاز الظاهري لا يحتاج إلى الاتصال من الإنترنت. وإذا لم تكن مفاتيح SSH موجودة بالفعل في موقع المفتاح الافتراضي، ينشئها الأمر. لاستخدام مجموعة محددة من المفاتيح، استخدم الخيار --ssh-key-value.

az vm create \
  --resource-group myResourceGroup \
  --name myVmNva \
  --image Ubuntu2204 \
  --public-ip-address "" \
  --subnet DMZ \
  --vnet-name myVirtualNetwork \
  --generate-ssh-keys

ويستغرق إنشاء جهاز ظاهري بضع دقائق. لا تنتقل إلى الخطوة التالية حتى ينتهي Azure من إنشاء الجهاز الظاهري وإرجاع الإخراج حول الجهاز الظاهري.

لكي تتمكن واجهة الشبكة myVmNvaVMNic من إعادة توجيه نسبة استخدام الشبكة المرسلة إليها، والتي لم يتم توجيهها لعنوان IP الخاص بها، يجب تمكين إعادة توجيه IP لواجهة الشبكة. قم بتمكين إعادة توجيه IP لواجهة الشبكة باستخدام الأمر az network nic update.

az network nic update \
  --name myVmNvaVMNic \
  --resource-group myResourceGroup \
  --ip-forwarding true

داخل الجهاز الظاهري، يجب أن يكون نظام التشغيل أو أي تطبيق يعمل داخل الجهاز الظاهري قادراً أيضاً على إعادة توجيه نسبة استخدام الشبكة. سنستخدم sysctl الأمر لتمكين نواة Linux لإعادة توجيه الحزم. لتشغيل هذا الأمر دون تسجيل الدخول إلى الجهاز الظاهري، سنستخدم ملحق البرنامج النصي المخصص az vm extension set:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVmNva \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"commandToExecute":"sudo sysctl -w net.ipv4.ip_forward=1"}'

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

أنشئ الأجهزة الظاهرية

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

قم بإنشاء VM في الشبكة الفرعية Public باستخدام الأمر az vm create. تمكّن المعلمة --no-wait Azure من تنفيذ الأمر في الخلفية حتى تتمكن من المتابعة إلى الأمر التالي. لتبسيط هذه المقالة، يتم استخدام كلمة مرور. تُستخدم المفاتيح عادةً في عمليات توزيع الإنتاج. إذا كنت تستخدم مفاتيح، يجب عليك أيضاً تكوين إعادة توجيه عامل SSH. لمزيد من المعلومات، راجع الوثائق الخاصة بعميل SSH الخاص بك. استبدل <replace-with-your-password> في الأمر التالي بكلمة مرور من اختيارك.

adminPassword="<replace-with-your-password>"

az vm create \
  --resource-group myResourceGroup \
  --name myVmPublic \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet Public \
  --admin-username azureuser \
  --admin-password $adminPassword \
  --no-wait

قم بإنشاء جهاز ظاهري في الشبكة الفرعية خاصة.

az vm create \
  --resource-group myResourceGroup \
  --name myVmPrivate \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet Private \
  --admin-username azureuser \
  --admin-password $adminPassword

ويستغرق إنشاء جهاز ظاهري بضع دقائق. بعد إنشاء الجهاز الظاهري، يعرض Azure CLI معلومات مشابهة للمثال التالي:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmPrivate",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.1.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

لاحظ publicIpAddress. يُستخدم هذا العنوان للوصول إلى الجهاز الظاهري من الإنترنت في خطوة لاحقة.

توجيه حركة المرور عن طريق الأجهزة الظاهرية للشبكة

باستخدام عميل SSH من اختيارك، اتصل بالأجهزة الظاهرية التي تم إنشاؤها أعلاه. على سبيل المثال، يمكن استخدام الأمر التالي من واجهة سطر الأوامر مثل WSL لإنشاء جلسة عمل SSH مع الجهاز الظاهري myVmPrivate . استبدل <publicIpAddress> بعنوان IP العام لجهاز الجهاز الظاهري. في المثال أعلاه، عنوان IP هو 13.90.242.231.

ssh azureuser@<publicIpAddress>

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

استخدم الأمر التالي لتثبيت مسار التتبع على الجهاز الظاهري myVmPrivate:

sudo apt update
sudo apt install traceroute

استخدم الأمر التالي لاختبار التوجيه لنسبة استخدام الشبكة إلى الجهاز الظاهري myVmPublic من الجهاز الظاهري myVmPrivate.

traceroute myVmPublic

الاستجابة مماثلة للمثال التالي:

traceroute to myVmPublic (10.0.0.4), 30 hops max, 60 byte packets
1  10.0.0.4 (10.0.0.4)  1.404 ms  1.403 ms  1.398 ms

يمكنك أن ترى أن نسبة استخدام الشبكة يتم توجيهها مباشرة من الجهاز الظاهري myVmPrivate إلى الجهاز الظاهري myVmPublic. مسارات Azure الافتراضية، توجه نسبة استخدام الشبكة مباشرة بين الشبكات الفرعية.

استخدم الأمر التالي لـ SSH إلى الجهاز الظاهري myVmPublic من الجهاز الظاهري myVmPrivate:

ssh azureuser@myVmPublic

استخدم الأمر التالي لتثبيت مسار التتبع على الجهاز الظاهري myVmPublic:

sudo apt-get install traceroute

استخدم الأمر التالي لاختبار التوجيه لنسبة استخدام الشبكة إلى الجهاز الظاهري myVmPrivate من الجهاز الظاهري myVmPublic.

traceroute myVmPrivate

الاستجابة مماثلة للمثال التالي:

traceroute to myVmPrivate (10.0.1.4), 30 hops max, 60 byte packets
1  10.0.2.4 (10.0.2.4)  0.781 ms  0.780 ms  0.775 ms
2  10.0.1.4 (10.0.0.4)  1.404 ms  1.403 ms  1.398 ms

يمكنك أن ترى أن الخطوة الأولى هي 10.0.2.4، وهو عنوان IP الخاص بـ NVA. المرحلة الثانية هي 10.0.1.4، عنوان IP الخاص لـ myVmPrivate VM. أدى المسار المضاف إلى جدول التوجيه myRouteTablePublic والمرتبط بالشبكة الفرعية العامة إلى قيام Azure بتوجيه نسبة استخدام الشبكة عبر NVA، بدلاً من توجيهها مباشرةً إلى الشبكة الفرعية الخاصة.

أغلق جلسات SSH لكل من الأجهزة الظاهرية myVmPublic وmyVmPrivate.

تنظيف الموارد

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

az group delete --name myResourceGroup --yes

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

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

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