클라우드,인프라

VPN / VPC 와 AWS VPC

개발하고 기록하는 개발자 2022. 4. 19. 01:29

1.  네트워크 

- 네트워크(network)란 컴퓨터들이 통신망을 통해 서로 그물처럼 연결된 체계를 말한다. 

- 컴퓨터들이 서로 통신을 하기 위해서는 반드시 지켜야하는 약속이 있는 있는 데 이를 프로토콜(Protocol)이라고 한다. 

 

2.  VPN (Virtual Private Network : 가상 사설망) 

공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다.

- 인터넷과 같은 공공망 위에서 표준 프로토콜을 써서 전달되거나, 가상 사설망 서비스 제공자와 고객이 서비스 수준 계약을 맺은 후 서비스 제공자의 사설망을 통해 전달된다. 

- AWS는 VPC(Virtual Private Cloud) 와 VPC Gateway를 통해 On-Premise 의 VPN 장비와 AWS 간의 VPN 을 연결할 수 있다. 

 

3. VPC (Virtual Private Cloud)

- VPC 는 논리적으로 격리된 가상의 네트워크에서 리소스를 운영할 수 있는 기능을 제공한다. 

- VPC 에서 IPv4 와 IPv6를 모두 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스할 수 있다. 

- AWS VPC 에서는 보안 그룹 및 네트워크 제어 목록을 포함한 다중 보안 계층을 활용하여
  각 서브넷(Subnet)에서 EC2 인스턴스에 대한 액세스를 제어할 수 있습니다. 

※ Subnet(부분망) : 하나의 네트워크가 분할되어 나눠진 작은 네트워크

VPC 개념도

4. VPC의 구성요소 

  • 주소
    - Private IP : 인터넷을 통해 연결할 수 없고, VPC 내부에서만 사용할 수 있는 IP 주소이다. Private IP 는 VPC 에서 시작된 인스턴스 서브넷의 범위에서 자동으로 할당되며, 동일 네트워크에서 인스턴스 간 통신에 사용할 수 있다. 

    - Public IP : 인터넷을 통해 연결할 수 있는 IP 주소이다. 인스턴스와 인터넷 간의 통신을 위해 사용할 수 있고, EC2 생성 시 옵션으로 퍼블릭 IP 주소의 사용 여부를 선택할 수 있다. 또한 인스턴스에서 퍼블릭 IP 주소를 수동으로 연결하거나 해제할 수 없다.
    인스턴스가 재부팅되면 새로운 퍼블릭 IP 주소가 할당된다.

    - Elastic IP : 동적 컴퓨팅을 위해 고안된 고정 퍼블릭 IP 주소이다. VPC 의 모든 인스턴스와 네트워크 인터페이스에 탄성 IP 를 할당 수 있으며, 다른 인스턴스에 주소를 신속하게 다시 매칭하여 인스터 장애 조치를 수행할 수도 있다. 사용 가능한 탄력적 IP 주소는 5개로 제한되며, 이를 절약하기 위해 NAT 디바이스를 사용할 수 있다. 

  • VPC 와 서브넷
    - VPC : 사용자의 전용 가상 네트워크를 말한다. AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있으며 EC2 와 같은 AWS 리소스를 VPC 에서 실행할 수 있다. 또한 VPC 는 Region 의 모든 AZ(가용 영역) 에 적용되며 각 가용 영역에 하나 이상의 서브넷을 추가할 수 있다. 

    - 서브넷(Subnet) : VPC 내부의 네트워크에서도 서비스 목적에 따라 IP Block 으로 나누어 구분할 수 있는데, 이렇게 분리된 IP Block의 모음을 서브넷이라고 한다. 단일 가용 영역에서만 생성할 수 있으며, 여러 가용 영역으로 확장할 수 없다.  

  • VPC와 서브넷의 사이즈
    - CIDR(Classless Inter-Domain Routing) : VPC 를 생성할 때 사용하게 될 IP 주소의 범위(예 : 10.0.00/16)를 지정하게 되며 이를 CIDR 블록 형태로 지정해야 한다. 

    - 예를 들면 VPC룰 생성하는 경우 10.0.0.0/24 로 VPC 를 생성하게 되면 256개의 IP 주소를 지원하게 되며, CIDR 블록을 각각 128개의 IP 주소를 지원하는 2개의 서브넷으로 나눌 수 있다. (자세한 CIDR 블록 계산 방법은 네이버나 구글 참조) 
  • Public Subnet 과 Private Subnet : 
    - Public Subnet : 서브넷 네트워크 트래픽이 인터넷 게이트웨이로 라우팅이 되는 서브넷.
    EC2 인스턴스가 IP를 통해 인터넷과 통신을 할 수 있게 하려면, Public IP(퍼블릭 IP) 주소나 Elastic IP(탄력적 IP) 가 있어야 한다.  
    일반적으로 인터넷망을 통해 서비스를 수행하는 웹 서비스는 퍼블릭 서브넷에 생성한다. 

    - Private Subnet : 서브넷 네트워크 트래픽이 인터넷 게이트웨이로 라우팅이 되지 않는 서브넷
     일반적으로 인터넷에 직접 연결할 필요가 없고, 보다 높은 보안성을 필요로 하는 DB 서버는 프라이빗 서브넷에 생성한다. 
    ※ 인터넷 게이트웨이 : VPC 와 인터넷 간의 통신을 할 수 있게 해줌
  • 라우팅 테이블(Routing Table)
    - 각 서브넷은 서브넷 외부로 나가는 아웃바운드 트래픽에 대해 허용된 경로를 지정하는 라우팅 테이블이 연결되어 있어야 한다. 
    생성된 서브넷은 자동으로 VPC 의 기본 라우팅 테이블과 연결되며, 테이블의 내용을 변경할 수 있다. 
    - 라우팅 테이블은 VPC의 서브넷 내에서 생성된 네트워크 패킷를 목적지 주소로 이용하기 위해 어떤 경로로 이동되어야 하는지
    알려주는 역할을 한다. 

5. VPC의 주요 서비스 

  1. 보안 그룹(Security Group) 과 네트워크 액세스 제어 목록(Network ACL) 
    - VPC 는 네트워크 통신과 트래픽에 대해 IP 와 Port 를 기준으로 통신을 허용하거나 차단한다. 이러한 서비스를 보안 그룹이나 네트워크 ACL 이라고 한다. 

  2. VPC 피어링 연결
    - 피어링 연결을 비공개적으로 두 VPC 간에 트래픽을 라우팅할 수 있게 하기 위한 서로 다른 VPC 간의 네트워크 연결을 제공한다. 
    - 엔터프라이즈 기업의 글로벌 시스템을 구축하는 경우 저렴한 비용으로 안정성과 보안성 높은 네트워크 인프라를 활용할 수 있다. 

  3. NAT(Netword Address Translation) 게이트 웨이 
    - 외부 네트워크에 알려진 것과 다른 IP 주소를 이용하는 내부 네트워크에서,내부 IP 주소를 외부 IP 주소로 변화하는 작업을 수행하는 서비스이다. 
    - NAT 게이트 웨이는 Private Subnet 내에 있는 인스턴스를 인터넷 또는 다른 AWS 서비스에 연결하고, 외부망 또는 인터넷에서 해당 인스턴스에 연결하지 못하도록 구성하는 데 사용한다. 
    - 외부에 공개될 필요가 없거나, 보안상 중요한 서비스이지만 업데이트를 인터넷을 통해 받아야 하는 경우 NAT 게이트웨이나 NAT 인스턴스를 사용하게 된다. 
    - 조건 :
      1. NAT 게이트를 생성하기 위해 Public Subnet을 지정 
      2. NAT 게이트웨이와 연결할 탄력적 IP 주소 필요 
      3. NAT 게이트웨이를 만든 후 인터넷 트래픽이 NAT 게이트웨이로 통신이 가능하도록 프라이빗 서브넷과
      연결된 라우팅 테이블 업데이트  

  4. VPC Endpoint 
    - Private Subnet 에 위치한 인스턴스는 인터넷과 연결되어 있는 S3 와 같은 공용 리소스를 연결할 수 없다. 이때 VPC Endpoint를 이용하면 빠르고 손쉽게 연결할 수 있다. 

  5. VPN(Virtual Prviate Network) 
    - AWS 관리형 VPN 연결을 생성하여 VPC 에서 원격의 네트워크에 접속 가능하도록 하이브리드 클라우드 환경을 구성할 수 있다.