ثلاثة كائنات مختلفة تُعرف في Azure بأنها عنوان البوابة. العنوان الخاص يُخصص من GatewaySubnet. والعنوان العام هو مورد IP عام منفصل تشير إليه تهيئة IP للبوابة. أما الاشتراك وبيئة السحابة فهما السياق الذي تستخدمه صدفة الأوامر للعثور على أي منهما. غيّر واحدًا فيبقى الاثنان الآخران في مكانهما، ولهذا كثيرًا ما يتوقف العمل على العناوين في منتصفه.

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

أي الكائنات الثلاثة تغيّره فعليًا

سمِّ الكائن قبل أن تفتح المدخل. تأخذ بوابة VPN عنوانها الخاص من شبكة فرعية يجب أن تُسمى بالضبط GatewaySubnet، ويخصصه Azure من تلك البادئة؛ ولا يوجد حقل عام لتثبيته. يبدو العنوان ثابتًا فقط لأن الشبكة الفرعية ثابتة. أعد عنونة الشبكة أو أعد بناء البوابة فينتقل معها.

العنوان العام قابل للتحرير، لكن قواعد SKU تحدد شرعية التعديل. بوابة Basic تقترن بـ IP عام ديناميكي Basic، وتحتاج SKU من نوع VpnGw إلى عنوان Standard ثابت، وتحتاج البوابة الزائدة عن المناطق إلى IP عام Standard يحمل المناطق نفسها. يُرفض SKU الخاطئ قبل أن يسقط أي نفق.

ObjectWhere it livesWhat a change forces
Private addressGatewaySubnet prefix, assigned at deploymentSubnet resize or rebuild, then routes, NSGs and peer review
Public addressPublic IP resource referenced by the IP configurationGateway reprovision, peer and allowlist edits, new client profiles
Subscription contextYour PowerShell or CLI sessionNothing in Azure, and it clears most not-found errors

الجرد قبل أن يتحرك شيء

أثبت الاشتراك أولًا، فباقي الجرد بلا قيمة بدونه. سجّل البوابة وتهيئات IP الخاصة بها وكل اتصال ينتهي عندها، واحفظ المخرجات بجانب سجل التغيير.

Get-AzContext | Select-Object Subscription, Tenant, Environment
Get-AzVirtualNetworkGateway -ResourceGroupName rg-hub -Name gw-hub |
  Select-Object Name, Sku, EnableActiveActive, IpConfigurations
Get-AzVirtualNetworkGatewayConnection -ResourceGroupName rg-hub |
  Select-Object Name, ConnectionStatus, ConnectionType

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

تبديل IP العام على البوابة العاملة

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

$gw = Get-AzVirtualNetworkGateway -ResourceGroupName rg-hub -Name gw-hub
$pip = New-AzPublicIpAddress -Name pip-gw-hub-2 -ResourceGroupName rg-hub `
  -Location westeurope -AllocationMethod Static -Sku Standard
$conf = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 `
  -SubnetId $gw.IpConfigurations[0].Subnet.Id -PublicIpAddressId $pip.Id
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw -IpConfigurations $conf

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

يحتاج عملاء نقطة-إلى-موقع إلى ملف تعريف جديد، لأن الحزمة التي تُنزَّل تحمل نقطة النهاية. وجود اسم DNS مخصص أمام البوابة يعفيك من إعادة التوزيع: أبقِ الاسم وغيّر السجل.

نقل البوابة إلى اشتراك آخر

نقل المورد ينقل مجموعة، والبوابة وحدها هي أقل أعضائها فائدة. تنتقل الشبكة الظاهرية وموارد IP العامة وبوابات الشبكة المحلية والاتصالات معًا لأن كلًا منها يحمل مرجعًا إلى الآخر. يجب أن يكون الاشتراك الهدف في المستأجر نفسه، ويجب تسجيل Microsoft.Network فيه، وتحتاج إلى صلاحية كتابة على الجانبين.

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

az resource move --destination-group rg-hub `
  --destination-subscription-id 00000000-0000-0000-0000-000000000000 `
  --ids /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-hub/providers/Microsoft.Network/virtualNetworkGateways/gw-hub

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

حين تبدو البوابة مفقودة، افحص السياق

خطأ عدم العثور خطأ نطاق عادة. الحساب الذي يملك اشتراكات عدة يوجه cmdlet إلى الاشتراك الخاطئ، وتلوم الرسالة المورد. ابحث عن الكائن بمعرفه الكامل بدلًا من ذلك: المعرف يحمل اشتراكه، فإن حُلّ فليس هناك شيء مفقود وسياقك الافتراضي خاطئ.

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

Set-AzContext -SubscriptionId 11111111-1111-1111-1111-111111111111
Get-AzResource -ResourceId /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-hub/providers/Microsoft.Network/virtualNetworkGateways/gw-hub

تحقق من الطرفين قبل التنظيف

حالة «متصل» حالة وليست دليلًا. افحص حالة النفق لكل اتصال، وحالة نظير BGP إن كنت تستخدم التوجيه الديناميكي، والمسارات الفعلية على شبكة فرعية للعمل. ثم مرّر طلبًا حقيقيًا واحدًا عبر تطبيق يعتمد على النفق. قد يبلغ اتصال عن نفسه بأنه متصل بينما البادئة التي تحتاجها غائبة عن جدول التوجيه.

Get-AzVirtualNetworkGatewayBGPPeerStatus -VirtualNetworkGatewayName gw-hub -ResourceGroupName rg-hub
Get-AzEffectiveRouteTable -NetworkInterfaceName nic-app -ResourceGroupName rg-app

أبقِ IP العام القديم غير مرتبط بدلًا من حذفه حتى تُغلق نافذة الرجوع، واكتب تعديلات النظراء وجدار الحماية كي يمكن عكسها بالترتيب.

  • السياق مثبت على الاشتراك الذي يملك البوابة
  • IP العام القديم محفوظ وتبعياته مكتوبة
  • كل اتصال أخضر وطلب حقيقي واحد عبره
  • مستخدمو نقطة-إلى-موقع نُقلوا إلى ملف التعريف المحدّث
  • سجل DNS تغيّر وسُجلت قيمته السابقة

مقالات ذات صلة