Trong Azure có ba đối tượng khác nhau được gọi là địa chỉ cổng. Địa chỉ riêng được cấp từ GatewaySubnet. Địa chỉ công khai là một tài nguyên IP công khai riêng mà cấu hình IP của cổng trỏ tới. Đăng ký và môi trường đám mây là ngữ cảnh mà shell của bạn dùng để tìm một trong hai. Đổi một cái thì hai cái kia vẫn nguyên chỗ, vì thế công việc địa chỉ hay dừng giữa chừng.

Tôi thực hiện những thay đổi này theo bốn giai đoạn: kiểm kê đối tượng, quyết định IP công khai chuyển trên cổng hiện có hay cổng được dựng lại, áp dụng thay đổi khi địa chỉ cũ vẫn còn trong tay, rồi xác minh từng đường hầm từ cả hai đầu trước khi xóa bất cứ thứ gì. Giai đoạn bị bỏ qua là kiểm kê.

Bạn thực sự đang đổi đối tượng nào trong ba đối tượng

Đặt tên cho đối tượng trước khi mở cổng thông tin. Cổng VPN lấy địa chỉ riêng từ một mạng con phải có tên chính xác là GatewaySubnet, và Azure cấp nó từ tiền tố đó; không có trường chung để ghim nó. Địa chỉ trông ổn định chỉ vì mạng con ổn định. Đổi địa chỉ mạng con hoặc dựng lại cổng thì nó di chuyển theo.

Địa chỉ công khai có thể sửa, nhưng quy tắc SKU quyết định việc sửa có hợp lệ hay không. Cổng Basic đi với IP công khai động Basic, SKU VpnGw cần Standard tĩnh, và cổng dự phòng theo vùng cần IP công khai Standard có cùng các vùng. SKU sai bị từ chối trước khi một đường hầm rơi.

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

Kiểm kê trước khi bất cứ thứ gì dịch chuyển

Chứng minh đăng ký trước, vì phần còn lại của bản kiểm kê vô giá trị nếu thiếu nó. Ghi lại cổng, các cấu hình IP và mọi kết nối kết thúc trên đó, và giữ kết quả bên cạnh biên bản thay đổi.

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 tài nguyên quan trọng hơn tên. Một kết nối giữ tham chiếu tới cổng và tới một cổng mạng cục bộ, và những ID đó xuất hiện trong script, cảnh báo và gán chính sách mà không ai nhớ. Liệt kê cả những gì nằm ngoài Azure: tên DNS trỏ tới địa chỉ, danh sách cho phép của đối tác, tường lửa chi nhánh ghim IP cũ.

Thay IP công khai trên cổng đang chạy

Trước tiên tạo địa chỉ thay thế, trong cùng vùng và với bộ vùng khớp với cổng, và để tài nguyên cũ tại chỗ. Sau đó dựng lại cấu hình IP và gửi bản cập nhật trong một lần gọi. Lần gọi đó thay thế toàn bộ tập cấu hình, nên cổng hoạt động-hoạt động cần cả hai, nếu không bạn giữ một đường hầm và mất đường còn lại.

$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

Các đường hầm rơi trong khi cổng được cấp lại. Phía xa cần lịch trình: tường lửa đối tác tiếp tục chào địa chỉ cũ cho đến khi có người sửa, và kết nối mà đầu xa chờ IP trước đó vẫn nằm dưới dù Azure trông khỏe đến đâu. Hạ TTL DNS trước khung giờ.

Máy khách điểm-nối-điểm cần hồ sơ mới, vì gói tải về mang theo điểm cuối. Tên DNS tùy chỉnh trước cổng giúp bạn khỏi phải phân phối lại: giữ tên, đổi bản ghi.

Chuyển cổng sang đăng ký khác

Chuyển tài nguyên di dời một tập, và cổng đứng một mình là thành viên ít hữu ích nhất. Mạng ảo, tài nguyên IP công khai, cổng mạng cục bộ và các kết nối đi cùng nhau vì mỗi thứ giữ tham chiếu tới thứ khác. Đăng ký đích phải ở cùng tenant, Microsoft.Network phải được đăng ký ở đó, và bạn cần quyền ghi ở cả hai phía.

Kiểm tra chạy trước mọi thay đổi, nên một lần chuyển bị từ chối để tài nguyên nguyên chỗ. Vì thế việc chuyển đáng được thử trước khi dựng lại: chuyển thành công mang theo IP công khai, nhờ đó đối tác và danh sách cho phép tiếp tục hoạt động, trong khi cổng dựng lại hiếm khi trả lại đúng địa chỉ đó.

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

Đọc lỗi kiểm tra thay vì lặp lại nó. Nguyên nhân thường gặp là phụ thuộc bị bỏ lại, loại tài nguyên không thể chuyển, hoặc khóa trên một trong các nhóm tài nguyên. Nếu không thể chuyển, hãy dựng lại ở đích và chuyển đổi: xác nhận định tuyến và xác thực từ mạng con thử nghiệm, dừng các kết nối cũ thay vì xóa, rồi gỡ đường cũ trong khung giờ sau.

Khi cổng có vẻ mất tích, hãy kiểm tra ngữ cảnh

Lỗi không tìm thấy thường là lỗi phạm vi. Tài khoản có nhiều đăng ký trỏ cmdlet vào sai đăng ký, và thông báo đổ lỗi cho tài nguyên. Hãy tra đối tượng bằng ID tài nguyên đầy đủ: ID mang đăng ký của chính nó, nên nếu phân giải được thì không thiếu gì và ngữ cảnh mặc định của bạn sai.

Hai điểm không khớp nữa đọc theo cùng cách. Cổng đám mây thương mại không tồn tại trong phiên hướng tới môi trường chính phủ hoặc Trung Quốc, và các phiên bản mô-đun cũ bỏ sót dạng tài nguyên mà API đã trả về. Ghim đăng ký, khớp môi trường, rồi mở hồ sơ.

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

Xác minh từ hai phía trước khi dọn dẹp

Đã kết nối là trạng thái, không phải bằng chứng. Kiểm tra trạng thái đường hầm theo từng kết nối, trạng thái BGP nếu dùng định tuyến động, và tuyến hiệu lực trên mạng con khối lượng công việc. Sau đó đưa một yêu cầu thật qua ứng dụng phụ thuộc đường hầm. Một kết nối có thể báo đã kết nối trong khi tiền tố bạn cần không có trong bảng tuyến.

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

Giữ IP công khai cũ ở trạng thái ngắt kết nối thay vì xóa cho đến khi khung khôi phục đóng lại, và ghi lại các sửa đổi phía đối tác và tường lửa để có thể hoàn nguyên theo thứ tự.

  • Ngữ cảnh được ghim vào đăng ký sở hữu cổng
  • IP công khai cũ được giữ, các phụ thuộc đã ghi
  • Mọi kết nối xanh và một yêu cầu thật đi qua
  • Người dùng điểm-nối-điểm đã chuyển sang hồ sơ cập nhật
  • Bản ghi DNS đã đổi và giá trị trước đó đã ghi lại

Bài viết liên quan