자습서: 경로 테이블을 사용하여 네트워크 트래픽 라우팅
이 문서의 내용
Azure에서는 기본적으로 가상 네트워크 내의 모든 서브넷 간에 트래픽을 라우팅합니다. 고유의 라우팅을 만들어 Azure의 기본 라우팅을 재정의할 수 있습니다. 예를 들어 NVA(네트워크 가상 어플라이언스)를 통해 트래픽을 서브넷 간에 라우팅하려는 경우 사용자 지정 경로가 유용합니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
가상 네트워크 및 서브넷 만들기
트래픽을 라우팅하는 NVA 만들기
다른 서브넷에 VM(가상 머신) 배포
경로 테이블 만들기
경로 만들기
서브넷에 경로 테이블 연결
NVA를 통해 한 서브넷에서 다른 서브넷으로 트래픽 라우팅
필수 조건
Azure Cloud Shell
Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 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 체험 계정 을 만듭니다.
이 문서에는 Azure CLI 버전 2.0.28 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
서브넷 만들기
이 자습서에는 DMZ 및 프라이빗 서브넷이 필요합니다. DMZ 서브넷은 NVA를 배포하는 위치이고, 프라이빗 서브넷은 트래픽을 라우팅할 가상 머신을 배포하는 위치입니다. subnet-1 은 이전 단계에서 만들어진 서브넷입니다. 공용 가상 머신에는 subnet-1 을 사용합니다.
가상 네트워크 및 Azure 베스천 호스트 만들기
다음 프로시저에서는 리소스 서브넷, Azure Bastion 서브넷 및 베스천 호스트가 포함된 가상 네트워크를 만듭니다.
포털에서 가상 네트워크 를 검색하여 선택합니다.
가상 네트워크 페이지에서 + 만들기 를 선택합니다.
가상 네트워크 만들기 의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정
값
프로젝트 세부 정보
Subscription
구독을 선택합니다.
Resource group
새로 만들기 를 선택합니다. 이름으로 test-rg 를 입력합니다. 확인 을 선택합니다.
인스턴스 세부 정보
Name
vnet-1 을 입력합니다.
지역
미국 동부 2 를 선택합니다.
다음 을 선택하여 보안 탭으로 이동합니다.
Azure Bastion 섹션에서 Azure Bastion 사용 을 선택합니다.
Bastion은 브라우저를 사용하여 개인 IP 주소를 사용하여 SSH(보안 셸) 또는 RDP(원격 데스크톱 프로토콜)를 통해 가상 네트워크의 VM에 연결합니다. VM에는 공용 IP 주소, 클라이언트 소프트웨어 또는 특수 구성이 필요하지 않습니다. 자세한 내용은 Azure Bastion이란? 을 참조하세요.
참고 항목
시간당 가격은 아웃바운드 데이터 사용량에 관계없이 Bastion이 배포되는 순간부터 시작됩니다. 자세한 내용은 가격 책정 및 SKU 를 참조하세요. 자습서 또는 테스트의 일부로 Bastion을 배포하는 경우 이 리소스 사용을 마친 후 삭제하는 것이 좋습니다.
Azure Bastion 에서 다음 정보를 입력하거나 선택합니다.
설정
값
Azure Bastion 호스트 이름
bastion 을 입력합니다.
Azure Bastion 공용 IP 주소
공용 IP 주소 만들기 를 선택합니다. 이름에 public-ip-bastion 을 입력합니다. 확인 을 선택합니다.
다음 을 선택하여 IP 주소 탭으로 이동합니다.
서브넷 의 주소 공간 입력란에서 기본 서브넷을 선택합니다.
서브넷 편집 에서 다음 정보를 입력하거나 선택합니다.
설정
값
서브넷 목적
기본값인 기본값 을 그대로 둡니다.
속성
subnet-1 을 입력합니다.
IPv4
IPv4 주소 범위
기본값인 10.0.0.0/16 은 그대로 둡니다.
시작 주소
기본값인 10.0.0.0 을 그대로 둡니다.
크기
기본값인 /24(256개 주소) 를 그대로 둡니다.
저장 을 선택합니다.
창 하단에서 검토 + 만들기 를 선택합니다. 유효성 검사를 통과하면 만들기 를 선택합니다.
포털 맨 위에 있는 검색 상자에 가상 네트워크 를 입력합니다. 검색 결과에서 가상 네트워크 를 선택합니다.
가상 네트워크 에서 vnet-1 을 선택합니다.
vnet-1 의 설정 섹션에서 서브넷 을 선택합니다.
가상 네트워크의 서브넷 목록에서 + 서브넷 을 선택합니다.
서브넷 추가 에 다음 정보를 입력하거나 선택합니다.
설정
값
서브넷 목적
기본값인 기본값 을 그대로 둡니다.
속성
서브넷-프라이빗 을 입력합니다.
IPv4
IPv4 주소 범위
기본값인 10.0.0.0/16 은 그대로 둡니다.
시작 주소
10.0.2.0 를 입력합니다.
크기
기본값인 /24(256개 주소) 를 그대로 둡니다.
추가 를 선택합니다.
+ 서브넷 을 선택합니다.
서브넷 추가 에 다음 정보를 입력하거나 선택합니다.
설정
값
서브넷 목적
기본값인 기본값 을 그대로 둡니다.
속성
subnet-dmz 를 입력합니다.
IPv4
IPv4 주소 범위
기본값인 10.0.0.0/16 은 그대로 둡니다.
시작 주소
10.0.3.0 를 입력합니다.
크기
기본값인 /24(256개 주소) 를 그대로 둡니다.
추가 를 선택합니다.
New-AzResourceGroup 을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 이 문서에서 만든 모든 리소스에 대해 test-rg라는 리소스 그룹을 만듭니다.
$rg = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
}
New-AzResourceGroup @rg
New-AzVirtualNetwork 를 사용하여 가상 네트워크를 만듭니다. 다음 예에서는 주소 접두사가 10.0.0.0/16 인 vnet-1 이라는 가상 네트워크를 만듭니다.
$vnet = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
New-AzVirtualNetworkSubnetConfig를 사용하여 4개의 서브넷 구성을 만들어 4개의 서브넷을 만듭니다 . 다음 예제에서는 공용, 프라이빗, DMZ 및 Azure Bastion 서브넷에 대한 4개의 서브넷 구성을 만듭니다.
$subnetConfigPublicParams = @{
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigBastionParams = @{
Name = "AzureBastionSubnet"
AddressPrefix = "10.0.1.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPrivateParams = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigDmzParams = @{
Name = "subnet-dmz"
AddressPrefix = "10.0.3.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subnetConfigPublicParams
$subnetConfigBastion = Add-AzVirtualNetworkSubnetConfig @subnetConfigBastionParams
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subnetConfigPrivateParams
$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig @subnetConfigDmzParams
Set-AzVirtualNetwork 를 사용하여 가상 네트워크에 서브넷 구성을 작성합니다. 그러면 가상 네트워크에 서브넷이 만들어집니다.
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion 만들기
New-AzPublicIpAddress를 사용하여 Azure Bastion 호스트 에 대한 공용 IP 주소를 만듭니다. 다음 예제에서는 vnet-1 가상 네트워크에 public-ip-bastion 이라는 공용 IP 주소를 만듭니다.
$publicIpParams = @{
ResourceGroupName = "test-rg"
Name = "public-ip-bastion"
Location = "EastUS2"
AllocationMethod = "Static"
Sku = "Standard"
}
New-AzPublicIpAddress @publicIpParams
New-AzBastion을 사용하여 Azure Bastion 호스트를 만듭니다. 다음 예제에서는 vnet-1 가상 네트워크의 AzureBastionSubnet 서브넷에 bastion이라는 Azure Bastion 호스트를 만듭니다. Azure Bastion은 공용 인터넷에 노출하지 않고 Azure 가상 머신을 안전하게 연결하는 데 사용됩니다.
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-1"
PublicIpAddressName = "public-ip-bastion"
PublicIpAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
}
New-AzBastion @bastionParams -AsJob
이 문서에서 만든 모든 리소스에 대해 az group create를 사용하여 리소스 그룹을 만듭니 다.
# Create a resource group.
az group create \
--name test-rg \
--location eastus2
az network vnet create 를 사용하여 하나의 서브넷이 있는 가상 네트워크를 만듭니다.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
az network vnet subnet create를 사용하여 두 개의 서브넷을 더 만듭니다 .
# Create a bastion subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name AzureBastionSubnet \
--address-prefix 10.0.1.0/24
# Create a private subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.2.0/24
# Create a DMZ subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-dmz \
--address-prefix 10.0.3.0/24
Azure Bastion 만들기
az network public-ip create를 사용하여 Azure Bastion 호스트 에 대한 공용 IP 주소를 만듭니다 . 다음 예제에서는 vnet-1 가상 네트워크에 public-ip-bastion 이라는 공용 IP 주소를 만듭니다.
az network public-ip create \
--resource-group test-rg \
--name public-ip-bastion \
--location eastus2 \
--allocation-method Static \
--sku Standard
az network bastion create를 사용하여 Azure Bastion 호스트를 만듭니다 . 다음 예제에서는 vnet-1 가상 네트워크의 AzureBastionSubnet 서브넷에 bastion이라는 Azure Bastion 호스트를 만듭니다. Azure Bastion은 공용 인터넷에 노출하지 않고 Azure 가상 머신을 안전하게 연결하는 데 사용됩니다.
az network bastion create \
--resource-group test-rg \
--name bastion \
--vnet-name vnet-1 \
--public-ip-address public-ip-bastion \
--location eastus2
--no-wait
NVA 가상 머신 만들기
NVA(네트워크 가상 어플라이언스)는 라우팅 및 방화벽 최적화와 같은 네트워크 기능을 지원하는 가상 머신입니다. 이 섹션에서는 Ubuntu 24.04 가상 머신을 사용하여 NVA를 만듭니다.
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
+ 만들기 를 선택한 다음 Azure 가상 머신 을 선택합니다.
가상 머신 만들기 에서 기본 사항 탭에 다음 정보를 입력하거나 선택합니다.
설정
값
프로젝트 세부 정보
Subscription
구독을 선택합니다.
Resource group
test-rg 를 선택합니다.
인스턴스 세부 정보
가상 머신 이름
vm-nva 를 입력합니다.
지역
(미국) 미국 동부 2 를 선택합니다.
가용성 옵션
인프라 중복이 필요하지 않습니다. 를 선택합니다.
보안 유형
표준 을 선택합니다.
이미지
Ubuntu Server 24.04 LTS - x64 Gen2 를 선택합니다.
VM 아키텍처
x64 (기본값)를 그대로 둡니다.
크기
크기를 선택합니다.
관리자 계정
인증 유형
암호 를 선택합니다.
사용자 이름
사용자 이름을 입력합니다.
암호
암호를 입력합니다.
암호 확인
암호를 다시 입력합니다.
인바운드 포트 규칙
공용 인바운드 포트
없음 을 선택합니다.
다음: 디스크 를 선택하고 다음: 네트워킹 을 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정
값
네트워크 인터페이스
가상 네트워크
vnet-1 을 선택합니다.
서브넷
subnet-dmz(10.0.3.0/24) 를 선택합니다.
공용 IP
없음 을 선택합니다.
NIC 네트워크 보안 그룹 추가
고급 을 선택합니다.
네트워크 보안 그룹 구성
새로 만들기 를 선택합니다. 이름 에 nsg-nva 를 입력합니다. 확인 을 선택합니다.
나머지 옵션은 기본값으로 두고 검토 + 만들기 를 선택합니다.
만들기 를 실행합니다.
New-AzVM 으로 VM을 만듭니다. 다음 예제에서는 vm-nva라는 VM을 만듭니다.
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-nva"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-dmz"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
az vm create를 사용하여 서브넷-dmz 서브넷에서 NVA로 사용할 VM을 만듭니다 .
az vm create \
--resource-group test-rg \
--name vm-nva \
--image Ubuntu2204 \
--public-ip-address "" \
--subnet subnet-dmz \
--vnet-name vnet-1 \
--admin-username azureuser \
--authentication-type password
VM을 만드는 데 몇 분이 걸립니다. Azure에서 VM 만들기를 완료하고 VM에 대한 출력을 반환할 때까지 다음 단계로 진행하지 마세요.
퍼블릭 및 프라이빗 가상 머신 만들기
vnet-1 가상 네트워크에 두 개의 가상 머신을 만듭니다. 한 가상 머신은 subnet-1 서브넷에 있고 다른 가상 머신은 subnet-private 서브넷에 있습니다. 두 가상 머신 모두에 동일한 가상 머신 이미지를 사용합니다.
공용 가상 머신 만들기
공용 가상 머신은 공용 인터넷에서 컴퓨터를 시뮬레이션하는 데 사용됩니다. 공용 및 프라이빗 가상 머신은 NVA 가상 머신을 통한 네트워크 트래픽 라우팅을 테스트하는 데 사용됩니다.
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
+ 만들기 를 선택한 다음 Azure 가상 머신 을 선택합니다.
가상 머신 만들기 에서 기본 사항 탭에 다음 정보를 입력하거나 선택합니다.
설정
값
프로젝트 세부 정보
Subscription
구독을 선택합니다.
Resource group
test-rg 를 선택합니다.
인스턴스 세부 정보
가상 머신 이름
vm-public 을 입력합니다.
지역
(미국) 미국 동부 2 를 선택합니다.
가용성 옵션
인프라 중복이 필요하지 않습니다. 를 선택합니다.
보안 유형
표준 을 선택합니다.
이미지
Ubuntu Server 24.04 LTS - x64 Gen2 를 선택합니다.
VM 아키텍처
x64 (기본값)를 그대로 둡니다.
크기
크기를 선택합니다.
관리자 계정
인증 유형
암호 를 선택합니다.
사용자 이름
사용자 이름을 입력합니다.
암호
암호를 입력합니다.
암호 확인
암호를 다시 입력합니다.
인바운드 포트 규칙
공용 인바운드 포트
없음 을 선택합니다.
다음: 디스크 를 선택하고 다음: 네트워킹 을 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정
값
네트워크 인터페이스
가상 네트워크
vnet-1 을 선택합니다.
서브넷
subnet-1(10.0.0.0/24) 을 선택합니다.
공용 IP
없음 을 선택합니다.
NIC 네트워크 보안 그룹 추가
없음 을 선택합니다.
나머지 옵션은 기본값으로 두고 검토 + 만들기 를 선택합니다.
만들기 를 실행합니다.
프라이빗 가상 머신 만들기
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
+ 만들기 를 선택한 다음 Azure 가상 머신 을 선택합니다.
가상 머신 만들기 에서 기본 사항 탭에 다음 정보를 입력하거나 선택합니다.
설정
값
프로젝트 세부 정보
Subscription
구독을 선택합니다.
Resource group
test-rg 를 선택합니다.
인스턴스 세부 정보
가상 머신 이름
vm-private 을 입력합니다.
지역
(미국) 미국 동부 2 를 선택합니다.
가용성 옵션
인프라 중복이 필요하지 않습니다. 를 선택합니다.
보안 유형
표준 을 선택합니다.
이미지
Ubuntu Server 24.04 LTS - x64 Gen2 를 선택합니다.
VM 아키텍처
x64 (기본값)를 그대로 둡니다.
크기
크기를 선택합니다.
관리자 계정
인증 유형
암호 를 선택합니다.
사용자 이름
사용자 이름을 입력합니다.
암호
암호를 입력합니다.
암호 확인
암호를 다시 입력합니다.
인바운드 포트 규칙
공용 인바운드 포트
없음 을 선택합니다.
다음: 디스크 를 선택하고 다음: 네트워킹 을 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정
값
네트워크 인터페이스
가상 네트워크
vnet-1 을 선택합니다.
서브넷
서브넷-프라이빗(10.0.2.0/24) 을 선택합니다.
공용 IP
없음 을 선택합니다.
NIC 네트워크 보안 그룹 추가
없음 을 선택합니다.
나머지 옵션은 기본값으로 두고 검토 + 만들기 를 선택합니다.
만들기 를 실행합니다.
New-AzVM을 사용하여 서브넷-1 서브넷에 VM 을 만듭니다. 다음 예제에서는 vnet-1 가상 네트워크의 서브넷-퍼블릭 서브넷 에 vm-public 이라는 VM을 만듭니다.
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-public"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
서브넷-프라이빗 서브넷에 VM을 만듭니다.
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-private"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
VM을 만드는 데 몇 분이 걸립니다. VM이 만들어지고 Azure에서 PowerShell로 출력을 반환할 때까지 나머지 단계를 진행하지 마십시오.
az vm create 을 사용하여 서브넷-1 서브넷에서 VM을 만듭니다. --no-wait
매개 변수를 사용하면 Azure가 백그라운드에서 명령을 실행할 수 있으므로 다음 명령을 계속 진행할 수 있습니다.
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password \
--no-wait
서브넷-프라이빗 서브넷에 VM을 만듭니다.
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password
IP 전달을 사용하도록 설정
NVA를 통해 트래픽을 라우팅하려면 Azure 및 vm-nva 운영 체제에서 IP 전달을 설정합니다. IP 전달이 사용하도록 설정되면 다른 IP 주소로 향하는 vm-nva 에서 수신한 모든 트래픽은 삭제되지 않고 올바른 대상으로 전달됩니다.
Azure에서 IP 전달 사용
이 섹션에서는 vm-nva 가상 머신의 네트워크 인터페이스에 대한 IP 전달을 설정합니다.
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
가상 머신 에서 vm-nva 를 선택합니다.
vm-nva 에서 네트워킹 을 확장한 다음 네트워크 설정 을 선택합니다.
네트워크 인터페이스: 옆에 있는 인터페이스 이름을 선택합니다. 이름은 vm-nva 로 시작하며 인터페이스에 임의의 숫자가 할당됩니다. 이 예에서 인터페이스 이름은 vm-nva313 입니다.
네트워크 인터페이스 개요 페이지의 설정 섹션에서 IP 구성 을 선택합니다.
IP 구성 에서 IP 전달 사용 옆의 확인란을 선택합니다.
적용 을 선택합니다.
Set-AzNetworkInterface를 사용하여 vm-nva 가상 머신의 네트워크 인터페이스에 대해 IP 전달을 사용하도록 설정합니다. 다음 예제에서는 vm-nva313이라는 네트워크 인터페이스에 대해 IP 전달을 사용하도록 설정합니다.
$nicParams = @{
Name = "vm-nva"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @nicParams
$nic.EnableIPForwarding = $true
Set-AzNetworkInterface -NetworkInterface $nic
az network nic update를 사용하여 vm-nva 가상 머신의 네트워크 인터페이스에 IP 전달을 사용하도록 설정합니다 . 다음 예제에서는 vm-nvaVMNic라는 네트워크 인터페이스에 IP 전달을 사용하도록 설정합니다.
az network nic update \
--name vm-nvaVMNic \
--resource-group test-rg \
--ip-forwarding true
운영 체제에서 IP 전달을 사용하도록 설정합니다.
이 섹션에서는 vm-nva 가상 머신의 운영 체제에 대한 IP 전달을 활성화하여 네트워크 트래픽을 전달합니다. Azure Bastion 서비스를 사용하여 vm-nva 가상 머신에 연결합니다.
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
가상 머신 에서 vm-nva 를 선택합니다.
연결 을 선택하고 개요 섹션에서 Bastion을 통해 연결 을 선택합니다.
가상 머신을 만들 때 입력한 사용자 이름 및 암호를 입력합니다.
연결 을 선택합니다.
가상 머신의 프롬프트에 다음 정보를 입력하여 IP 전달을 사용하도록 설정합니다.
sudo vim /etc/sysctl.conf
Vim 편집기에서 net.ipv4.ip_forward=1
줄의 #
을 제거합니다.
Insert 키를 누릅니다.
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Esc 키를 누릅니다.
:wq
를 입력하고 Enter 키를 누릅니다.
베스천 세션을 닫습니다.
가상 머신을 다시 시작합니다.
경로 테이블 만들기
이 섹션에서는 NVA 가상 머신을 통한 트래픽 경로를 정의하는 경로 테이블을 만듭니다. 경로 테이블은 vm-public 가상 머신이 배포되는 subnet-1 서브넷에 연결됩니다.
포털 상단의 검색 상자에 경로 테이블 을 입력합니다. 검색 결과에서 경로 테이블 을 선택합니다.
+ 만들기 를 선택합니다.
경로 테이블 만들기 에서 다음 정보를 입력하거나 선택합니다.
설정
값
프로젝트 세부 정보
Subscription
구독을 선택합니다.
Resource group
test-rg 를 선택합니다.
인스턴스 세부 정보
지역
미국 동부 2 를 선택합니다.
이름
route-table-public 을 입력합니다.
게이트웨이 경로 전파
예 (기본값)를 그대로 둡니다.
검토 + 만들기 를 선택합니다.
만들기 를 선택합니다.
경로 만들기
이 섹션에서는 이전 단계에서 만든 경로 테이블에 경로를 만듭니다.
포털 상단의 검색 창에 경로 테이블 을 입력합니다. 검색 결과에서 경로 테이블 을 선택합니다.
route-table-public 을 선택합니다.
설정 을 확장한 다음 경로 를 선택합니다.
경로 에서 + 추가 를 선택합니다.
경로 추가 에서 다음 정보를 입력하거나 선택합니다.
설정
값
경로 이름
to-private-subnet 을 입력합니다.
대상 형식
IP 주소 를 선택합니다.
대상 IP 주소/CIDR 범위
10.0.2.0/24 를 입력합니다.
다음 홉 유형
가상 어플라이언스 를 선택합니다.
다음 홉 주소
10.0.3.4 를 입력합니다. 이전 단계에서 만든 vm-nva의 IP 주소입니다.
추가 를 선택합니다.
설정 에서 서브넷 을 선택합니다.
+ 연결 을 선택합니다.
서브넷 연결 에서 다음 정보를 입력하거나 선택합니다.
설정
값
가상 네트워크
vnet-1(test-rg) 을 선택합니다.
서브넷
subnet-1 을 선택합니다.
확인 을 선택합니다.
New-AzRouteTable 을 사용하여 경로 테이블을 만듭니다. 다음 예제에서는 route-table-public이라는 경로 테이블을 만듭니다.
$routeTableParams = @{
Name = 'route-table-public'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
}
$routeTablePublic = New-AzRouteTable @routeTableParams
Get-AzRouteTable 을 사용하여 경로 테이블 개체를 검색하여 경로를 만들고, Add-AzRouteConfig 를 사용하여 경로를 만든 다음, Set-AzRouteTable 을 사용하여 경로 테이블에 경로 구성을 작성합니다.
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-public"
}
$routeConfigParams = @{
Name = "to-private-subnet"
AddressPrefix = "10.0.2.0/24"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.3.4"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeConfigParams | Set-AzRouteTable
Set-AzVirtualNetworkSubnetConfig를 사용하여 경로 테이블을 서브넷-1 서브넷과 연결합니다. 다음 예제에서는 route-table-public 경로 테이블을 서브넷-1 서브넷과 연결 합니다.
$vnetParams = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$virtualNetwork = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $virtualNetwork
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
RouteTable = $routeTablePublic
}
Set-AzVirtualNetworkSubnetConfig @subnetParams | Set-AzVirtualNetwork
az network route-table create 를 사용하여 경로 테이블을 만듭니다. 다음 예제에서는 route-table-public이라는 경로 테이블을 만듭니다.
# Create a route table
az network route-table create \
--resource-group test-rg \
--name route-table-public
az network route-table route create 를 사용하여 경로 테이블에 경로를 만듭니다.
az network route-table route create \
--name to-private-subnet \
--resource-group test-rg \
--route-table-name route-table-public \
--address-prefix 10.0.2.0/24 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address 10.0.3.4
az network vnet subnet update를 사용하여 route-table-subnet-public 경로 테이블을 서브넷-1 서브넷에 연결합니다.
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-1 \
--resource-group test-rg \
--route-table route-table-public
네트워크 트래픽의 라우팅 테스트
vm-public 에서 vm-private 으로의 네트워크 트래픽 라우팅을 테스트합니다. vm-private 에서 vm-public 으로의 네트워크 트래픽 라우팅을 테스트합니다.
vm-public에서 vm-private으로의 네트워크 트래픽 테스트
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
가상 머신 에서 vm-public 을 선택합니다.
연결 을 선택하고 개요 섹션에서 Bastion을 통해 연결 을 선택합니다.
가상 머신을 만들 때 입력한 사용자 이름 및 암호를 입력합니다.
연결 을 선택합니다.
프롬프트에 다음 명령을 입력하여 vm-public 에서 vm-private 으로의 네트워크 트래픽 라우팅을 추적합니다.
tracepath vm-private
응답은 다음 예제와 유사합니다.
azureuser@vm-public:~$ tracepath vm-private
1?: [LOCALHOST] pmtu 1500
1: vm-nva.internal.cloudapp.net 1.766ms
1: vm-nva.internal.cloudapp.net 1.259ms
2: vm-private.internal.cloudapp.net 2.202ms reached
Resume: pmtu 1500 hops 2 back 1
위 응답에는 vm-public 에서 vm-private 으로의 tracepath
ICMP 트래픽에 대한 두 개의 홉이 있음을 알 수 있습니다. 첫 번째 홉은 vm-nva 입니다. 두 번째 홉은 대상 vm-private 입니다.
이전에 to-private-subnet 경로를 route-table-public 에 추가하고 이를 subnet-1 에 연결했기 때문 Azure는 트래픽을 subnet-private 으로 직접 보내지 않고 NVA를 통해 subnet-1 에서 보냈습니다.
베스천 세션을 닫습니다.
vm-private에서 vm-public으로의 네트워크 트래픽 테스트
포털 맨 위에 있는 검색 상자에 가상 머신 을 입력합니다. 검색 결과에서 가상 머신 을 선택합니다.
가상 머신 에서 vm-private 을 선택합니다.
연결 을 선택하고 개요 섹션에서 Bastion을 통해 연결 을 선택합니다.
가상 머신을 만들 때 입력한 사용자 이름 및 암호를 입력합니다.
연결 을 선택합니다.
프롬프트에 다음 명령을 입력하여 vm-private 에서 vm-public 으로의 네트워크 트래픽 라우팅을 추적합니다.
tracepath vm-public
응답은 다음 예제와 유사합니다.
azureuser@vm-private:~$ tracepath vm-public
1?: [LOCALHOST] pmtu 1500
1: vm-public.internal.cloudapp.net 2.584ms reached
1: vm-public.internal.cloudapp.net 2.147ms reached
Resume: pmtu 1500 hops 1 back 2
위 응답에는 대상 vm-public 인 홉이 하나 있다는 것을 알 수 있습니다.
Azure는 subnet-private 에서 subnet-1 로 트래픽을 직접 보냈습니다. 기본적으로 Azure는 트래픽을 서브넷 간에 직접 라우팅합니다.
베스천 세션을 닫습니다.
만든 리소스 사용을 마치면 리소스 그룹과 해당 리소스를 모두 삭제할 수 있습니다.
Azure Portal에서 리소스 그룹 을 검색하고 선택합니다.
리소스 그룹 페이지에서 test-rg 리소스 그룹을 선택합니다.
test-rg 페이지에서 리소스 그룹 삭제 를 선택합니다.
삭제 확인을 위한 리소스 그룹 이름 입력 에 test-rg 를 입력한 다음 삭제 를 선택합니다.
더 이상 필요하지 않은 경우 Remove-AzResourcegroup 을 사용하여 리소스 그룹 및 그룹에 포함된 모든 리소스를 제거할 수 있습니다.
$rgParams = @{
Name = "test-rg"
}
Remove-AzResourceGroup @rgParams -Force
더 이상 필요하지 않은 경우 az group delete 를 사용하여 리소스 그룹 및 그룹에 포함된 모든 리소스를 제거합니다.
az group delete \
--name test-rg \
--yes \
--no-wait
다음 단계
이 자습서에서는 다음을 수행합니다.
Azure Marketplace 에서 많은 유용한 네트워크 기능을 제공하도록 미리 구성된 다른 NVA를 배포할 수 있습니다.
라우팅에 대한 자세한 내용은 라우팅 개요 및 경로 테이블 관리 를 참조하세요.
가상 네트워크 서비스 엔드포인트를 사용하여 PaaS 리소스에 대한 네트워크 액세스를 제한하는 방법을 알아보려면 다음 자습서로 진행합니다.