ใน 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

ID ของทรัพยากรสำคัญกว่าชื่อ การเชื่อมต่อเก็บการอ้างอิงถึงเกตเวย์และเกตเวย์เครือข่ายภายใน และ ID เหล่านั้นปรากฏในสคริปต์ การแจ้งเตือน และการมอบหมายนโยบายที่ไม่มีใครจำได้ ลงรายการสิ่งที่อยู่นอก 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

อ่านความล้มเหลวของการตรวจสอบแทนการลองซ้ำ สาเหตุทั่วไปคือการพึ่งพาที่ตกค้าง ชนิดทรัพยากรที่ย้ายไม่ได้ หรือการล็อกบนกลุ่มทรัพยากรใดกลุ่มหนึ่ง ถ้าการย้ายเป็นไปไม่ได้ ให้สร้างใหม่ที่ปลายทางและสลับ: ยืนยันการกำหนดเส้นทางและการรับรองความถูกต้องจากซับเน็ตทดสอบ หยุดการเชื่อมต่อเก่าแทนการลบ แล้วนำเส้นทางเก่าออกในหน้าต่างถัดไป

เมื่อเกตเวย์ดูเหมือนหายไป ให้ตรวจบริบท

ข้อผิดพลาดไม่พบมักเป็นข้อผิดพลาดของขอบเขต บัญชีที่มีหลายการสมัครใช้งานชี้คำสั่งไปยังอันที่ผิด และข้อความกล่าวโทษทรัพยากร ให้ค้นหาวัตถุด้วย ID ทรัพยากรเต็มแทน: ID มีการสมัครใช้งานของตัวเอง ถ้าแก้ได้ก็ไม่มีอะไรหาย และบริบทเริ่มต้นของคุณผิด

ความไม่ตรงกันอีกสองอย่างอ่านแบบเดียวกัน เกตเวย์คลาวด์เชิงพาณิชย์ไม่มีอยู่ในเซสชันที่มุ่งไปยังสภาพแวดล้อมรัฐบาลหรือจีน และโมดูลเวอร์ชันเก่ามองข้ามรูปแบบทรัพยากรที่ API ส่งกลับแล้ว ปักหมุดการสมัครใช้งาน ให้สภาพแวดล้อมตรงกัน แล้วเปิดเคส

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 และบันทึกค่าเดิมไว้

บทความที่เกี่ยวข้อง