Zmiana publicznego adresu IP bramy VPN platformy Azure i przeniesienie subskrypcji
Procedura wymiany publicznego IP bramy VPN i przenoszenia jej między subskrypcjami, wraz z inwentaryzacją, wycofaniem zmian i kontrolami kontekstu, które utrzymują tunele.
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.
| Object | Where it lives | What a change forces |
|---|---|---|
| Private address | GatewaySubnet prefix, assigned at deployment | Subnet resize or rebuild, then routes, NSGs and peer review |
| Public address | Public IP resource referenced by the IP configuration | Gateway reprovision, peer and allowlist edits, new client profiles |
| Subscription context | Your PowerShell or CLI session | Nothing 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