All Articles

AWS VPC 기본

지금 일하는 곳에서 따로 운영해주시는 분이 없어 하나씩 알아보고 필요한 부분을 직접 구성해야했다. 물어볼 사람이 없어 관련 책과 aws 문서를 보며 공부했다. VPC의 기본적인 것을 공부한 기록을 남긴다.

aws vpc 구조 예시

테넌트(Tennant)

AWS에서 사용자가 사용하는 가장 큰 단위이며, AWS 계정이 테넌트에 해당한다. 프로젝트 단위로 구성하거나 팀 단위로 구성하기도 한다는데 우리는 하나의 계정에서 모두 진행했다. 프로젝트 단위로 테턴트를 구성할 정도면 프로젝트가 엄청 커야하지 않을까?

리전(Region)

AWS는 전세계 여러곳에 인프라를 구축해놓고 있다. 리전은 클라우드 인프라가 위치한 지역을 의미하며 각 리전은 독립적인 환경으로 구성되어 있다. 그래서 여러 리전에 걸쳐있는 가상 네트워크를 만드는 것은 AWS에서는 불가능하다. 오픈스택에서는 가능한 것 같다.

VPC(Virtual Pricate Cloud)

리전에 독립된 가상 사설 클라우드를 의미한다. VPC는 AWS 클라우드 내에서 다른 가상 네트워크와 논리적으로 분리되어 있다. 리전 내에 여러개 만들 수 있으나 제한이 있다(리전당 5개). 처음 생성할 때 CIDR을 설정해주어야 하는데 사설망 대역으로 설정하는 것을 권장한다. 그렇지 않으면 설정한 CIDR 대역에 있는 인터넷IP로는 접근할 수 없다. VPC와 함께 생성되는 기본 라우트 테이블에 VPC의 CIDR 블럭을 목적지로 하는 local 규칙(이 규칙은 삭제 불가)이 있기 때문에 VPC내에서 해당 CIDR 블럭 범위에 있는 IP를 찾을 때에는 네트워크 내부에서 찾으려하기 때문이다. 사설망 대역은 10.0.0.0/8, 172.16.0.0/12 등이 있다.

서브넷(Subnet)

가상 머신 인스턴스가 사용할 수 있는 Pricate IP의 범위이며, 실제 리소스가 생성되는 네트워크이다. VPC CIDR 블록 범위에 속하는 CIDR 블록을 설정할 수 있다. 하나의 서브넷이 하나의 가용영역에 배치되며 가용영역의 수 만큼 생성할 수 있다. 서브넷의 트레픽이 인터넷 게이트웨이로 라우팅되면 퍼블릭 서브넷, 그렇지 않으면 프라이빗 서브넷이 된다.

가용영역(Availability Zone)

리전 내 위치한 데이터 센터를 의미한다. 실제 리소스가 실행되는 위치이다. 위에서도 언급했지만 서브넷은 가용영역 별로 설정할 수 있다. 가상 머신 인스턴스와 블록스토리지는 다른 AZ에 위치하면 연결할 수 없다.

탄력적 IP(Elastic IP)

가상 머신 리소스가 인스턴스IP가 필요한 경우 고정적인 IPv4 주소를 할당하여 내/외부 통신이 가능하도록 한다. ec2의 경우 생성시 퍼블릭 IP를 할당 받을 수 있지만 유동적인 IP기 때문에 인스턴스를 재시작하는 경우 IP가 바뀌게 된다. 퍼블릭 IPv4 주소는 제한된 자원이기 때문에 리전당 5개로 생성이 제한된다.

보안 그룹(Security Group)

가상 머신 인스턴스가 주고받는 트레픽을 앞에서 필터링해준다. 인바운스, 아웃바운스 트레픽을 따로 제어할 수 있고, 서브넷 수준이 아니라 인스턴스 수준에서 동작하므로 여러 인스턴스에 같은 보안그룹을 설정하거나, 서브넷 안에 인스턴스들에 각각 다른 보안그룹을 할당할 수 있다.

라우트 테이블(Route Table)

서브넷은 라우트 테이블을 사용해 목적지를 찾아간다. VPC 생성시 기본 라우팅 테이블이 만들어지고 연결된다. 사용자 지정 라우팅 테이블도 설정이 가능하다. 라우트 테이블은 서브넷과 VPC와 연결된다.

인터넷 게이트웨이(Internet Gateway)

VPC는 격리된 네트워크 환경이기 때문에 인터넷에 연결하려면 인터넷 게이트웨이가 필요하다. 인터넷을 사용하려는 인스턴스에 퍼블릭 IP가 할당되어 있고 인스턴스가 속한 서브넷과 연결된 라우트 테이블에 인터넷 게이트웨이를 연결하면 인스턴스가 인터넷에 접속할 수 있다.

네트워크 ACL

보안그룹이 인스턴스 앞단에서 트레픽을 제어한다면 ACL은 서브넷 앞단에서 트레픽을 제어한다.

NAT 게이트웨이

Private 서브넷의 인스턴스가 인터넷이나 다른 AWS 서비스에 연결하려 할 때 사용한다. 생성시 NAT가 속할 퍼블릭 서브넷을 지정하고 EIP 설정해야 한다. 그리고 인터넷 바운스 트레픽이 NAT 게이트웨이를 향하도록 설정한 라우트 테이블에 연결된 프라이빗 서브넷이 있으면 해당 서브넷의 인스턴스는 인터넷에 연결 할 수 있다.

*reference: 그림으로 배우는 클라우드 인프라와 API의 구조, Amazon VPC란 무엇인가?