Azure Virtual Network

GEONNY·2024년 10월 17일

Azure

목록 보기
6/8
post-thumbnail

이전 Azure 관련 글
Azure 시작하기 - IT관리자 생성
Azure Resource Group 생성
Azure Policy 등록
Azure lock - 리소스 변경 방지
Azure Virtual Machine

📌Azure Virtual Network

Azure Virtual Network(VNet)는 클라우드 기반 네트워크 서비스로, Azure 리소스들(가상 머신, 데이터베이스, 애플리케이션)이 서로 통신할 수 있는 격리된 네트워크 환경을 제공합니다. VNet은 Azure의 네트워킹 기본 단위로, 사용자가 클라우드에서 가상 네트워크를 설정하고 관리할 수 있는 유연성을 제공합니다.

📌Azure Vnet 특징

네트워크 격리 및 사용자 정의
Azure VNet은 각각 격리된 네트워크 환경을 제공하며, 사용자는 IP 주소 범위, 서브넷, 경로, 네트워크 보안 그룹 등을 정의할 수 있습니다.
IP 주소 범위를 선택하고 서브넷으로 분리하여 네트워크를 세분화할 수 있습니다.

Azure 리소스 간 통신
동일한 VNet 내에서 가상 머신, 데이터베이스, 애플리케이션 등 Azure 리소스 간의 통신이 가능합니다.
서브넷 간의 통신도 가능하며, 필요한 경우 네트워크 보안 그룹(NSG)을 통해 통신 규칙을 설정할 수 있습니다.

온프레미스와의 연결
Azure VNet은 온프레미스 데이터 센터와도 연결이 가능합니다. VPN Gateway 또는 ExpressRoute를 통해 온프레미스 네트워크와 Azure 네트워크 간의 통신을 설정할 수 있습니다.
이를 통해 하이브리드 클라우드 환경을 구성할 수 있습니다.

보안
Network Security Group(NSG)을 통해 인바운드 및 아웃바운드 트래픽을 제어할 수 있으며, 특정 IP 또는 포트에 대한 접근을 제한할 수 있습니다.
Azure Firewall 및 DDos Protection 서비스를 추가하여 네트워크를 보호할 수 있습니다.

인터넷 접근
VNet에 있는 리소스는 인터넷을 통한 트래픽 송수신이 가능합니다. 필요에 따라 특정 리소스만 인터넷에 노출하거나 공용 IP 주소를 할당할 수 있습니다.
NAT(Network Address Translation) 기능을 사용하여 VNet 내의 리소스가 외부로 트래픽을 송신할 수 있습니다.

다양한 연결 옵션
VNet Peering: 여러 VNet을 피어링(Peering)하여, 다른 네트워크에 있는 리소스와도 통신이 가능합니다. 이는 데이터 센터 간의 네트워크 연결처럼 작동합니다.
VNet-to-VNet 연결: 서로 다른 Azure 지역(Region)에 있는 VNet 간에도 연결할 수 있습니다.

📌Azure Vnet 사용 예시

가상 머신 간 통신
여러 개의 Azure 가상 머신을 단일 VNet에 배치하여 애플리케이션 서버, 데이터베이스 서버 간의 내부 통신을 설정할 수 있습니다.

하이브리드 클라우드 환경
온프레미스 네트워크와 Azure 네트워크를 ExpressRoute 또는 VPN을 통해 연결하여 하이브리드 클라우드 환경을 구축할 수 있습니다. 이를 통해 클라우드와 물리적 데이터 센터 간에 안전하고 빠른 데이터 전송을 설정할 수 있습니다.

웹 애플리케이션 호스팅
웹 서버, 데이터베이스 서버를 VNet 내에서 구성하고, 일부 서버만 인터넷에 노출하여 외부 공격을 방지하고 보안성을 높일 수 있습니다.

서비스 간 통신 보안
Azure Kubernetes Service(AKS)와 같은 마이크로서비스 아키텍처에서 서비스 간 네트워크를 격리하고, VNet 내부의 특정 서브넷으로만 통신을 허용하여 보안성을 강화할 수 있습니다.

📌고려 사항

IP 주소 설계
VNet을 설계할 때 IP 주소 범위를 신중하게 계획해야 합니다. 특히, 온프레미스 네트워크와 연결할 경우 IP 충돌이 발생하지 않도록 VNet 내의 IP 주소를 온프레미스와 중복되지 않도록 설정해야 합니다.

보안 정책
NSG(Network Security Group)를 통해 리소스에 대한 트래픽 규칙을 정의하고, 불필요한 접근을 차단하여 네트워크 보안을 강화해야 합니다.
추가적인 보안 서비스로 Azure Firewall을 설정할 수 있습니다.

성능
VNet 피어링이나 VPN Gateway와 같은 서비스는 트래픽이 증가할 경우 추가 비용이 발생할 수 있으며, 트래픽 용량과 대역폭에 맞는 적절한 성능을 고려해야 합니다.

비용
VNet 자체는 무료이지만, 네트워크 게이트웨이, VNet 피어링, ExpressRoute 등의 연결 옵션을 사용하면 별도의 데이터 전송 요금이 발생할 수 있습니다.

📌Azure Vnet의 주요 연결 방식

VNet Peering
VNet Peering은 동일한 Azure 리전에 있는 VNet 간 또는 다른 리전에 있는 VNet 간의 통신을 저비용으로 설정하는 방법입니다. 피어링된 VNet 간에는 대역폭 제한 없이 빠르게 통신할 수 있습니다.

VNet-to-VNet 연결
VNet-to-VNet 연결은 VPN 게이트웨이를 사용하여 두 개의 VNet을 연결하는 방식으로, 서로 다른 Azure 지역(Region)에 있는 VNet 간에도 연결할 수 있습니다.

VPN Gateway
온프레미스 네트워크와 Azure VNet을 연결할 때 VPN Gateway를 사용하여 암호화된 터널을 통해 안전하게 통신할 수 있습니다.

ExpressRoute
고속 전용 회선을 통해 온프레미스 데이터 센터와 Azure를 연결하는 서비스로, 인터넷을 경유하지 않고 안정적이고 빠른 데이터 전송이 가능합니다.

📌Azure Vnet 생성

Virtual networks > Create 를 통해 Virtual Network를 생성할 수 있습니다. 근데 Virtual Networks 메뉴에 들어가면 이미 Virtual Network가 생성되어 있습니다. 이유는 이전 [Azure Virtual Machine]에서 VM을 생성할 때 자동으로 Vnet이 생성되었기 때문입니다. VM 생성의 Networking Tab에는 Virtual Network를 선택하는 옵션이 있습니다. 필수 옵션이지만 선택하지 않으면 기본적으로 VM명-vnet 으로 자동 생성합니다. 그래서 이전에 생성한 dVM과 dVML은 같은 Vnet으로 설정되어 서로간 통신이 가능한 상태가 됩니다.

📍왜 VNet이 자동으로 생성될까?

네트워크 연결 필수
VM은 기본적으로 네트워크에 연결되어야 하므로, VNet이 없을 경우 Azure는 기본 VNet과 서브넷을 생성해 이를 자동으로 연결합니다.

VM 간 통신
VNet은 동일한 네트워크 내에서 여러 VM 간의 통신을 가능하게 하며, 외부와의 연결을 설정할 수 있는 환경을 제공합니다.

기본 설정의 편의성
Azure는 사용자의 편의를 위해 기본적인 네트워크 설정을 자동으로 처리해 주며, 사용자가 직접 VNet을 생성하지 않아도 되게끔 도와줍니다.

신규 Vnet을 생성해 보겠습니다. dRG Resource Group 은 VM, Vnet 다 있으니 sRG Resource Group의 Vnet을 생성해 보도록 하죠. Virtual Networks > Create 를 차례대로 클릭합니다. 아래와 같이 입력하고 Next.

Security tab 은 default 로 설정하고 IP addresses tab에선 10.1.0.0 대역으로 변경해줍니다.

나머지 옵션은 수정하지 않고 그대로 생성해 줍니다.
Validation failed 오류가 난다면 이유는 이전에 Azure Lock 에서 sRG Resource Group 에 Read-only lock을 걸어두었기 때문입니다. Resource Groups > sRG > Locks 로 이동해 생성했던 Lock 을 삭제해줍니다.

또는, Allowed locations 오류가 난다면 이전에 Azure Policy 에서 sRG Resource Group 에 Allowed locations 정책을 추가해 East US로만 설정하도록 해놨기 때문입니다. Policy > Assignments > Allowed locations 로 이동해 해당 정책을 삭제해 줍니다.

이전 Policy, Lock 관련 글을 보지 않으신 분은 위의 유효성 오류 없이 생성될 것입니다.

profile
Back-end developer

0개의 댓글