이 자습서에서는 향상된 아웃바운드 연결 및 확장성을 위해 허브 및 스포크 네트워크에서 Azure Firewall과 NAT 게이트웨이를 통합하는 방법에 대해 알아봅니다.
Azure Firewall는 백 엔드 가상 머신 확장 집합 인스턴스(최소 두 인스턴스)당 구성된 공용 IP 주소당 2,496개의 SNAT 포트를 제공합니다. 최대 250개의 공용 IP 주소를 Azure Firewall과 연결할 수 있습니다. 아키텍처 요구 사항 및 트래픽 패턴에 따라 Azure Firewall에서 제공할 수 있는 것보다 더 많은 SNAT 포트가 필요할 수 있습니다. 더 많은 SNAT 포트를 요구하면서 더 적은 공용 IP를 사용해야 할 수도 있습니다. NAT(Network Address Translation)아웃바운드 연결을 위한 더 나은 방법은 NAT 게이트웨이를 사용하는 것입니다. NAT 게이트웨이는 공용 IP 주소당 64,512개의 SNAT 포트를 제공하며 최대 16개의 공용 IP 주소와 함께 사용할 수 있습니다.
NAT 게이트웨이를 Azure Firewall 서브넷에 직접 구성하여 Azure Firewall과 통합할 수 있습니다. 이 연결은 아웃바운드 연결의 확장성 있는 방법을 제공합니다. 프로덕션 배포의 경우 허브 및 스포크 네트워크가 권장되며 방화벽은 자체 가상 네트워크에 있습니다. 워크로드 서버는 방화벽이 있는 허브 가상 네트워크와 동일한 지역에 피어링된 가상 네트워크입니다. 이 아키텍처 설정에서 NAT 게이트웨이는 피어링된 모든 스포크 가상 네트워크에 대해 허브 가상 네트워크에서 아웃바운드 연결을 제공할 수 있습니다.
참고
이 자습서에서 설명한 대로 허브 및 스포크 가상 네트워크 네트워크 아키텍처에 NAT 게이트웨이를 배포할 수 있지만 NAT 게이트웨이는 vWAN 아키텍처의 허브 가상 네트워크에서 지원되지 않습니다. vWAN 아키텍처에서 사용하려면 NAT 게이트웨이를 vWAN(보안 가상 허브)과 연결된 스포크 가상 네트워크에 직접 구성해야 합니다. Azure Firewall 아키텍처 옵션에 대한 자세한 내용은 Azure Firewall Manager 아키텍처 옵션은 무엇인가요?를 참조하세요.
이 자습서에서는 다음 작업 방법을 알아봅니다.
- 배포하는 동안 허브 가상 네트워크를 만들고 Azure Firewall 및 Azure Bastion 배포하기
- NAT 게이트웨이를 만들고 허브 가상 네트워크의 방화벽 서브넷과 연결하기
- 스포크 가상 네트워크 만들기
- 가상 네트워크 피어링 만들기
- 스포크 가상 네트워크에 대한 경로 테이블 만들기
- 허브 가상 네트워크에 대한 방화벽 정책 만들기
- NAT 게이트웨이를 통해 아웃바운드 연결을 테스트하는 가상 머신 만들기
필수 구성 요소
Azure Cloud Shell
Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스를 사용할 수 있습니다. Cloud Shell 미리 설치된 명령을 사용하여 로컬 환경에 아무것도 설치하지 않고도 이 문서의 코드를 실행할 수 있습니다.
Azure Cloud Shell을 시작하려면 다음을 수행합니다.
옵션 |
예제/링크 |
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다.
시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. |
|
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. |
|
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. |
|
Azure Cloud Shell을 사용하려면:
Cloud Shell을 시작합니다.
코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.
Windows 및 Linux에서 Ctrl+Shift+V 선택하거나 macOS에서 Cmd+Shift+V 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.
Enter를 선택하여 코드 또는 명령을 실행합니다.
PowerShell을 로컬로 설치하고 사용하도록 선택하는 경우, 이 문서에는 Azure PowerShell 모듈 버전 1.0.0 이상이 필요합니다. 설치되어 있는 버전을 확인하려면 Get-Module -ListAvailable Az
을 실행합니다. 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요. 또한 PowerShell을 로컬로 실행하는 경우 Connect-AzAccount
를 실행하여 Azure와 연결해야 합니다.
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 이 문서에는 Azure CLI 버전 2.0.28 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
허브 가상 네트워크 만들기
허브 가상 네트워크에는 Azure Firewall 및 NAT 게이트웨이와 연결된 방화벽 서브넷이 포함되어 있습니다. 다음 예제를 사용하여 허브 가상 네트워크를 만듭니다.
Azure Portal에 로그인합니다.
포털 맨 위에 있는 검색 상자에 가상 네트워크를 입력합니다. 검색 결과에서 가상 네트워크를 선택합니다.
+ 만들기를 선택합니다.
가상 네트워크 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
프로젝트 세부 정보 |
|
구독 |
구독을 선택합니다. |
리소스 그룹 |
새로 만들기를 선택합니다.
test-rg를 입력합니다.
확인을 선택합니다. |
인스턴스 세부 정보 |
|
이름 |
vnet-hub를 입력합니다. |
지역 |
(미국) 미국 중남부를 선택합니다. |
다음을 선택하여 보안 탭으로 이동합니다.
보안 탭의 Azure Bastion 섹션에서 Azure Bastion 사용을 선택합니다.
Azure Bastion은 브라우저를 사용하여 개인 IP 주소를 사용하여 SSH(보안 셸) 또는 RDP(원격 데스크톱 프로토콜)를 통해 가상 네트워크의 VM에 연결합니다. VM에는 공용 IP 주소, 클라이언트 소프트웨어 또는 특수 구성이 필요하지 않습니다. Azure Bastion에 대한 자세한 내용은 Azure Bastion을 참조하세요.
참고
시간당 가격 책정은 아웃바운드 데이터 사용량에 관계없이 Bastion이 배포되는 순간부터 시작됩니다. 자세한 내용은 가격 책정 및 SKU를 참조하세요. 자습서 또는 테스트의 일부로 Bastion을 배포하는 경우 이 리소스 사용을 마친 후 삭제하는 것이 좋습니다.
Azure Bastion에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
Azure Bastion 호스트 이름 |
bastion을 입력합니다. |
Azure Bastion 공용 IP 주소 |
공용 IP 주소 만들기를 선택합니다.
이름 칸에 public-ip-bastion을 입력합니다.
확인을 선택합니다. |
보안 탭의 Azure Firewall 섹션에서 Azure Firewall 사용을 선택합니다.
Azure Firewall은 Azure Virtual Network 리소스를 보호하는 관리되는 클라우드 기반 네트워크 보안 서비스입니다. 고가용성 및 무제한 클라우드 확장성이 내장되어 있는 서비스 형태의 완전한 상태 저장 방화벽입니다. Azure Firewall에 대한 자세한 내용은 Azure Firewall을 참조하세요.
Azure Firewall에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
Azure Firewall 이름 |
방화벽을 입력합니다. |
계층 |
표준을 선택합니다. |
정책 |
새로 만들기를 선택합니다.
이름에 firewall-policy를 입력합니다.
확인을 선택합니다. |
Azure Firewall 공용 IP 주소 |
공용 IP 주소 만들기를 선택합니다.
이름에 public-ip-firewall을 입력합니다.
확인을 선택합니다. |
다음을 선택하여 IP 주소 탭으로 이동합니다.
검토 + 만들기를 선택합니다.
만들기를 선택합니다.
베스천 호스트와 방화벽을 배포하는 데 몇 분 정도 걸립니다. 배포하는 동안 가상 네트워크가 만들어지면 다음 단계를 진행할 수 있습니다.
New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다.
# Create resource group
$rgParams = @{
Name = 'test-rg'
Location = 'South Central US'
}
New-AzResourceGroup @rgParams
New-AzVirtualNetwork를 사용하여 허브 가상 네트워크를 만듭니다.
# Create hub virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-hub'
AddressPrefix = '10.0.0.0/16'
}
$hubVnet = New-AzVirtualNetwork @vnetParams
Add-AzVirtualNetworkSubnetConfig를 사용하여 Azure Firewall 및 Azure Bastion에 대한 서브넷을 만듭니다.
# Create default subnet
$subnetParams = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Firewall
$subnetParams = @{
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Bastion
$subnetParams = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Set-AzVirtualNetwork를 사용하여 가상 네트워크를 업데이트합니다.
# Create the virtual network
$hubVnet | Set-AzVirtualNetwork
New-AzPublicIpAddress를 사용하여 Azure Bastion에 대한 공용 IP를 만듭니다.
# Create public IP for Azure Bastion
$publicIpBastionParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-bastion'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1, 2, 3
}
$publicIpBastion = New-AzPublicIpAddress @publicIpBastionParams
New-AzBastion을 사용하여 Azure Bastion을 만듭니다.
# Create Azure Bastion
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-hub"
PublicIpAddressName = "public-ip-bastion"
PublicIPAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
}
New-AzBastion @bastionParams
New-AzPublicIpAddress를 사용하여 Azure Firewall에 대한 공용 IP를 만듭니다.
# Create public IP for Azure Firewall
$publicIpFirewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-firewall'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1, 2, 3
}
$publicIpFirewall = New-AzPublicIpAddress @publicIpFirewallParams
New-AzFirewallPolicy를 사용하여 방화벽 정책을 만듭니다.
# Create firewall policy
$firewallPolicyParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall-policy'
}
$firewallPolicy = New-AzFirewallPolicy @firewallPolicyParams
New-AzFirewall을 사용하여 Azure Firewall을 만듭니다.
# Create Azure Firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall'
VirtualNetworkName = 'vnet-hub'
PublicIpName = 'public-ip-firewall'
FirewallPolicyId = $firewallPolicy.Id
}
$firewall = New-AzFirewall @firewallParams
az group create를 사용하여 리소스 그룹을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
LOCATION="southcentralus"
az group create \
--name $RESOURCE_GROUP \
--___location $LOCATION
az network vnet create를 사용하여 허브 가상 네트워크를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
VNET_HUB_ADDRESS_PREFIX="10.0.0.0/16"
SUBNET_1_NAME="subnet-1"
SUBNET_1_PREFIX="10.0.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_HUB_NAME \
--address-prefix $VNET_HUB_ADDRESS_PREFIX \
--subnet-name $SUBNET_1_NAME \
--subnet-prefix $SUBNET_1_PREFIX
az network vnet subnet create를 사용하여 Azure Bastion에 대한 서브넷을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
BASTION_SUBNET_NAME="AzureBastionSubnet"
BASTION_SUBNET_PREFIX="10.0.1.0/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $BASTION_SUBNET_NAME \
--address-prefix $BASTION_SUBNET_PREFIX
az network vnet subnet create를 사용하여 Azure Firewall에 대한 서브넷을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
FIREWALL_SUBNET_PREFIX="10.0.1.64/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--address-prefix $FIREWALL_SUBNET_PREFIX
az network public-ip create를 사용하여 Azure Bastion에 대한 공용 IP를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
az network bastion create를 사용하여 Azure Bastion을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_NAME="bastion"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
VNET_HUB_NAME="vnet-hub"
az network bastion create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_NAME \
--public-ip-address $BASTION_PUBLIC_IP_NAME \
--vnet-name $VNET_HUB_NAME
az network public-ip create를 사용하여 Azure Firewall에 대한 공용 IP를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
az network firewall policy create를 사용하여 방화벽 정책을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_POLICY_NAME="firewall-policy"
az network firewall policy create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_POLICY_NAME
az network firewall create를 사용하여 Azure Firewall을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_NAME="firewall"
VNET_HUB_NAME="vnet-hub"
FIREWALL_POLICY_NAME="firewall-policy"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
az network firewall create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_NAME \
--vnet-name $VNET_HUB_NAME \
--firewall-policy $FIREWALL_POLICY_NAME \
--public-ip $FIREWALL_PUBLIC_IP_NAME
NAT 게이트웨이 만들기
모든 아웃바운드 인터넷 트래픽은 NAT Gateway를 인터넷으로 트래버스합니다. 다음 예제를 사용하여 허브 및 스포크 네트워크에 대한 NAT 게이트웨이를 만들고 AzureFirewallSubnet과 연결합니다.
포털 맨 위에 있는 검색 상자에 NAT 게이트웨이를 입력합니다. 검색 결과에서 NAT 게이트웨이를 선택합니다.
+ 만들기를 선택합니다.
NAT(Network Address Translation) 게이트웨이 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
프로젝트 세부 정보 |
|
구독 |
구독을 선택합니다. |
리소스 그룹 |
test-rg를 선택합니다. |
인스턴스 세부 정보 |
|
NAT Gateway 이름 |
nat-gateway를 입력합니다. |
지역 |
미국 중남부를 선택합니다. |
가용성 영역 |
영역 또는 영역 없음을 선택합니다. |
TCP 유휴 시간 제한(분) |
기본값 4를 그대로 둡니다. |
가용성 영역에 대한 자세한 내용은 NAT 게이트웨이 및 가용성 영역을 참조하세요.
다음: 아웃바운드 IP를 선택합니다.
공용 IP 주소의 아웃바운드 IP에서 새 공용 IP 주소 만들기를 선택합니다.
이름에 public-ip-nat를 입력합니다.
확인을 선택합니다.
다음: 서브넷을 선택합니다.
Virtual Network에서 vnet-hub-hub를 선택합니다.
서브넷 이름에서 AzureFirewallSubnet을 선택합니다.
검토 + 만들기를 선택합니다.
만들기를 선택합니다.
New-AzPublicIpAddress를 사용하여 NAT 게이트웨이에 대한 공용 IP를 만듭니다.
# Create public IP for NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Location = 'southcentralus'
Name = 'public-ip-nat'
AllocationMethod = 'Static'
Sku = 'Standard'
}
$publicIpNat = New-AzPublicIpAddress @publicIpNatParams
New-AzNatGateway를 사용하여 NAT Gateway를 만듭니다.
$natGatewayParams = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
PublicIpAddress = $publicIpNat
Sku = 'Standard'
IdleTimeoutInMinutes = 4
Location = 'South Central US'
}
$natGateway = New-AzNatGateway @natGatewayParams
Set-AzVirtualNetworkSubnetConfig를 사용하여 NAT 게이트웨이를 AzureFirewallSubnet과 연결합니다.
# Get the AzureFirewallSubnet from the hub virtual network
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.NatGateway = $natGateway
# Associate NAT gateway with AzureFirewallSubnet
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
NatGateway = $natGateway
}
Set-AzVirtualNetworkSubnetConfig @subnetParams
Set-AzVirtualNetwork를 사용하여 가상 네트워크를 업데이트합니다.
# Update the virtual network
$hubVnet | Set-AzVirtualNetwork
az network public-ip create를 사용하여 NAT 게이트웨이에 대한 공용 IP를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
az network nat gateway create를 사용하여 NAT 게이트웨이를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
NAT_GATEWAY_NAME="nat-gateway"
NAT_PUBLIC_IP_NAME="public-ip-nat"
IDLE_TIMEOUT="4"
az network nat gateway create \
--resource-group $RESOURCE_GROUP \
--name $NAT_GATEWAY_NAME \
--public-ip-address $NAT_PUBLIC_IP_NAME \
--idle-timeout $IDLE_TIMEOUT
az network vnet subnet update를 사용하여 NAT 게이트웨이를 AzureFirewallSubnet과 연결합니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
NAT_GATEWAY_NAME="nat-gateway"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--nat-gateway $NAT_GATEWAY_NAME
스포크 가상 네트워크를 만듭니다
스포크 가상 네트워크에는 NAT 게이트웨이에 대한 인터넷 트래픽 라우팅을 테스트하는 데 사용되는 테스트 가상 머신이 포함되어 있습니다. 다음 예제를 사용하여 스포크 네트워크를 만듭니다.
포털 맨 위에 있는 검색 상자에 가상 네트워크를 입력합니다. 검색 결과에서 가상 네트워크를 선택합니다.
+ 만들기를 선택합니다.
가상 네트워크 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
프로젝트 세부 정보 |
|
구독 |
구독을 선택합니다. |
리소스 그룹 |
test-rg를 선택합니다. |
인스턴스 세부 정보 |
|
이름 |
vnet-spoke를 입력합니다. |
지역 |
미국 중남부를 선택합니다. |
다음을 선택하여 보안 탭으로 이동합니다.
다음을 선택하여 IP 주소 탭으로 이동합니다.
IPv4 주소 공간의 IP 주소 탭에서 주소 공간 삭제를 선택하여 자동으로 채워진 주소 공간을 삭제합니다.
+ IPv4 주소 공간 추가를 선택합니다.
IPv4 주소 공간에 10.1.0.0을 입력합니다. 마스크 선택에서 기본값인 /16(65,536개 주소)을 그대로 둡니다.
서브넷 추가를 선택합니다.
서브넷 추가에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
서브넷 목적 |
기본값(기본값)을 그대로 둡니다. |
이름 |
subnet-private을 입력합니다. |
IPv4 |
|
IPv4 주소 범위 |
10.1.0.0/16(기본값)을 그대로 둡니다. |
시작 주소 |
10.1.0.0(기본값)을 그대로 둡니다. |
크기 |
/24(256개 주소)(기본값)를 그대로 둡니다. |
추가를 선택합니다.
검토 + 만들기를 선택합니다.
만들기를 선택합니다.
New-AzVirtualNetwork를 사용하여 스포크 가상 네트워크를 만듭니다.
# Create spoke virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-spoke'
AddressPrefix = '10.1.0.0/16'
}
$spokeVnet = New-AzVirtualNetwork @vnetParams
Add-AzVirtualNetworkSubnetConfig를 사용하여 스포크 가상 네트워크에 대한 서브넷을 만듭니다.
# Create subnet in spoke virtual network
$subnetParams = @{
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
VirtualNetwork = $spokeVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Set-AzVirtualNetwork를 사용하여 스포크 가상 네트워크를 업데이트합니다.
# Create the virtual network
$spokeVnet | Set-AzVirtualNetwork
az network vnet create를 사용하여 스포크 가상 네트워크를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
VNET_SPOKE_ADDRESS_PREFIX="10.1.0.0/16"
SPOKE_SUBNET_NAME="subnet-private"
SPOKE_SUBNET_PREFIX="10.1.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_SPOKE_NAME \
--address-prefix $VNET_SPOKE_ADDRESS_PREFIX \
--subnet-name $SPOKE_SUBNET_NAME \
--subnet-prefix $SPOKE_SUBNET_PREFIX
허브와 스포크 간에 피어링 만들기
가상 네트워크 피어링을 사용하여 허브를 스포크에 연결하고 스포크를 허브에 연결합니다. 다음 예제를 사용하여 허브와 스포크 간에 양방향 네트워크 피어링을 만듭니다.
포털 맨 위에 있는 검색 상자에 가상 네트워크를 입력합니다. 검색 결과에서 가상 네트워크를 선택합니다.
vnet-hub를 선택합니다.
설정에서 피어링을 선택합니다.
+추가를 선택합니다.
피어링 추가에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
원격 가상 네트워크 요약 |
|
피어링 링크 이름 |
vnet-spoke-to-vnet-hub를 입력합니다. |
가상 네트워크 배포 모델 |
리소스 관리자(기본값)를 그대로 둡니다. |
구독 |
구독을 선택합니다. |
가상 네트워크 |
vnet-spoke(test-rg)를 선택합니다. |
원격 가상 네트워크 피어링 설정 |
|
'vnet-spoke'가 'vnet-hub'에 액세스하도록 허용 |
선택한 상태(기본값)를 그대로 둡니다. |
'vnet-spoke'가 'vnet-hub'에서 전달된 트래픽을 수신하도록 허용 |
확인란을 선택합니다. |
'vnet-spoke'의 게이트웨이 또는 경로 서버가 'vnet-hub'로 트래픽을 전달하도록 허용 |
선택 안 함(기본값)을 그대로 둡니다. |
'vnet-spoke'를 사용하도록 설정하여 'vnet-hub'의 원격 게이트웨이 또는 경로 서버를 사용합니다. |
선택 안 함(기본값)을 그대로 둡니다. |
로컬 가상 네트워크 요약 |
|
피어링 링크 이름 |
vnet-hub-to-vnet-spoke를 입력합니다. |
로컬 가상 네트워크 피어링 설정 |
|
'vnet-hub'가 'vnet-spoke'에 액세스하도록 허용 |
선택한 상태(기본값)를 그대로 둡니다. |
'vnet-hub'가 'vnet-spoke'에서 전달된 트래픽을 수신하도록 허용 |
확인란을 선택합니다. |
'vnet-hub'의 게이트웨이 또는 경로 서버가 'vnet-spoke'로 트래픽을 전달하도록 허용 |
선택 안 함(기본값)을 그대로 둡니다. |
'vnet-spoke'의 원격 게이트웨이 또는 경로 서버를 사용하려면 'vnet-hub'를 사용하도록 설정합니다. |
선택 안 함(기본값)을 그대로 둡니다. |
추가를 선택합니다.
새로 고침을 선택하고 피어링 상태가 연결됨인지 확인합니다.
Add-AzVirtualNetworkPeering을 사용하여 허브에서 스포크로의 피어링을 만듭니다.
# Create peering from hub to spoke
$peeringParams = @{
Name = 'vnet-hub-to-vnet-spoke'
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Add-AzVirtualNetworkPeering을 사용하여 스포크에서 허브로의 피어링을 만듭니다.
# Create peering from spoke to hub
$peeringParams = @{
Name = 'vnet-spoke-to-vnet-hub'
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
az network vnet peering create를 사용하여 허브에서 스포크로의 피어링을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
HUB_TO_SPOKE_PEERING_NAME="vnet-hub-to-vnet-spoke"
VNET_SPOKE_NAME="vnet-spoke"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $HUB_TO_SPOKE_PEERING_NAME \
--remote-vnet $VNET_SPOKE_NAME \
--allow-forwarded-traffic
az network vnet peering create를 사용하여 스포크에서 허브로 피어링을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_TO_HUB_PEERING_NAME="vnet-spoke-to-vnet-hub"
VNET_HUB_NAME="vnet-hub"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_TO_HUB_PEERING_NAME \
--remote-vnet $VNET_HUB_NAME \
--allow-forwarded-traffic
스포크 네트워크 경로 테이블 만들기
경로 테이블은 스포크 가상 네트워크에서 허브 가상 네트워크로 나가는 모든 트래픽을 강제로 적용합니다. 경로 테이블은 가상 어플라이언스 Azure Firewall 개인 IP 주소로 구성됩니다.
방화벽의 개인 IP 주소 가져오기
방화벽의 개인 IP 주소는 이 문서의 뒷부분에서 만든 경로 테이블에 필요합니다. 다음 예제를 사용하여 방화벽 개인 IP 주소를 가져옵니다.
포털 상단에 있는 검색 상자에 Firewall을 입력합니다. 검색 결과에서 방화벽을 선택합니다.
방화벽을 선택합니다.
방화벽의 개요에서 방화벽 개인 IP 필드의 IP 주소를 확인합니다. 이 예의 IP 주소는 10.0.1.68입니다.
Get-AzFirewall을 사용하여 방화벽의 개인 IP 주소를 가져옵니다.
# Get the private IP address of the firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Name = 'firewall'
}
$firewall = Get-AzFirewall @firewallParams
$firewall.IpConfigurations[0].PrivateIpAddress
# Get the private IP address of the firewall
az network firewall show \
--resource-group test-rg \
--name firewall \
--query "ipConfigurations[0].privateIpAddress" \
--output tsv
경로 테이블 만들기
허브 가상 네트워크의 방화벽을 통해 모든 스포크 간 및 인터넷 송신 트래픽을 강제로 적용하는 경로 테이블을 만듭니다.
포털 상단의 검색 창에 경로 테이블을 입력합니다. 검색 결과에서 경로 테이블을 선택합니다.
+ 만들기를 선택합니다.
경로 테이블 만들기에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
프로젝트 세부 정보 |
|
구독 |
구독을 선택합니다. |
리소스 그룹 |
test-rg를 선택합니다. |
인스턴스 세부 정보 |
|
지역 |
미국 중남부를 선택합니다. |
이름 |
route-table-spoke를 입력합니다. |
게이트웨이 경로 전파 |
아니오를 선택합니다. |
검토 + 만들기를 선택합니다.
만들기를 선택합니다.
포털 상단의 검색 창에 경로 테이블을 입력합니다. 검색 결과에서 경로 테이블을 선택합니다.
route-table-spoke를 선택합니다.
설정에서 경로를 선택합니다.
경로에서 + 추가를 선택합니다.
경로 추가에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
경로 이름 |
route-to-hub를 입력합니다. |
대상 형식 |
IP 주소를 선택합니다. |
대상 IP 주소/CIDR 범위 |
0.0.0.0/0을 입력합니다. |
다음 홉 유형 |
가상 어플라이언스를 선택합니다. |
다음 홉 주소 |
10.0.1.68을 입력합니다. |
추가를 선택합니다.
설정에서 서브넷을 선택합니다.
+ 연결을 선택합니다.
서브넷 연결에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
가상 네트워크 |
vnet-spoke(test-rg)를 선택합니다. |
서브넷 |
subnet-private을 선택합니다. |
확인을 선택합니다.
New-AzRouteTable을 사용하여 경로 테이블을 만듭니다.
# Create route table
$routeTableParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'route-table-spoke'
}
$routeTable = New-AzRouteTable @routeTableParams
Add-AzRouteConfig를 사용하여 경로 테이블에 경로를 만듭니다.
# Create route
$routeConfigParams = @{
Name = 'route-to-hub'
AddressPrefix = '0.0.0.0/0'
NextHopType = 'VirtualAppliance'
NextHopIpAddress = $firewall.IpConfigurations[0].PrivateIpAddress
RouteTable = $routeTable
}
Add-AzRouteConfig @routeConfigParams
Set-AzRouteTable을 사용하여 경로 테이블을 업데이트합니다.
# Update the route table
$routeTable | Set-AzRouteTable
Set-AzVirtualNetworkSubnetConfig를 사용하여 경로 테이블을 스포크 서브넷과 연결합니다.
# Associate route table with subnet
$subnetConfigParams = @{
VirtualNetwork = $spokeVnet
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
RouteTable = $routeTable
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
Set-AzVirtualNetwork를 사용하여 스포크 가상 네트워크를 업데이트합니다.
# Update the virtual network
$spokeVnet | Set-AzVirtualNetwork
az network route-table create를 사용하여 경로 테이블을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
LOCATION="southcentralus"
az network route-table create \
--resource-group $RESOURCE_GROUP \
--name $ROUTE_TABLE_NAME \
--___location $LOCATION
az network route-table route create를 사용하여 경로를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
ROUTE_NAME="route-to-hub"
ADDRESS_PREFIX="0.0.0.0/0"
NEXT_HOP_TYPE="VirtualAppliance"
NEXT_HOP_IP="10.0.1.68"
az network route-table route create \
--resource-group $RESOURCE_GROUP \
--route-table-name $ROUTE_TABLE_NAME \
--name $ROUTE_NAME \
--address-prefix $ADDRESS_PREFIX \
--next-hop-type $NEXT_HOP_TYPE \
--next-hop-ip-address $NEXT_HOP_IP
az network vnet subnet update를 사용하여 경로 테이블을 서브넷과 연결합니다.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
ROUTE_TABLE_NAME="route-table-spoke"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_SUBNET_NAME \
--route-table $ROUTE_TABLE_NAME
허브를 통한 스포크 트래픽은 방화벽 정책 및 네트워크 규칙을 통해 허용되어야 합니다. 다음 예제를 사용하여 방화벽 정책 및 네트워크 규칙을 만듭니다.
포털 상단에 있는 검색 상자에 Firewall을 입력합니다. 검색 결과에서 방화벽 정책을 선택합니다.
firewall-policy을 선택합니다.
설정을 확장한 후 네트워크 규칙을 선택합니다.
+규칙 컬렉션 추가를 선택합니다.
규칙 컬렉션 추가에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
이름 |
spoke-to-internet를 입력합니다. |
규칙 컬렉션 형식 |
네트워크를 선택합니다. |
우선 순위 |
100을 입력합니다. |
규칙 컬렉션 작업 |
허용을 선택합니다. |
규칙 컬렉션 그룹 |
DefaultNetworkRuleCollectionGroup을 선택합니다. |
규칙 |
|
이름 |
allow-web을 입력합니다. |
원본 유형 |
IP 주소. |
원본 |
10.1.0.0/24를 입력합니다. |
프로토콜 |
TCP를 선택합니다. |
대상 포트 |
80,443를 입력합니다. |
대상 유형 |
IP 주소를 선택합니다. |
대상 |
*를 입력합니다 |
추가를 선택합니다.
Get-AzFirewallPolicy를 사용하여 기존 방화벽 정책을 가져옵니다.
# Get the existing firewall policy
$firewallPolicyParams = @{
Name = 'firewall-policy'
ResourceGroupName = 'test-rg'
}
$firewallPolicy = Get-AzFirewallPolicy @firewallPolicyParams
New-AzFirewallPolicyNetworkRule을 사용하여 네트워크 규칙을 만듭니다.
# Create a network rule for web traffic
$networkRuleParams = @{
Name = 'allow-internet'
SourceAddress = '10.1.0.0/24'
Protocol = 'TCP'
DestinationAddress = '*'
DestinationPort = '*'
}
$networkRule = New-AzFirewallPolicyNetworkRule @networkRuleParams
New-AzFirewallPolicyFilterRuleCollection을 사용하여 네트워크 규칙에 대한 규칙 컬렉션을 만듭니다.
# Create a rule collection for the network rule
$ruleCollectionParams = @{
Name = 'spoke-to-internet'
Priority = 100
Rule = $networkRule
ActionType = 'Allow'
}
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection @ruleCollectionParams
New-AzFirewallPolicyRuleCollectionGroup을 사용하여 규칙 컬렉션 그룹을 만듭니다.
$newRuleCollectionGroupParams = @{
Name = 'DefaultNetworkRuleCollectionGroup'
Priority = 200
FirewallPolicyObject = $firewallPolicy
RuleCollection = $ruleCollection
}
New-AzFirewallPolicyRuleCollectionGroup @newRuleCollectionGroupParams
az network firewall policy rule-collection-group create를 사용하여 규칙 컬렉션 그룹을 만듭니다.
# Variables
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
PRIORITY="200"
az network firewall policy rule-collection-group create \
--name $RULE_COLLECTION_GROUP_NAME \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--priority $PRIORITY
az network firewall policy rule-collection-group collection add-filter-collection을 사용하여 네트워크 규칙 컬렉션을 만듭니다.
# Variables
COLLECTION_NAME="spoke-to-internet"
ACTION="Allow"
RULE_NAME="allow-web"
RULE_TYPE="NetworkRule"
SOURCE_ADDRESSES="10.1.0.0/24"
IP_PROTOCOLS="TCP"
DESTINATION_ADDRESSES="*"
DESTINATION_PORTS="*"
COLLECTION_PRIORITY="100"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
az network firewall policy rule-collection-group collection add-filter-collection \
--name $COLLECTION_NAME \
--action $ACTION \
--rule-name $RULE_NAME \
--rule-type $RULE_TYPE \
--source-addresses $SOURCE_ADDRESSES \
--ip-protocols $IP_PROTOCOLS \
--destination-addresses $DESTINATION_ADDRESSES \
--destination-ports $DESTINATION_PORTS \
--collection-priority $COLLECTION_PRIORITY \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--rule-collection-group-name $RULE_COLLECTION_GROUP_NAME
테스트 가상 머신 만들기
Ubuntu 가상 머신은 NAT Gateway를 통한 아웃바운드 인터넷 트래픽을 테스트하는 데 사용됩니다. 다음 예를 사용하여 Ubuntu 가상 머신을 만듭니다.
포털에서 가상 머신을 검색하여 선택합니다.
가상 머신에서 + 만들기를 선택한 다음, Azure 가상 머신을 선택합니다.
가상 머신 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
프로젝트 세부 정보 |
|
구독 |
구독을 선택합니다. |
리소스 그룹 |
test-rg를 선택합니다. |
인스턴스 세부 정보 |
|
가상 머신 이름 |
vm-spoke를 입력합니다. |
지역 |
(미국) 미국 중남부를 선택합니다. |
가용성 옵션 |
인프라 중복이 필요하지 않습니다를 선택합니다. |
보안 유형 |
기본값인 표준을 그대로 둡니다. |
이미지 |
Ubuntu Server 24.04 LTS - x64 Gen2를 선택합니다. |
VM 아키텍처 |
x64(기본값)를 그대로 둡니다. |
크기 |
크기를 선택합니다. |
관리자 계정 |
|
인증 유형 |
암호를 선택합니다. |
사용자 이름 |
azureuser를 입력합니다. |
암호 |
암호를 입력합니다. |
암호 확인 |
암호를 다시 입력합니다. |
인바운드 포트 규칙 |
|
공용 인바운드 포트 |
없음을 선택합니다. |
페이지 위쪽에서 네트워킹 탭을 선택하거나 다음: 디스크, 다음: 네트워킹을 차례로 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정 |
값 |
네트워크 인터페이스 |
|
가상 네트워크 |
vnet-spoke를 선택합니다. |
서브넷 |
subnet-private(10.1.0.0/24)을 선택합니다. |
공용 IP |
없음을 선택합니다. |
NIC 네트워크 보안 그룹 추가 |
고급을 선택합니다. |
네트워크 보안 그룹 구성 |
새로 만들기를 선택합니다.
이름으로 nsg-1을 입력합니다.
나머지는 기본값으로 두고 확인을 선택합니다. |
나머지 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.
설정을 검토하고 만들기를 선택합니다.
다음 단계로 진행하기 전에 가상 머신의 배포가 완료될 때까지 기다립니다.
참고
베스천 호스트가 있는 가상 네트워크의 가상 머신에는 공용 IP 주소가 필요하지 않습니다. Bastion은 공용 IP를 제공하고 VM은 개인 IP를 사용하여 네트워크 내에서 통신합니다. 베스천 호스트된 가상 네트워크의 모든 VM에서 공용 IP를 제거할 수 있습니다. 자세한 내용은 Azure VM에서 공용 IP 주소 연결 해제를 참조하세요.
New-AzNetworkSecurityGroup을 사용하여 네트워크 보안 그룹을 만듭니다.
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-1"
Location = "southcentralus"
}
New-AzNetworkSecurityGroup @nsgParams
New-AzNetworkInterface를 사용하여 네트워크 인터페이스를 만듭니다.
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-spoke").Subnets[0].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-1").Id
Location = "southcentralus"
}
New-AzNetworkInterface @nicParams
Get-Credential을 사용하여 VM의 사용자 이름과 암호를 설정하고 이를 $cred
변수에 저장합니다.
$cred = Get-Credential
참고
VM에는 사용자 이름이 필요합니다. 암호는 선택 사항이며 설정된 경우 사용되지 않습니다. Linux VM에는 SSH 키 구성을 사용하는 것이 좋습니다.
New-AzVMConfig를 사용하여 VM을 정의합니다.
$vmConfigParams = @{
VMName = "vm-spoke"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
Set-AzVMOperatingSystem 또는 Set-AzVMSourceImage를 사용하여 나머지 VM 구성을 만듭니다. 다음 예제에서는 Ubuntu Server 가상 머신을 만듭니다.
$osParams = @{
VM = $vmConfig
ComputerName = "vm-spoke"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Linux -DisablePasswordAuthentication
$imageParams = @{
VM = $vmConfig
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
Add-AzVMNetworkInterface를 사용하여 이전에 만든 NIC를 VM에 연결합니다.
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
New-AzVM을 사용하여 VM을 만듭니다. 이 명령은 로그인을 위해 가상 머신에 대한 SSH 키를 생성합니다. 프라이빗 키의 위치를 기록해 둡니다. 프라이빗 키는 Azure Bastion을 사용하여 가상 머신에 연결하기 위해 이후 단계에서 필요합니다.
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "southcentralus"
SshKeyName = "ssh-key"
}
New-AzVM @vmParams -GenerateSshKey
az network nsg create를 사용하여 네트워크 보안 그룹을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
NSG_NAME="nsg-1"
LOCATION="southcentralus"
az network nsg create \
--resource-group $RESOURCE_GROUP \
--name $NSG_NAME \
--___location $LOCATION
az network nic create를 사용하여 네트워크 인터페이스를 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
NIC_NAME="vm-spoke-nic"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
NSG_NAME="nsg-1"
az network nic create \
--resource-group $RESOURCE_GROUP \
--name $NIC_NAME \
--vnet-name $VNET_SPOKE_NAME \
--subnet $SPOKE_SUBNET_NAME \
--network-security-group $NSG_NAME
az vm create를 사용하여 가상 머신을 만듭니다.
# Variables
RESOURCE_GROUP="test-rg"
VM_NAME="vm-spoke"
LOCATION="southcentralus"
NIC_NAME="vm-spoke-nic"
VM_IMAGE="Ubuntu2204"
ADMIN_USERNAME="azureuser"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--___location $LOCATION \
--nics $NIC_NAME \
--image $VM_IMAGE \
--admin-username $ADMIN_USERNAME \
--generate-ssh-keys
NAT 게이트웨이 테스트
이전 단계에서 만든 Ubuntu 가상 머신에 연결하여 아웃바운드 인터넷 트래픽이 NAT Gateway에서 나가는지 확인합니다.
NAT Gateway 공용 IP 주소 가져오기
문서의 뒷부분에 있는 단계를 확인하려면 NAT Gateway 공용 IP 주소를 가져옵니다.
포털 맨 위에 있는 검색 상자에 공용 IP를 입력합니다. 검색 결과에서 공용 IP 주소를 선택합니다.
public-ip-nat를 선택합니다.
IP 주소의 값을 기록해 둡니다. 이 문서에 사용된 예시는 203.0.113.0.25입니다.
Get-AzPublicIpAddress를 사용하여 NAT 게이트웨이의 공용 IP 주소를 가져옵니다.
# Get the public IP address of the NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip-nat'
}
$publicIpNat = Get-AzPublicIpAddress @publicIpNatParams
$publicIpNat.IpAddress
az network public-ip show를 사용하여 NAT 게이트웨이의 공용 IP 주소를 가져옵니다.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--query "ipAddress" \
--output tsv
스포크에서 NAT 게이트웨이 테스트하기
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-spoke를 선택합니다.
개요에서 연결을 선택한 다음 Bastion을 통해 연결합니다.
연결 유형으로 SSH 를 선택합니다. SSH 프라이빗 키 파일을 업로드합니다.
연결을 선택합니다.
Bash 프롬프트에 다음 명령을 입력합니다.
curl ifconfig.me
명령으로 반환된 IP 주소가 NAT Gateway의 공용 IP 주소와 일치하는지 확인합니다.
azureuser@vm-1:~$ curl ifconfig.me
203.0.113.0.25
vm-spoke에 대한 Bastion 연결을 닫습니다.
만든 리소스 사용을 마치면 리소스 그룹과 해당 리소스를 모두 삭제할 수 있습니다.
Azure Portal에서 리소스 그룹을 검색하고 선택합니다.
리소스 그룹 페이지에서 test-rg 리소스 그룹을 선택합니다.
test-rg 페이지에서 리소스 그룹 삭제를 선택합니다.
삭제 확인을 위한 리소스 그룹 이름 입력에 test-rg를 입력한 다음 삭제를 선택합니다.
Remove-AzResourceGroup을 사용하여 리소스 그룹을 제거합니다.
# Remove resource group
$rgParams = @{
Name = 'test-rg'
}
Remove-AzResourceGroup @rgParams
az group delete를 사용하여 리소스 그룹을 제거합니다.
# Variables
RESOURCE_GROUP="test-rg"
az group delete \
--name $RESOURCE_GROUP \
--yes \
--no-wait
다음 단계
다음 문서로 진행하여 NAT 게이트웨이를 Azure Load Balancer와 통합하는 방법에 대해 알아봅니다.