Amazon EC2 에서 EC2를 생성해 보았다. EC2와 같이 직접 프로비저닝하고 관리하는 자원은 보통 VPC (Virtual Private Cloud)에 생성된다. 실습을 위해서 Default VPC에서 생성해 보았지만, 실제로 배포할 서비스라면 AWS 네트워크에 대해서 잘 알아두고 적절하게 구성할 필요가 있다.
먼저 가장 큰 단위인 Amazon VPC(Virtual Private Cloud)에 대해서 알아보자. VPC는 특정 리전 내에서 AWS 자원을 배치할 수 있는 가상의 네트워크이다. 내부 통신을 위해 사설 IP (Private IP) 대역을 사용하며, Subnet mask를 활용하는 CIDR 형태의 주소를 사용한다.
CIDR (Classless Inter-Domain Routing)
CIDR은 IP를 사용할 때 클래스로 네트워크 주소를 구분하지 않고 Subnet mask를 사용한다. 클래스 기반 방식보다 더 유연하게 네트워크 크기를 조절할 수 있다.
https://aws.amazon.com/ko/what-is/cidr/
Private IP
외부 통신과 별개로, 특정 네트워크 내에서만 통신하기 위한 IP 주소. 따라서 분리된 네트워크에서는 Private IP가 중복되어도 문제없다. 아래 대역을 Private IP로 사용할 수 있다.
https://en.wikipedia.org/wiki/Private_network
- 10.0.0.0/8
10.0.0.0 – 10.255.255.255- 172.16.0.0/12
172.16.0.0 – 172.31.255.255- 192.168.0.0/16
192.168.0.0 – 192.168.255.255
한 리전에 여러 개의 VPC를 만들 수 있다. (최대 5개지만 추가 신청할 수 있음) VPC의 CIDR은 내부에서 통신하기 위한 가상 주소이기 때문에 중복되어도 상관없다. 하지만 VPC 간에 연결할 계획이 있다면 다르게 설정해야 한다.
AWS는 VPC 내에서 IP 주소 범위로 분리하여 관리할 수 있도록 서브넷(Subnet)을 제공한다. 하나의 서브넷은 특정 가용 영역 내에서 관리된다.
AWS 리전(Region)과 가용 영역 (Availability Zone) 에서 다룬 것처럼 고가용성을 위해 동일 목적의 서브넷을 하나 이상의 AZ에 생성해 두는 것이 좋다.
각 서브넷에서 5개 (처음 4개, 마지막 1개)의 IP는 자동으로 예약된다.
ex) 10.0.0.0 / 24
VPC 내부에 우리가 사용하는 EC2, RDS(DB) 등의 리소스를 생성했다고 하자. 그러면 VPC 내부의 리소스들은 서로 통신할 수 있지만 외부와는 통신할 수 없을 것이다. VPC 내의 리소스들이 외부와 통신하기 위해 필요한 자원들을 알아보자.
VPC 내부의 리소스와 외부 인터넷 간에 통신할 수 있게 해준다. Public 서브넷에서 외부로 접근할 수도 있고, 리소스에 Public IP가 있다면 외부에서 해당 리소스에 접근할 수도 있다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Internet_Gateway.html
Private 서브넷의 리소스는 외부에서 접근할 수 없도록 막아야 하지만, 내부에서 외부 인터넷으로의 접근은 필요할 수 있다. 이때 NAT 게이트웨이를 사용할 수 있다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-nat-gateway.html
인터넷 게이트웨이, NAT 게이트웨이를 생성했다고 해서 내부 리소스에서 외부 인터넷과 통신할 수 있는 것은 아니다. 라우팅 테이블 설정에서 게이트웨이를 사용하도록 설정해 주어야 한다.
위 라우팅 테이블을 보면 10.1.0.0/16 에 포함되는 주소는 패킷을 local로 보내고 나머지(0.0.0.0/0)는 인터넷 게이트웨이로 보내도록 설정되었다.
라우팅 테이블의 우선순위 (Logest Match Rule)
대상 주소를 포함하는 규칙 중 네트워크 주소가 가장 긴 규칙에 해당하는 대상으로 보낸다.
ex) 10.1.0.100 이라는 주소는 10.1.0.0/16, 0.0.0.0/0 모두 포함되지만 네트워크 주소가 더 긴 10.1.0.0/16의 우선순위가 더 높다.
VPC > VPC 생성
으로 진입해서 VPC 등
옵션을 위에서 다룬 리소스들까지 한 번에 생성할 수 있다. VPC CIDR만 지정해 주면 서브넷의 IP는 자동으로 할당해 주고, AZ(가용 영역)의 수도 선택할 수 있다.
그림처럼 리소스 맵도 확인할 수 있다. 그림을 보면 각 서브넷에 라우팅 테이블이 연결되고 해당 라우팅 테이블에서 연결된 자원도 확인할 수 있다.
지금까지 AWS의 네트워크 대해서 공부하고 직접 구성해 보았다. 하지만 아직 아주 중요한 부분 보안이 남아있다. 다음에는 방화벽 역할을 하는 보안 그룹 (Security group)과 NACL(Network access control list)에 대해서 알아보자.