În Azure, trei obiecte diferite se numesc adresa gateway-ului. Adresa privată este alocată din GatewaySubnet. Adresa publică este o resursă de IP public separată către care indică configurația IP a gateway-ului. Abonamentul și mediul cloud sunt contextul cu care shell-ul găsește una sau alta. Schimbi una și celelalte două rămân pe loc, de aceea lucrul cu adrese se oprește atât de des la jumătate.

Fac aceste schimbări în patru etape: inventarul obiectelor, decizia dacă IP-ul public se mută pe gateway-ul existent sau gateway-ul este reconstruit, aplicarea schimbării cât timp adresa veche este încă la îndemână, și apoi verificarea fiecărui tunel din ambele capete înainte de a șterge ceva. Etapa pe care oamenii o sar este inventarul.

Pe care dintre cele trei obiecte îl schimbi de fapt

Numește obiectul înainte de a deschide portalul. Un gateway VPN își ia adresa privată dintr-o subrețea care trebuie să se numească exact GatewaySubnet, iar Azure o alocă din acel prefix; nu există un câmp general pentru a o fixa. Adresa pare stabilă doar pentru că subrețeaua este stabilă. Readresează subrețeaua sau reconstruiește gateway-ul și se mută împreună cu ele.

Adresa publică este editabilă, dar regulile SKU decid dacă editarea este legală. Un gateway Basic se asociază cu un IP public dinamic Basic, SKU-urile VpnGw necesită un Standard static, iar un gateway redundant pe zone necesită un IP public Standard cu aceleași zone. SKU-ul greșit este respins înainte ca un tunel să cadă.

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

Inventar înainte de a se mișca ceva

Dovedește mai întâi abonamentul, fiindcă fără el restul inventarului nu valorează nimic. Înregistrează gateway-ul, configurațiile lui IP și fiecare conexiune care se termină pe el, și păstrează rezultatul lângă jurnalul schimbării.

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-urile resurselor contează mai mult decât numele. O conexiune păstrează referințe la gateway și la un gateway de rețea local, iar acele ID-uri apar în scripturi, alerte și atribuiri de politici pe care nimeni nu le ține minte. Listează și ce este în afara Azure: numele DNS care duce la adresă, lista de permisiuni a partenerului, firewall-ul sucursalei care fixează IP-ul vechi.

Înlocuirea IP-ului public pe gateway-ul în funcțiune

Creează mai întâi adresa de înlocuire, în aceeași regiune și cu setul de zone care se potrivește gateway-ului, și lasă resursa veche pe loc. Apoi reconstruiește configurația IP și trimite actualizarea într-un singur apel. Acel apel înlocuiește întreaga colecție de configurații, așa că un gateway activ-activ are nevoie de ambele, altfel păstrezi un tunel și îl pierzi pe celălalt.

$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

Tunelurile cad în timp ce gateway-ul este reaprovizionat. Partea îndepărtată are nevoie de programare: un firewall al partenerului continuă să ofere adresa veche până când cineva îl editează, iar o conexiune al cărei capăt îndepărtat așteaptă IP-ul anterior rămâne jos oricât de sănătos ar arăta Azure. Scade TTL-ul DNS înainte de fereastră.

Clienții punct-la-site au nevoie de un profil nou, fiindcă pachetul descărcat poartă punctul final. Un nume DNS propriu în fața gateway-ului te scutește de redistribuire: păstrează numele, schimbă înregistrarea.

Mutarea gateway-ului într-un alt abonament

Mutarea resurselor deplasează un set, iar gateway-ul singur este membrul lui cel mai puțin util. Rețeaua virtuală, resursele de IP public, gateway-urile de rețea locală și conexiunile călătoresc împreună pentru că fiecare ține o referință la altul. Abonamentul țintă trebuie să fie în același tenant, Microsoft.Network trebuie să fie înregistrat acolo, și ai nevoie de acces de scriere pe ambele părți.

Validarea rulează înainte de orice schimbare, așa că o mutare respinsă lasă resursele pe loc. De aceea mutarea merită o încercare înainte de reconstrucție: o mutare reușită duce IP-ul public cu ea, așa că partenerii și listele de permisiuni continuă să funcționeze, în timp ce un gateway reconstruit rareori returnează aceeași 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

Citește eșecul de validare în loc să îl repeți. Cauzele obișnuite sunt o dependență lăsată în urmă, un tip de resursă care nu poate fi mutat sau un blocaj pe vreunul dintre grupurile de resurse. Dacă mutarea este imposibilă, reconstruiește în țintă și comută: confirmă rutarea și autentificarea dintr-o subrețea de test, oprește conexiunile vechi în loc să le ștergi, apoi elimină vechea cale într-o fereastră ulterioară.

Când gateway-ul pare lipsă, verifică contextul

Eroarea nu a fost găsit este de obicei o eroare de domeniu. Un cont cu mai multe abonamente îndreaptă un cmdlet spre cel greșit, iar mesajul dă vina pe resursă. Caută obiectul după ID-ul complet al resursei: ID-ul poartă propriul abonament, așa că dacă se rezolvă, nu lipsește nimic și contextul implicit este greșit.

Încă două nepotriviri se citesc la fel. Un gateway de cloud comercial nu există într-o sesiune îndreptată spre un mediu guvernamental sau chinezesc, iar versiunile vechi de module ratează forme de resursă pe care API-ul le returnează deja. Fixează abonamentul, potrivește mediul, apoi deschide un caz.

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

Verifică din ambele capete înainte de curățenie

Conectat este o stare, nu o dovadă. Verifică starea tunelului pentru fiecare conexiune, starea partenerului BGP dacă folosești rutare dinamică și rutele efective pe o subrețea de lucru. Apoi trece o cerere reală printr-o aplicație care depinde de tunel. O conexiune poate raporta conectat în timp ce prefixul de care ai nevoie lipsește din tabelul de rute.

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

Ține IP-ul public vechi deconectat, nu șters, până se închide fereastra de revenire, și notează modificările la partener și firewall ca să poată fi inversate în ordine.

  • Context fixat la abonamentul care deține gateway-ul
  • IP public vechi păstrat, dependențele lui notate
  • Fiecare conexiune verde și o cerere reală prin ea
  • Utilizatorii punct-la-site mutați pe profilul actualizat
  • Înregistrarea DNS schimbată și valoarea anterioară notată

Articole similare