W Azure trzy różne obiekty nazywa się adresem bramy. Adres prywatny jest przydzielany z GatewaySubnet. Adres publiczny to osobny zasób publicznego IP, na który wskazuje konfiguracja IP bramy. Subskrypcja i środowisko chmury to kontekst, za pomocą którego powłoka znajduje jeden lub drugi. Zmień jeden, a pozostałe dwa zostaną na miejscu — dlatego prace nad adresami tak często zatrzymują się w połowie.

Wykonuję te zmiany w czterech etapach: inwentaryzacja obiektów, decyzja, czy publiczny IP przenosi się na istniejącej bramie, czy brama jest odbudowywana, zastosowanie zmiany, dopóki stary adres jest jeszcze w zasięgu, a następnie weryfikacja każdego tunelu z obu stron przed usunięciem czegokolwiek. Etapem, który się pomija, jest inwentaryzacja.

Który z trzech obiektów naprawdę zmieniasz

Nazwij obiekt, zanim otworzysz portal. Brama VPN bierze adres prywatny z podsieci, która musi nazywać się dokładnie GatewaySubnet, a Azure przydziela go z tego prefiksu; nie ma ogólnego pola do jego przypięcia. Adres wydaje się stabilny tylko dlatego, że podsieć jest stabilna. Zmień adresowanie podsieci albo odbuduj bramę, a adres przesunie się razem z nimi.

Adres publiczny można edytować, ale reguły SKU decydują, czy edycja jest dozwolona. Brama Basic łączy się z dynamicznym publicznym IP Basic, jednostki SKU VpnGw wymagają statycznego Standard, a brama strefowo nadmiarowa wymaga publicznego IP Standard z tymi samymi strefami. Zła jednostka SKU jest odrzucana, zanim tunel upadnie.

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

Inwentaryzacja, zanim cokolwiek się ruszy

Najpierw udowodnij subskrypcję, bo bez niej reszta inwentaryzacji jest bezwartościowa. Zapisz bramę, jej konfiguracje IP i każde połączenie, które się na niej kończy, a wynik trzymaj obok rejestru zmiany.

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 zasobów znaczą więcej niż nazwy. Połączenie przechowuje odwołania do bramy i do lokalnej bramy sieciowej, a te identyfikatory pojawiają się w skryptach, alertach i przypisaniach zasad, których nikt nie pamięta. Wypisz też to, co jest poza Azure: nazwę DNS wskazującą adres, listę uprawnień partnera, firewall oddziału przypinający stary IP.

Wymiana publicznego IP na działającej bramie

Najpierw utwórz adres zastępczy, w tym samym regionie i z zestawem stref pasującym do bramy, a stary zasób zostaw na miejscu. Potem odbuduj konfigurację IP i wyślij aktualizację jednym wywołaniem. To wywołanie zastępuje całą kolekcję konfiguracji, więc brama aktywna-aktywna potrzebuje obu, inaczej zostanie jeden tunel, a drugi przepadnie.

$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

Tunele padają, gdy brama jest ponownie przygotowywana. Druga strona potrzebuje harmonogramu: firewall partnera nadal oferuje stary adres, dopóki ktoś go nie zmieni, a połączenie, którego drugi koniec oczekuje poprzedniego IP, pozostaje w dół, niezależnie od tego, jak zdrowy wygląda Azure. Przed oknem obniż TTL DNS.

Klienci punkt-lokalizacja potrzebują nowego profilu, bo pobrany pakiet zawiera punkt końcowy. Własna nazwa DNS przed bramą oszczędza redystrybucję: zachowaj nazwę, zmień rekord.

Przeniesienie bramy do innej subskrypcji

Przeniesienie zasobów przenosi zestaw, a sama brama jest jego najmniej użytecznym elementem. Sieć wirtualna, zasoby publicznego IP, lokalne bramy sieciowe i połączenia podróżują razem, bo każde trzyma odwołanie do innego. Docelowa subskrypcja musi być w tym samym dzierżawcy, Microsoft.Network musi być tam zarejestrowany, a ty potrzebujesz prawa zapisu po obu stronach.

Walidacja uruchamia się przed jakąkolwiek zmianą, więc odrzucone przeniesienie zostawia zasoby na miejscu. Dlatego przeniesienie zasługuje na próbę przed odbudową: udane przeniesienie zabiera publiczny IP ze sobą, więc partnerzy i listy uprawnień działają dalej, a odbudowana brama rzadko zwraca ten sam adres.

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

Przeczytaj błąd walidacji, zamiast go powtarzać. Typowe przyczyny to pozostawiona zależność, typ zasobu, którego nie można przenieść, albo blokada na jednej z grup zasobów. Jeśli przeniesienie jest niemożliwe, odbuduj w miejscu docelowym i przełącz: potwierdź routing i uwierzytelnianie z podsieci testowej, zatrzymaj stare połączenia zamiast je usuwać, a potem usuń starą ścieżkę w kolejnym oknie.

Gdy brama wygląda na brakującą, sprawdź kontekst

Błąd nie znaleziono to zwykle błąd zakresu. Konto z kilkoma subskrypcjami kieruje cmdlet na niewłaściwą, a komunikat obwinia zasób. Szukaj obiektu po pełnym ID zasobu: ID niesie własną subskrypcję, więc jeśli się rozwiąże, niczego nie brakuje, a domyślny kontekst jest błędny.

Dwie kolejne niezgodności czyta się tak samo. Brama chmury komercyjnej nie istnieje w sesji skierowanej do środowiska rządowego lub chińskiego, a starsze wersje modułów pomijają kształty zasobów, które API już zwraca. Przypnij subskrypcję, dopasuj środowisko, a potem otwórz zgłoszenie.

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

Sprawdź z obu stron przed sprzątaniem

Połączono to stan, nie dowód. Sprawdź stan tunelu dla każdego połączenia, stan peera BGP przy routingu dynamicznym i efektywne trasy w podsieci obciążenia. Potem przepuść jedno prawdziwe żądanie przez aplikację zależną od tunelu. Połączenie może zgłaszać połączenie, choć potrzebnego prefiksu nie ma w tabeli tras.

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

Trzymaj stary publiczny IP odłączony, a nie usunięty, dopóki okno wycofania się nie zamknie, i zapisz zmiany po stronie partnera i firewalla, aby można je było cofnąć po kolei.

  • Kontekst przypięty do subskrypcji właściciela bramy
  • Stary publiczny IP zachowany, jego zależności zapisane
  • Każde połączenie zielone i jedno prawdziwe żądanie przez nie
  • Użytkownicy punkt-lokalizacja przeniesieni na odświeżony profil
  • Rekord DNS zmieniony, poprzednia wartość zapisana

Powiązane artykuły