تكوين بوابة التطبيق بعنوان IPv6 عام للواجهة الأمامية باستخدام Azure PowerShell

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

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

نظرة عامة

يتم استخدام Azure PowerShell لإنشاء IPv6 Azure Application Gateway. يتم إجراء الاختبار للتحقق من أنه يعمل بشكل صحيح.

‏‫ستتعلم كيفية:

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

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

يمكنك أيضا إكمال هذا التشغيل السريع باستخدام مدخل Microsoft Azure.

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

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

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

المناطق وقابلية الوصول

تتوفر بوابة تطبيق IPv6 لجميع مناطق السحابة العامة حيث يتم دعم Application Gateway v2 SKU. كما أنها متاحة في Microsoft Azure التي تديرها 21Vianet وAzure Government

القيود

  • يدعم v2 SKU فقط واجهة أمامية مع كل من عناوين IPv4 وIPv6
  • الخلفيات IPv6 غير مدعومة حاليا
  • ارتباط IPv6 الخاص غير مدعوم حاليا
  • بوابة التطبيق IPv6 فقط غير مدعومة حاليا. يجب أن تكون Application Gateway مكدسا مزدوجا (IPv6 وIPv4)
  • لا تدعم وحدة تحكم دخول بوابة التطبيق (AGIC) تكوين IPv6
  • لا يمكن ترقية بوابات تطبيق IPv4 الحالية إلى بوابات التطبيق ذات المكدس المزدوج
  • قواعد WAF المخصصة مع شرط مطابقة IPv6 غير مدعومة حاليا

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

وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. أنشئ مجموعة موارد Azure باستخدام New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

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

تكوين الشبكات الفرعية المسماة myBackendSubnet وmyAGSubnetباستخدام New-AzVirtualNetworkSubnetConfig.

$AppGwSubnetPrefix = @("10.0.0.0/24", "ace:cab:deca::/64")
$appgwSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet -AddressPrefix $AppGwSubnetPrefix
$backendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet -AddressPrefix  10.0.1.0/24

إنشاء شبكة ظاهرية مزدوجة المكدس

$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)

إنشاء عناوين IP العامة للواجهة الأمامية لبوابة التطبيق

$pipv4 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress4 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv4' `
-Force

$pipv6 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress6 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv6' `
-Force

إنشاء تكوينات IP والمنافذ

قم بربط myAGSubnet الذي قمت بإنشائه مسبقا ببوابة التطبيق باستخدام New-AzApplicationGatewayIPConfiguration. قم بتعيين myAGPublicIPAddress إلى بوابة التطبيق باستخدام New-AzApplicationGatewayFrontendIPConfig.

$vnet   = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myAGSubnet
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfigv4 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv4Config `
-PublicIPAddress $pipv4
$fipconfigv6 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv6Config `
-PublicIPAddress $pipv6
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myAGFrontendIPv6Config `
-Port 80

إنشاء مجموعة الواجهة الخلفية والإعدادات

أنشئ المجموعة الخلفية الافتراضية باسم appGatewayBackendPool لبوابة التطبيق باستخدام New-AzApplicationGatewayBackendAddressPool. تكوين إعدادات تجمعات عناوين الواجهة الخلفية باستخدام New-AzApplicationGatewayBackendHttp الإعدادات.

$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30

إنشاء وحدة الاستماع والقاعدة الافتراضية

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

أنشئ وحدة استماع باسم mydefaultListener باستخدام New-AzApplicationGatewayHttpListener مع تكوين الواجهة الأمامية ومنفذ الواجهة الأمامية الذي قمت بإنشائه مسبقا. يلزم وجود قاعدة لوحدة الاستماع لمعرفة أي مجموعة واجهة خلفية يستخدم لنسبة استخدام الشبكة الواردة. قم بإنشاء قاعدة أساسية تسمى rule1 باستخدام New-AzApplicationGatewayRequestRoutingRule.

$listenerv4 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv4 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv4 `
-FrontendPort $frontendport
$listenerv6 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv6 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv6 `
-FrontendPort $frontendport
$frontendRulev4 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv4 `
-RuleType Basic `
-Priority 10 `
-HttpListener $listenerv4 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolSettings 
$frontendRulev6 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv6 `
-RuleType Basic `
-Priority 1 `
-HttpListener $listenerv6 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolsettings

أنشئ بوابة التطبيق

الآن بعد أن قمت بإنشاء الموارد الداعمة الضرورية، يمكنك تحديد معلمات لبوابة التطبيق باستخدام New-AzApplicationGatewaySku. يتم إنشاء بوابة التطبيق الجديدة باستخدام New-AzApplicationGateway. يستغرق إنشاء بوابة التطبيق بضع دقائق.

$sku = New-AzApplicationGatewaySku `
  -Name Standard_v2 `
  -Tier Standard_v2 `
  -Capacity 2
New-AzApplicationGateway `
-Name myipv6AppGW `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $backendPool `
-BackendHttpSettingsCollection $poolsettings `
-FrontendIpConfigurations @($fipconfigv4, $fipconfigv6) `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners @($listenerv4, $listenerv6) `
-RequestRoutingRules @($frontendRulev4, $frontendRulev6) `
-Sku $sku `
-Force

خوادم الواجهة الخلفية

الآن بعد أن قمت بإنشاء بوابة التطبيق، يمكنك إنشاء الأجهزة الظاهرية الخلفية لاستضافة مواقع الويب. يمكن أن تتكون الواجهة الخلفية من NICs ومجموعات مقياس الجهاز الظاهري وعناوين IP العامة وعناوين IP الداخلية وأسماء المجال المؤهلة بالكامل (FQDN) والخلفيات متعددة المستأجرين مثل Azure App Service.

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

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

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

  • أنشئ عنوان IP عام لمضيف الأساس باستخدام New-AzPublicIpAddress.
  • إنشاء تكوين جهاز ظاهري باستخدام New-AzVMConfig.
  • إنشاء الأجهزة الظاهرية باستخدام New-AzVM.

إشعار

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

$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myipv6AppGW
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
  $nic = New-AzNetworkInterface `
    -Name myNic$i `
    -ResourceGroupName myResourceGroupAG `
    -Location EastUS `
    -Subnet $subnet `
    -ApplicationGatewayBackendAddressPool $backendpool
  $vm = New-AzVMConfig `
    -VMName myVM$i `
    -VMSize Standard_DS2_v2
  Set-AzVMOperatingSystem `
    -VM $vm `
    -Windows `
    -ComputerName myVM$i `
    -Credential $cred
  Set-AzVMSourceImage `
    -VM $vm `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
  Add-AzVMNetworkInterface `
    -VM $vm `
    -Id $nic.Id
  Set-AzVMBootDiagnostic `
    -VM $vm `
    -Disable
  New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
  Set-AzVMExtension `
    -ResourceGroupName myResourceGroupAG `
    -ExtensionName IIS `
    -VMName myVM$i `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS
}

البحث عن عنوان IP العام لبوابة التطبيق

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6

تعيين اسم DNS إلى عنوان IPv6 للواجهة الأمامية

يجعل اسم DNS الاختبار أسهل لبوابة تطبيق IPv6. يمكنك تعيين اسم DNS عام باستخدام المجال الخاص بك والمسجل أو يمكنك إنشاء اسم في azure.com.

استخدم الأوامر التالية لتعيين اسم في azure.com. يتم تعيين الاسم إلى التسمية التي تحددها + المنطقة + cloudapp.azure.com. في هذا المثال، يتم إنشاء سجل AAAA myipv6appgw في مساحة الاسم eastus.cloudapp.azure.com:

$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp

اختبار بوابة التطبيق

في السابق، قمنا بتعيين اسم DNS myipv6appgw.eastus.cloudapp.azure.com إلى عنوان IPv6 العام لبوابة التطبيق. لاختبار هذا الاتصال:

  1. باستخدام Cmdlet Invoke-WebRequest، قم بإصدار طلب إلى الواجهة الأمامية IPv6.
  2. تحقق من الاستجابة. تتحقق استجابة صحيحة من myVM1 أو myVM2 من إنشاء بوابة التطبيق بنجاح ويمكنها الاتصال بالواجهة الخلفية بنجاح. إذا قمت بإصدار الأمر عدة مرات، فإن البوابة تقوم بتحميل الأرصدة والاستجابة للطلبات اللاحقة من خادم خلفية مختلف.
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2

هام

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

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

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

Remove-AzResourceGroup -Name myResourceGroupAG

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