التشغيل السريع: استخدام Azure PowerShell لإنشاء شبكة ظاهرية

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

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

رسم تخطيطي للموارد التي تم إنشاؤها في التشغيل السريع للشبكة الظاهرية.

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

  • حساب Azure مع اشتراك نشط. يمكنك إنشاء حساب مجانًا.

  • Azure Cloud Shell أو Azure PowerShell.

    تعمل الخطوات الواردة في هذا التشغيل السريع على تشغيل أوامر Cmdlets Azure PowerShell بشكل تفاعلي في Azure Cloud Shell. لتشغيل الأوامر في Cloud Shell، حدد Open Cloudshell في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. حدد نسخ لنسخ التعليمات البرمجية، ثم الصقها في Cloud Shell لتشغيلها. يمكنك أيضا تشغيل Cloud Shell من داخل مدخل Microsoft Azure.

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

    إذا قمت بتشغيل PowerShell محليا، فقم بتشغيل Connect-AzAccount للاتصال ب Azure.

إنشاء مجموعة موارد

استخدم New-AzResourceGroup لإنشاء مجموعة موارد لاستضافة الشبكة الظاهرية. قم بتشغيل التعليمات البرمجية التالية لإنشاء مجموعة موارد تسمى test-rg في منطقة eastus2 Azure:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

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

  1. استخدم New-AzVirtualNetwork لإنشاء شبكة ظاهرية تسمى vnet-1 مع بادئة عنوان IP 10.0.0.0/16 في مجموعة موارد test-rg وموقع eastus2 :

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. ينشر Azure الموارد إلى شبكة فرعية داخل شبكة ظاهرية. استخدم Add-AzVirtualNetworkSubnetConfig لإنشاء تكوين شبكة فرعية باسم subnet-1 مع بادئة العنوان 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. إقران تكوين الشبكة الفرعية بالشبكة الظاهرية باستخدام Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

نشر Azure Bastion

يستخدم Azure Bastion المستعرض للاتصال بالأجهزة الظاهرية في شبكتك الظاهرية عبر Secure Shell (SSH) أو بروتوكول سطح المكتب البعيد (RDP) باستخدام عناوين IP الخاصة بها. لا تحتاج الأجهزة الظاهرية إلى عناوين IP عامة أو برامج عميل أو تكوين خاص. لمزيد من المعلومات حول Bastion، راجع ما هو Azure Bastion؟.

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

  1. تكوين شبكة فرعية Bastion لشبكتك الظاهرية. هذه الشبكة الفرعية محجوزة حصريا لموارد Bastion ويجب تسميتها AzureBastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. تعيين التكوين:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. إنشاء عنوان IP عام ل Bastion. يستخدم مضيف Bastion عنوان IP العام للوصول إلى SSH وRDP عبر المنفذ 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. استخدم الأمر New-AzBastion لإنشاء مضيف SKU Bastion قياسي جديد في AzureBastionSubnet:

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

يستغرق نشر موارد Bastion حوالي 10 دقائق. يمكنك إنشاء أجهزة ظاهرية في القسم التالي أثناء توزيع Bastion على شبكتك الظاهرية.

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

استخدم New-AzVM لإنشاء جهازين ظاهريين باسم vm-1 وvm-2 في الشبكة الفرعية subnet-1 للشبكة الظاهرية. عند مطالبتك ببيانات الاعتماد، أدخل أسماء المستخدمين وكلمات المرور للأجهزة الظاهرية.

  1. لإنشاء الجهاز الظاهري الأول، استخدم التعليمات البرمجية التالية:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-1"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-1"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-1"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    
  2. لإنشاء الجهاز الظاهري الثاني، استخدم التعليمات البرمجية التالية:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-2"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-2"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-2"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    

تلميح

يمكنك استخدام -AsJob الخيار لإنشاء جهاز ظاهري في الخلفية أثناء متابعة المهام الأخرى. على سبيل المثال، شغّل New-AzVM @vm1 -AsJob. عندما يبدأ Azure في إنشاء الجهاز الظاهري في الخلفية، تحصل على شيء مثل الإخراج التالي:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM

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

إشعار

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

إشعار

يوفر Azure عنوان IP افتراضيا للوصول الصادر للأجهزة الظاهرية التي لم يتم تعيين عنوان IP عام لها أو الموجودة في تجمع الواجهة الخلفية لموازن تحميل Azure الأساسي الداخلي. توفر آلية IP للوصول الصادر الافتراضي عنوان IP صادر غير قابل للتكوين.

يتم تعطيل عنوان IP الافتراضي للوصول الصادر عند حدوث أحد الأحداث التالية:

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

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

لمزيد من المعلومات حول الاتصالات الصادرة في Azure، راجع الوصول الصادر الافتراضي في Azure واستخدام ترجمة عنوان الشبكة المصدر (SNAT) للاتصالات الصادرة.

الاتصال بجهاز ظاهري

  1. في المدخل، ابحث عن الأجهزة الظاهرية وحددها.

  2. في صفحة Virtual machines ، حدد vm-1.

  3. في معلومات Overview ل vm-1، حدد الاتصال.

  4. في صفحة الاتصال إلى الجهاز الظاهري، حدد علامة التبويب Bastion.

  5. حدد "Use Bastion".

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

بدء الاتصال بين الأجهزة الظاهرية

  1. في موجه bash ل vm-1، أدخل ping -c 4 vm-2.

    يمكنك الحصول على رد مشابه للرسالة التالية:

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. أغلق اتصال Bastion إلى vm-1.

  3. كرر الخطوات الواردة في الاتصال إلى جهاز ظاهري للاتصال ب vm-2.

  4. في موجه bash ل vm-2، أدخل ping -c 4 vm-1.

    يمكنك الحصول على رد مشابه للرسالة التالية:

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. أغلق اتصال Bastion إلى vm-2.

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

عند الانتهاء من الشبكة الظاهرية والأجهزة الظاهرية، استخدم Remove-AzResourceGroup لإزالة مجموعة الموارد وجميع مواردها:

Remove-AzResourceGroup -Name 'test-rg' -Force

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

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