Azure에서는 서로 다른 세 객체가 게이트웨이 주소라고 불립니다. 개인 주소는 GatewaySubnet에서 할당됩니다. 공용 주소는 게이트웨이의 IP 구성이 가리키는 별도의 공용 IP 리소스입니다. 구독과 클라우드 환경은 셸이 둘 중 하나를 찾는 컨텍스트입니다. 하나를 바꿔도 나머지 둘은 제자리에 있기에 주소 작업은 자주 중간에 멈춥니다.

이 변경을 네 단계로 진행합니다. 객체 인벤터리, 공용 IP를 기존 게이트웨이에서 옮길지 게이트웨이를 다시 만들지 결정, 이전 주소가 남아 있는 동안 변경 적용, 그리고 무엇이든 삭제하기 전에 양쪽 끝에서 모든 터널 검증입니다. 사람들이 건너뛰는 단계가 인벤터리입니다.

세 객체 중 실제로 무엇을 바꾸는가

포털을 열기 전에 객체를 지목합니다. VPN 게이트웨이는 정확히 GatewaySubnet이라는 이름의 서브넷에서 개인 주소를 받으며 Azure가 그 접두사에서 할당합니다. 고정하는 일반 필드는 없습니다. 주소가 안정적으로 보이는 것은 서브넷이 안정적이기 때문입니다. 서브넷 주소를 바꾸거나 게이트웨이를 다시 만들면 함께 움직입니다.

공용 주소는 편집할 수 있지만 편집이 적법한지는 SKU 규칙이 정합니다. Basic 게이트웨이는 Basic 동적 공용 IP와 짝지어지고, VpnGw SKU는 Standard 정적이 필요하며, 영역 중복 게이트웨이는 같은 영역을 가진 Standard 공용 IP가 필요합니다. 잘못된 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가 아무리 건강해 보여도 내려간 채로 있습니다. 작업 창 전에 DNS TTL을 낮춥니다.

지점 간 클라이언트는 새 프로필이 필요합니다. 내려받은 패키지가 엔드포인트를 담기 때문입니다. 게이트웨이 앞에 사용자 지정 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

검증 실패는 다시 시도하지 말고 읽으세요. 흔한 원인은 남겨진 종속성, 이동할 수 없는 리소스 종류, 리소스 그룹 중 하나의 잠금입니다. 이동이 불가능하면 대상에서 다시 만들고 전환합니다. 테스트 서브넷에서 라우팅과 인증을 확인하고, 이전 연결은 삭제 대신 중지하고, 이전 경로는 다음 작업 창에서 제거합니다.

게이트웨이가 없어 보이면 컨텍스트를 확인하세요

찾을 수 없음 오류는 보통 범위 오류입니다. 구독이 여러 개인 계정이 cmdlet을 잘못된 구독으로 보내고 메시지는 리소스를 탓합니다. 대신 전체 리소스 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 레코드 변경, 이전 값 기록

관련 글