클라우드,인프라
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(부분망) : 하나의 네트워크가 분할되어 나눠진 작은 네트워크
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의 주요 서비스
- 보안 그룹(Security Group) 과 네트워크 액세스 제어 목록(Network ACL)
- VPC 는 네트워크 통신과 트래픽에 대해 IP 와 Port 를 기준으로 통신을 허용하거나 차단한다. 이러한 서비스를 보안 그룹이나 네트워크 ACL 이라고 한다. - VPC 피어링 연결
- 피어링 연결을 비공개적으로 두 VPC 간에 트래픽을 라우팅할 수 있게 하기 위한 서로 다른 VPC 간의 네트워크 연결을 제공한다.
- 엔터프라이즈 기업의 글로벌 시스템을 구축하는 경우 저렴한 비용으로 안정성과 보안성 높은 네트워크 인프라를 활용할 수 있다. - NAT(Netword Address Translation) 게이트 웨이
- 외부 네트워크에 알려진 것과 다른 IP 주소를 이용하는 내부 네트워크에서,내부 IP 주소를 외부 IP 주소로 변화하는 작업을 수행하는 서비스이다.
- NAT 게이트 웨이는 Private Subnet 내에 있는 인스턴스를 인터넷 또는 다른 AWS 서비스에 연결하고, 외부망 또는 인터넷에서 해당 인스턴스에 연결하지 못하도록 구성하는 데 사용한다.
- 외부에 공개될 필요가 없거나, 보안상 중요한 서비스이지만 업데이트를 인터넷을 통해 받아야 하는 경우 NAT 게이트웨이나 NAT 인스턴스를 사용하게 된다.
- 조건 :
1. NAT 게이트를 생성하기 위해 Public Subnet을 지정
2. NAT 게이트웨이와 연결할 탄력적 IP 주소 필요
3. NAT 게이트웨이를 만든 후 인터넷 트래픽이 NAT 게이트웨이로 통신이 가능하도록 프라이빗 서브넷과
연결된 라우팅 테이블 업데이트 - VPC Endpoint
- Private Subnet 에 위치한 인스턴스는 인터넷과 연결되어 있는 S3 와 같은 공용 리소스를 연결할 수 없다. 이때 VPC Endpoint를 이용하면 빠르고 손쉽게 연결할 수 있다. - VPN(Virtual Prviate Network)
- AWS 관리형 VPN 연결을 생성하여 VPC 에서 원격의 네트워크에 접속 가능하도록 하이브리드 클라우드 환경을 구성할 수 있다.