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

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

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

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

استخدام Azure Cloud Shell

Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمات البرمجية تلقائيًا إلى Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. Screenshot that shows how to launch Cloud Shell in a new window.
حدد زر ⁧⁩Cloud Shell⁧⁩ في شريط القوائم في أعلى اليمين في ⁧⁩مدخل Azure⁧⁩. Screenshot that shows the Cloud Shell button in the Azure portal

لتشغيل التعليمة البرمجية في هذا المقال في Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر ⁧⁩نسخ⁧⁩ على كتلة التعليمات البرمجية لنسخ التعليمات البرمجية.

  3. ألصق تعليمة البرمجية في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. اكتب ⁧⁩"Enter"⁧⁩ لتشغيل الأمر.

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

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

قبل أن تتمكن من إنشاء جدول توجيه، قم بإنشاء مجموعة موارد باستخدام New-AzResourceGroup. ينشئ المثال التالي مجموعة موارد باسم myResourceGroup لكل الموارد التي تم إنشاؤها في هذه المقالة.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

قم بإنشاء جدول توجيه باستخدام New-AzRouteTable. يقوم المثال التالي بإنشاء جدول توجيه يسمى myRouteTablePublic.

$routeTablePublic = New-AzRouteTable `
  -Name 'myRouteTablePublic' `
  -ResourceGroupName myResourceGroup `
  -location EastUS

إنشاء مسار

قم بإنشاء مسار عن طريق استرداد كائن جدول توجيه باستخدام Get-AzRouteTable، وإنشاء مسار باستخدام Add-AzRouteConfig، ثم كتابة تكوين المسار إلى جدول التوجيه باستخدام Set-AzRouteTable.

Get-AzRouteTable `
  -ResourceGroupName "myResourceGroup" `
  -Name "myRouteTablePublic" `
  | Add-AzRouteConfig `
  -Name "ToPrivateSubnet" `
  -AddressPrefix 10.0.1.0/24 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress 10.0.2.4 `
 | Set-AzRouteTable

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

قبل أن تتمكن من إقران جدول توجيه بشبكة فرعية، يجب عليك إنشاء شبكة ظاهرية وشبكة فرعية. قم بإنشاء شبكة ظاهرية باستخدام New-AzVirtualNetwork. في المثال التالي، يتم إنشاء شبكة ظاهرية باسم myVirtualNetwork باستخدام بادئة العنوان 10.0.0.0/16.

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

قم بإنشاء ثلاث شبكات فرعية عن طريق إنشاء ثلاثة تكوينات للشبكات الفرعية باستخدام New-AzVirtualNetworkSubnetConfig. ينشئ المثال التالي ثلاثة تكوينات شبكات فرعية للشبكات الفرعية العامة، والخاصة، وDMZ:

$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
  -Name Public `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -AddressPrefix 10.0.2.0/24 `
  -VirtualNetwork $virtualNetwork

اكتب تكوينات الشبكة الفرعية إلى الشبكة الظاهرية باستخدام Set-AzVirtualNetwork، الذي ينشئ الشبكات الفرعية في الشبكة الظاهرية:

$virtualNetwork | Set-AzVirtualNetwork

قم بإقران جدول التوجيه myRouteTablePublic بالشبكة الفرعية العامة مع Set-AzVirtualNetworkSubnetConfig ثم اكتب تكوين الشبكة الفرعية إلى الشبكة الظاهرية باستخدام Set-AzVirtualNetwork.

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $virtualNetwork `
  -Name 'Public' `
  -AddressPrefix 10.0.0.0/24 `
  -RouteTable $myRouteTablePublic | `
Set-AzVirtualNetwork

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

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

قبل إنشاء جهاز ظاهري، قم بإنشاء واجهة شبكة.

إنشاء واجهة شبكة

قبل إنشاء واجهة شبكة، يجب عليك استرداد معرّف الشبكة الظاهرية باستخدام Get-AzVirtualNetwork، ثم معرّف الشبكة الفرعية باستخدام Get-AzVirtualNetworkSubnetConfig. إنشاء واجهة شبكة باستخدام New-AzNetworkInterface في الشبكة الفرعية DMZ مع تمكين إعادة توجيه بروتوكول الإنترنت:

# Retrieve the virtual network object into a variable.
$virtualNetwork=Get-AzVirtualNetwork `
  -Name myVirtualNetwork `
  -ResourceGroupName myResourceGroup

# Retrieve the subnet configuration into a variable.
$subnetConfigDmz = Get-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -VirtualNetwork $virtualNetwork

# Create the network interface.
$nic = New-AzNetworkInterface `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name 'myVmNva' `
  -SubnetId $subnetConfigDmz.Id `
  -EnableIPForwarding

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

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

# Create a credential object.
$cred = Get-Credential -Message "Enter a username and password for the VM."

# Create a VM configuration.
$vmConfig = New-AzVMConfig `
  -VMName 'myVmNva' `
  -VMSize Standard_DS2 | `
  Set-AzVMOperatingSystem -Windows `
    -ComputerName 'myVmNva' `
    -Credential $cred | `
  Set-AzVMSourceImage `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest | `
  Add-AzVMNetworkInterface -Id $nic.Id

قم بإنشاء الجهاز الظاهري باستخدام تكوين الجهاز الظاهري بالأمر New-AzVM. ينشئ المثال التالي جهازاً افتراضياً المسمى ⁧⁩myVmNva⁧⁩.

$vmNva = New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -VM $vmConfig `
  -AsJob

ينشئ الخيار -AsJob الجهاز الظاهري في الخلفية، حتى تتمكن من المتابعة إلى الخطوة التالية.

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

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

قم بإنشاء جهاز ظاهري في الشبكة الفرعية العامة باستخدام New-AzVM. يقوم المثال التالي بإنشاء جهاز ظاهري باسم myVmPublic في الشبكة الفرعية العامة للشبكة الظاهرية myVirtualNetwork.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Public" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPublic" `
  -AsJob

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

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Private" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPrivate"

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

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

استخدم Get-AzPublicIpAddress لعرض عنوان IP العام الخاص بالجهاز الظاهري myVmPrivate. يعرض المثال التالي عنوان IP العام لجهاز myVmPrivate الظاهري:

Get-AzPublicIpAddress `
  -Name myVmPrivate `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

استخدم الأمر التالي لإنشاء جلسة عمل سطح مكتب بعيدة باستخدام الجهاز الظاهري myVmPrivate من جهاز الكمبيوتر المحلي الخاص بك. استبدل <publicIpAddress> بعنوان IP الذي تم إرجاعه من الأمر السابق.

mstsc /v:<publicIpAddress>

افتح الملف ".rdp" الذي تم تنزيله. إذا تمت المطالبة، فحدد Connect.

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

في خطوة لاحقة، يتم استخدام الأمر tracert.exe لاختبار التوجيه. يستخدم Tracert بشكل افتراضي بروتوكول رسائل التحكم في الإنترنت (ICMP)، والذي يتم رفضه من خلال جدار حماية Windows. تمكين ICMP من خلال جدار حماية Windows عن طريق إدخال الأمر التالي من PowerShell على الجهاز الظاهري myVmPrivate:

New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4

على الرغم من استخدام مسار التتبع لاختبار التوجيه في هذا المقال، إلا إنه لا يوصى بالسماح لـ ICMP من خلال جدار حماية Windows لعمليات نشر الإنتاج.

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

من موجه الأوامر على الجهاز الظاهري myVmPrivate، سطح المكتب البعيد إلى myVmNva:

mstsc /v:myvmnva

لتمكين إعادة توجيه بروتوكول الإنترنت داخل نظام التشغيل، أدخل الأمر التالي في PowerShell من الجهاز الظاهري myVmNva:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1

أعد تشغيل الجهاز الظاهري myVmNva، الذي يقطع أيضاً اتصال جلسة سطح المكتب البعيد.

أثناء الاستمرار في الاتصال بالجهاز الظاهري myVmPrivate، قم بإنشاء جلسة سطح مكتب بعيد إلى الجهاز الظاهري myVmPublic، بعد إعادة تشغيل الجهاز الظاهري myVmNva:

mstsc /v:myVmPublic

تمكين ICMP من خلال جدار حماية Windows عن طريق إدخال الأمر التالي من PowerShell على الجهاز الظاهري myVmPublic:

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

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

tracert myVmPrivate

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

Tracing route to myVmPrivate.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.1.4]
over a maximum of 30 hops:

1    <1 ms     *        1 ms  10.0.2.4
2     1 ms     1 ms     1 ms  10.0.1.4

Trace complete.

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

إغلاق جلسة سطح المكتب البعيد للجهاز الظاهري myVmPublic، ما يجعلك لا تزال متصلاً بالجهاز الظاهري myVmPrivate.

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

tracert myVmPublic

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

Tracing route to myVmPublic.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.0.4]
over a maximum of 30 hops:

1     1 ms     1 ms     1 ms  10.0.0.4

Trace complete.

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

إغلاق جلسة عمل سطح المكتب البعيد إلى الجهاز الظاهري myVmPrivate.

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

عند عدم الحاجة إليها، استخدم Remove-AzResourceGroup لإزالة مجموعة الموارد وجميع الموارد ذات الصلة.

Remove-AzResourceGroup -Name myResourceGroup -Force

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

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

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