Azure Virtual Network

jung_ho9 개발일지·2022년 12월 15일
0

[AZ-900] Microsoft Azure

목록 보기
13/43
post-thumbnail

Azure Virtual Network 설명


Azure 가상 네트워크와 가상 서브넷을 사용하면 VM, 웹앱 및 데이터베이스와 같은 Azure 리소스가 서로 통신할 수 있고 인터넷의 사용자 및 온-프레미스 클라이언트 컴퓨터와 통신할 수 있습니다. Azure 네트워크를 다른 Azure 리소스와 연결되는, 리소스가 있는 온-프레미스 네트워크의 확장이라고 생각할 수 있습니다.

Azure Virtual Network는 다음과 같은 주요 네트워킹 기능을 제공합니다.

  • 격리 및 구분
  • 인터넷 통신
  • Azure 리소스 간 통신
  • 온-프레미스 리소스와 통신
  • 네트워크 트래픽 라우팅
  • 네트워크 트래픽 필터링
  • 가상 네트워크 연결

Azure 가상 네트워킹은 퍼블릭 엔드포인트와 프라이빗 엔드포인트를 모두 지원하여 내외부의 리소스가 다른 내부 리소스와 통신할 수 있게 합니다.

  • 퍼블릭 엔드포인트 : 공용 IP 주소를 사용하며 전 세계 어디서나 액세스할 수 있습니다.
  • 프라이빗 엔드포인트 : 가상 네트워크 내에 존재하며 해당 가상 네트워크의 주소 공간 내에서 개인 IP 주소를 사용합니다.

격리 및 구분


Azure 가상 네트워크를 사용하면 격리된 여러 가상 네트워크를 만들 수 있습니다. 가상 네트워크를 설정하는 경우 공용 또는 개인 IP 주소 범위를 사용하여 개인 IP 주소 공간을 정의합니다. IP 범위는 가상 네트워크 내에만 존재하며 인터넷 라우팅이 불가능합니다. 이러한 IP 주소 공간을 서브넷으로 분할하고, 정의된 주소 공간의 일부를 명명된 각 서브넷에 할당할 수 있습니다.

이름 확인의 경우 Azure에 기본 제공되는 이름 확인 서비스를 사용할 수 있습니다. 내부 또는 외부 DNS 서버를 사용하도록 가상 네트워크를 구성할 수도 있습니다.

인터넷 통신


공용 IP 주소를 Azure 리소스에 할당하거나 리소스를 공용 부하 분산 장치 뒤에 배치하여 인터넷에서 들어오는 연결이 가능하도록 설정할 수 있습니다

Azure 리소스 간 통신


Azure 리소스를 사용하여 서로 안전하게 통신할 수 있도록 설정하려 합니다. 다음 두 가지 방법 중 하나를 수행할 수 있습니다.

  • 가상 네트워크는 VM뿐만 아니라 Power Apps용 App Service Environment, Azure Kubernetes Service 및 Azure 가상 머신 확장 집합과 같은 다른 Azure 리소스도 연결할 수 있습니다.

  • 서비스 엔드포인트를 Azure SQL Databases 및 스토리지 계정과 같은 다른 Azure 리소스 형식에 연결할 수 있습니다. 이 방식을 사용하면 여러 Azure 리소스를 가상 네트워크에 연결하여 보안을 개선하고 리소스 간에 최적의 라우팅을 제공할 수 있습니다.

온-프레미스 리소스와 통신

Azure 가상 네트워크를 사용하면 온-프레미스 환경 및 Azure 구독 내에서 리소스를 함께 연결할 수 있습니다. 실제로 로컬 환경과 클라우드 환경 모두에 걸쳐 있는 네트워크를 만들 수 있습니다. 이 연결을 수행하는 세 가지 메커니즘이 있습니다.

  • P2S 가상 프라이빗 네트워크 연결은 조직 외부의 컴퓨터에서 기업 네트워크 내부로 연결됩니다. 이 경우에 클라이언트 컴퓨터는 암호화된 VPN 연결을 시작하여 Azure 가상 네트워크에 연결합니다.
  • S2S VPN(가상 사설망)은 온-프레미스 VPN 디바이스 또는 게이트웨이를 가상 네트워크의 Azure VPN 게이트웨이에 연결합니다. 실제로 Azure의 디바이스는 로컬 네트워크에 있는 것으로 표시될 수 있습니다. 연결은 암호화되고 인터넷에서 작동합니다.
  • Azure ExpressRoute는 Azure에 대한 전용 프라이빗 연결을 제공합니다. 이 연결은 인터넷을 통해 이동하지 않습니다. 대역폭을 더 키우고 보안 수준을 더 높여야 하는 환경에는 Azure ExpressRoute를 사용하는 것이 가장 좋습니다.

네트워크 트래픽 라우팅

본적으로 Azure에서는 연결된 가상 네트워크의 서브넷, 온-프레미스 네트워크 및 인터넷 간에 트래픽을 라우팅합니다. 다음과 같이 라우팅을 제어하고 해당 설정을 재정의할 수도 있습니다.

  • 경로 테이블을 사용하면 트래픽을 전달하는 방식에 대한 규칙을 정의할 수 있습니다. 서브넷 간에 패킷이 라우팅되는 방법을 제어하는 사용자 지정 경로 테이블을 만들 수 있습니다.
  • BGP(Border Gateway Protocol)는 Azure VPN 게이트웨이, Azure Route Server 또는 Azure ExpressRoute로 작업하여 온-프레미스 BGP 경로를 Azure 가상 네트워크로 전파합니다.

네트워크 트래픽 필터링

Azure 가상 네트워크를 사용하면 다음 방법을 사용하여 서브넷 간 트래픽을 필터링할 수 있습니다.

  • 네트워크 보안 그룹은 Azure 리소스로서 여러 인바운드 및 아웃바운드 보안 규칙을 포함할 수 있습니다. 원본 및 대상 IP 주소, 포트 및 프로토콜과 같은 요인에 따라 트래픽을 허용하거나 차단하도록 이러한 규칙을 정의할 수 있습니다.
  • 네트워크 가상 어플라이언스는 강화된 네트워크 어플라이언스와 비교될 수 있는 특수한 VM입니다. 네트워크 가상 어플라이언스는 방화벽 실행 또는 WAN(광역 네트워크) 최적화 수행과 같은 특정 네트워크 기능을 수행합니다.

가상 네트워크 연결

가상 네트워크 피어링을 사용하여 가상 네트워크를 함께 연결할 수 있습니다. 피어링을 사용하면 두 가상 네트워크끼리 서로 직접 연결할 수 있습니다. 피어링된 네트워크 간의 네트워크 트래픽은 비공개이며 공용 인터넷에 들어가지 않는 Microsoft 백본 네트워크로 이동합니다. 피어링을 사용하면 각 가상 네트워크의 리소스가 서로 통신할 수 있습니다. 이러한 가상 네트워크는 별도 지역에 위치할 수 있으며, Azure를 통해 상호 연결된 글로벌 네트워크를 만들 수 있습니다.

UDR(사용자 정의 경로)을 사용하면 가상 네트워크 내의 서브넷 간 또는 가상 네트워크 간의 라우팅 테이블을 제어할 수 있습니다. 이렇게 하면 네트워크 트래픽 흐름을 보다 강하게 제어할 수 있습니다.

작업 1: 웹 서버 액세스

  1. 다음 az vm list-ip-addresses 명령을 실행하여 VM의 IP 주소를 가져오고 결과를 Bash 변수로 저장합니다.
IPADDRESS="$(az vm list-ip-addresses \
  --resource-group [sandbox resource group name] \
  --name my-vm \
  --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
  --output tsv)"
  1. 다음 curl 명령을 실행하여 홈페이지를 다운로드합니다.
curl --connect-timeout 5 http://$IPADDRESS

--connect-timeout 인수는 연결될 때까지 최대 5초를 허용하도록 지정합니다. 5초가 지나면 연결 시간이 초과되었음을 나타내는 오류 메시지가 표시됩니다.

오류 메세지
curl: (28) Connection timed out after 5001 milliseconds

작업 2 :현재 네트워크 보안 그룹 규칙 나열

웹 서버에 액세스하지 못했습니다. 이유를 확인하기 위해 현재 NSG 규칙을 살펴보겠습니다.

  1. 다음 az network nsg list 명령을 실행하여 VM에 연결된 네트워크 보안 그룹을 나열합니다.
az network nsg list \
  --resource-group learn-ec12ec44-c95a-41f6-a739-b70c5ff727e9 \
  --query '[].name' \
  --output tsv

출력 결과

my-vmNSG
  1. 다음 az network nsg rule list 명령을 실행하여 my-vmNSG라는 NSG와 연결된 규칙을 나열합니다
az network nsg rule list \
  --resource-group learn-ec12ec44-c95a-41f6-a739-b70c5ff727e9 \
  --nsg-name my-vmNSG

출력에 JSON 형식으로 된 많은 양의 텍스트가 표시됩니다. 다음 단계에서는 해당 출력을 보다 쉽게 읽을 수 있도록 비슷한 명령을 실행합니다.

  1. az network nsg rule list 명령을 한 번 더 실행합니다. 이번에는 --query 인수를 사용하여 각 규칙의 이름, 우선 순위, 영향을 받는 포트 및 액세스(허용 또는 거부)만 검색합니다. --output 인수는 출력을 읽기 쉬운 표 형식으로 만듭니다.
az network nsg rule list \
  --resource-group learn-ec12ec44-c95a-41f6-a739-b70c5ff727e9 \
  --nsg-name my-vmNSG \
  --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
  --output table

출력 결과

Name              Priority    Port    Access
-----------------  ----------  ------  --------
default-allow-ssh  1000        22      Allow

기본적으로 Linux VM의 NSG는 포트 22에서의 네트워크 액세스만 허용합니다. 이렇게 하면 관리자가 시스템에 액세스할 수 있습니다. 또한 HTTP를 통한 액세스를 허용하는 포트 80에서 인바운드 연결을 허용해야 합니다.

작업 3 : 네트워크 보안 규칙 만들기

여기에서는 포트 80(HTTP)에서의 인바운드 액세스를 허용하는 네트워크 보안 규칙을 만듭니다.

  1. 다음 az network nsg rule create 명령을 실행하여 포트 80에서의 인바운드 액세스를 허용하는 allow-http라는 규칙을 만듭니다.
az network nsg rule create \
  --resource-group learn-ec12ec44-c95a-41f6-a739-b70c5ff727e9 \
  --nsg-name my-vmNSG \
  --name allow-http \
  --protocol tcp \
  --priority 100 \
  --destination-port-range 80 \
  --access Allow

학습 목적으로 우선 순위를 100으로 설정합니다. 해당 사례에서 우선 순위는 중요하지 않습니다. 포트 범위가 겹치는 경우에는 우선 순위를 고려해야 합니다.

  1. 구성을 검증하려면 az network nsg rule list를 실행하여 업데이트된 규칙 목록을 확인합니다.
az network nsg rule list \
  --resource-group learn-ec12ec44-c95a-41f6-a739-b70c5ff727e9 \
  --nsg-name my-vmNSG \
  --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
  --output table

출력 결과

Name              Priority    Port    Access
-----------------  ----------  ------  --------
default-allow-ssh  1000        22      Allow
allow-http        100        80      Allow

작업 4: 웹 서버에 다시 액세스

  1. 이전에 실행한 것과 동일한 curl 명령을 실행합니다.
curl --connect-timeout 5 http://$IPADDRESS

출력 내용

<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
  1. 선택적 단계로 웹 서버를 가리키는 브라우저 탭을 새로 고칩니다.
profile
꾸준하게 기록하기

0개의 댓글