Azure CLI를 사용하여 가상 네트워크 피어링으로 가상 네트워크 연결
가상 네트워크 피어링을 사용하여 가상 네트워크를 서로 연결할 수 있습니다. 가상 네트워크가 피어링되면 두 가상 네트워크에 있는 리소스가 같은 가상 네트워크에 있는 리소스인 것처럼 같은 대기 시간 및 대역폭으로 서로 통신할 수 있습니다.
이 문서에서는 다음 방법을 설명합니다.
두 가상 네트워크 만들기
가상 네트워크 피어링을 사용하여 두 가상 네트워크 연결
각 가상 네트워크에 VM(가상 머신) 배포
VM 간 통신
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
사전 요구 사항
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- 이 문서에는 Azure CLI 버전 2.0.28 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
가상 네트워크 만들기
가상 네트워크를 만들기 전에 가상 네트워크에 대한 리소스 그룹과 이 아티클에서 만든 다른 모든 리소스를 만들어야 합니다. az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예에서는 eastus 위치에 test-rg라는 리소스 그룹을 만듭니다.
az group create \
--name test-rg \
--location eastus
az network vnet create를 사용하여 가상 네트워크를 만듭니다. 다음 예에서는 주소 접두사가 10.0.0.0/16인 vnet-1이라는 가상 네트워크를 만듭니다.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
주소 접두사가 10.1.0.0/16인 vnet-2라는 가상 네트워크를 만듭니다.
az network vnet create \
--name vnet-2 \
--resource-group test-rg \
--address-prefixes 10.1.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.1.0.0/24
가상 네트워크 피어링
가상 네트워크 ID 간에 피어링이 설정됩니다. az network vnet show를 사용하여 각 가상 네트워크의 ID를 가져오고 ID를 변수에 저장합니다.
# Get the id for vnet-1.
vNet1Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-1 \
--query id --out tsv)
# Get the id for vnet-2.
vNet2Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-2 \
--query id \
--out tsv)
az network vnet Peering create를 사용하여 vnet-1에서 vnet-2로의 피어링을 만듭니다. --allow-vnet-access
매개 변수를 지정하지 않으면 피어링이 설정되지만 이를 통해 통신이 전달될 수 없습니다.
az network vnet peering create \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--remote-vnet $vNet2Id \
--allow-vnet-access
이전 명령 실행 후 반환된 출력에서 peeringState는 Initiated로 표시됩니다. 피어링은 vnet-2에서 vnet-1로 피어링을 만들 때까지 시작됨 상태로 유지됩니다. vnet-2에서 vnet-1로 피어링을 만듭니다.
az network vnet peering create \
--name vnet-2-to-vnet-1 \
--resource-group test-rg \
--vnet-name vnet-2 \
--remote-vnet $vNet1Id \
--allow-vnet-access
이전 명령 실행 후 반환된 출력에서 peeringState는 Connected로 표시됩니다. Azure는 또한 vnet-1-to-vnet-2 피어링의 피어링 상태를 연결됨으로 변경했습니다. az network vnet peering show를 사용하여 vnet-1-to-vnet-2 피어링의 피어링 상태가 연결됨으로 변경되었는지 확인합니다.
az network vnet peering show \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--query peeringState
두 가상 네트워크의 피어링에 대한 peeringState가 Connected가 될 때까지, 한 가상 네트워크의 리소스는 다른 가상 네트워크의 리소스와 통신할 수 없습니다.
가상 머신 만들기
이후 단계에서 서로 통신할 수 있도록 각 가상 네트워크에서 VM을 만듭니다.
첫 번째 VM 만들기
az vm create로 VM을 만듭니다. 다음 예에서는 vnet-1 가상 네트워크에 vm-1이라는 VM을 만듭니다. 기본 키 위치에 SSH 키가 없는 경우 이 명령에서 키를 만듭니다. 특정 키 집합을 사용하려면 --ssh-key-value
옵션을 사용합니다. --no-wait
옵션은 백그라운드에서 VM을 만들기 때문에 다음 단계를 계속 진행할 수 있습니다.
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--generate-ssh-keys \
--no-wait
두 번째 VM 만들기
vnet-2 가상 네트워크에 VM을 만듭니다.
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-2 \
--subnet subnet-1 \
--generate-ssh-keys
VM을 만드는 데 몇 분이 걸립니다. VM을 만든 후 Azure CLI는 다음 예제와 비슷한 정보를 표시합니다.
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
"location": "eastus",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "13.90.242.231",
"resourceGroup": "test-rg"
}
publicIpAddress를 기록해 둡니다. 이 주소는 이후 단계에서 인터넷을 통해 VM에 액세스하는 데 사용됩니다.
참고 항목
Azure는 공용 IP 주소가 할당되지 않았거나 내부 기본 Azure Load Balancer의 백 엔드 풀에 있는 VM에 대한 기본 아웃바운드 액세스 IP를 제공합니다. 기본 아웃바운드 액세스 IP 메커니즘은 구성할 수 없는 아웃바운드 IP 주소를 제공합니다.
다음 이벤트 중 하나가 발생하면 기본 아웃바운드 액세스 IP가 사용하지 않도록 설정됩니다.
- 공용 IP 주소가 VM에 할당됩니다.
- VM은 아웃바운드 규칙 유무에 관계없이 표준 Load Balancer의 백 엔드 풀에 배치됩니다.
- Azure NAT Gateway 리소스는 VM의 서브넷에 할당됩니다.
유연한 오케스트레이션 모드에서 가상 머신 확장 집합을 사용하여 만드는 VM에는 기본 아웃바운드 액세스 권한이 없습니다.
Azure의 아웃바운드 연결에 대한 자세한 내용은 Azure의 기본 아웃바운드 액세스 및 아웃바운드 연결에 SNAT(원본 네트워크 주소 변환) 사용을 참조하세요.
VM 간 통신
다음 명령을 사용하여 vm-2 VM으로 SSH 세션을 만듭니다. <publicIpAddress>
를 VM의 공용 IP 주소로 바꿉니다. 이전 예제의 공용 IP 주소는13.90.242.231입니다.
ssh <publicIpAddress>
vnet-1에서 VM을 핑합니다.
ping 10.0.0.4 -c 4
4개의 응답을 받게 됩니다.
vm-2 VM에 대한 SSH 세션을 닫습니다.
리소스 정리
더 이상 필요하지 않은 경우 az group delete를 사용하여 리소스 그룹 및 그룹에 포함된 모든 리소스를 제거합니다.
az group delete \
--name test-rg \
--yes
다음 단계
이 문서에서는 가상 네트워크 피어링을 사용하여 동일한 Azure 지역에 있는 두 네트워크를 연결하는 방법을 배웠습니다. 다른 지원되는 지역과 다른 Azure 구독에 있는 가상 네트워크를 피어링하고 피어링을 사용하여 허브 및 스포크 네트워크 디자인을 만들 수도 있습니다. 가상 네트워크 피어링에 대한 자세한 내용은 가상 네트워크 피어링 개요 및 가상 네트워크 피어링 관리를 참조하세요.
VPN을 통해 자신의 컴퓨터를 가상 네트워크에 연결하고, 가상 네트워크 또는 피어링된 가상 네트워크의 리소스와 상호 작용할 수 있습니다. 가상 네트워크 문서에 설명된 많은 태스크를 완료하는 재사용이 가능한 스크립트는 스크립트 샘플을 참조하세요.