아마존 웹 서비스를 처음 시작하는 사용자가 아마 두 번째로 맞이할 컴포넌트. 첫 번째는 EC2일 것 같아요. 아마도...
- Amazon VPC 소개
- Default VPC와 Default Subnet
- Public Subnet과 Private Subnet
- non-default VPC & subnet
Amazon VPC 소개
Amazon VPC(Virtual Private Cloud)를 문자 그대로 해석해보면 '개인적인 가상의 클라우드'라고 해석해볼 수 있을 것 같아요. 클라우드를 데이터 센터라고 확장해서 생각해보면 Amazon VPC는 나만의 가상 데이터센터 그 자체라고 생각할 수 있을 것 같아요. 그리고 클라우드의 모든 요소들은 네트워크로 연결되어 있어요. 이미 우리는 Amazon VPC와 비슷한 것을 경험해 봤어요. 지금도 사용하고 계실 것 같아요. 공유기 사용하시지요? 그 공유기를 아래 그림에서 subnet에 비교해서 볼게요.
AWS를 크게 나누면 먼저 Region으로 나눌 수 있고 그 Region에 Availability Zone(AZ)과 VPC를 담을 수 있어요. 보통 하나의 Region은 2개 이상의 Availability Zone을 가지고 있어요. 하지만 오늘은 VPC에 집중하기 위해서 Region과 Availability Zone은 하나만 존재한다고 생각해볼게요.
Default VPC와 Default Subnet
2014년 이후 생성한 AWS 계정은 기본적으로 Region 당 하나의 VPC를 이미 가지고 있어요. 이 VPC를 Default VPC라고 해요. 그리고 이 Default VPC(CIDR 172.31.0.0/16) 안에는 각 AZ마다 Default Subnet(172.31.0.0/24)이라는 것을 가지고 있어요. 이렇게 Default VPC안에 있는 Default Subnet은 몇 가지 특징을 가지고 있어요. 먼저 Default VPC의 상세 페이지를 한 번 볼게요.
Default VPC
Yes
라는 부분이 이 VPC는 Default VPC라는 걸 이야기해 주고 있어요.
여기서 눈여겨볼 부분은 rtb-id라는 라우팅 테이블을 가지고 있다는 것과 acl-id라는 network ACL을 가지고 있는 건데 network ACL(NACL)은 다음에 살펴보고 우선 라우팅 테이블을 한 번 볼게요.
이 메인 라우트 테이블은 계정 생성과 동시에 자동으로 만들어진 라우트 테이블이에요. Default VPC 내에서 Subnet을 만들 때 어떤 라우트 테이블을 사용할지 명시적으로 지정하지 않으면 기본적으로 이 라우트 테이블을 사용해요. 그럼 기본적으로 생성된 Default Subnet은? 당연히 이 라우트 테이블을 사용하고 있겠지요?
그럼 이 라우트 테이블이 담고 있는 정책을 한 번 볼게요. 맨 처음 목적지가 172.31.0.0/16인 트래픽들은 VPC 안에서만 돌아다니는 local traffic의 경로를 지정해줘요. 그리고 그 외에 나머지 목적지가 0.0.0.0/0, Any지요, 인 트래픽들은 igw-id로 즉, internet gateway로 가라고 경로를 지정해줘요. 인터넷 게이트웨이의 위치는 VPC에요. 잘 기억해두세요.
인터넷 게이트웨이는 달리 제어할 수 있는 항목들은 없고 상세 정보도 아이디는 무엇이고 어느 VPC에 붙어있다 이 정도만 확인할 수 있어요. internet gateway에 대한 자세한 사항은 다음에 살펴보도록 할게요. 우선은 main route table에는 자동으로 igw-id로 가는 경로가 설정되어 있다. 정도만 기억해주세요.
Public Subnet과 Private Subnet
지금까지 Default VPC와 Default Subnet에 대해 감을 잡았어요. 그럼 이제 처음 시작할 때 그림에서 봤던 Public Subnet과 Private Subnet에 대해 알아볼게요.
앞서 메인 라우트 테이블에서 local traffic에 대한 라우팅 정책과 함께 기타 다른 트래픽은 인터넷 게이트웨이를 통해 외부로 나갈 수 있게 해주는 라우팅 정책을 봤어요. 그럼 새로 만든 라우트 테이블은 어떻게 생겼는지 한 번 볼게요.
지금 만든 이 라우트 테이블에는 local traffic에 대한 라우팅 정책만 있어요. 외부 공인 인터넷을 목적지로 하는 트래픽에 대한 정책은 없어요. 이제 새로운 서브넷을 하나 생성하면서 이 라우트 테이블을 붙여주면 그 서브넷 안에 있는 인스턴스들은 외부 공인 인터넷을 목적지로 하는 트래픽을 전달할 라우팅 정책이 없기 때문에 그러한 요청들은 밖으로 나가지 못하고 외부와 통신할 수 없게돼요. 정리하면
외부와 통신할 수 있다? - Public Subnet
외부와 통신할 수 없다? - Private Subnet
이 공식에 대입해보면 Default Subnet은 라우트 테이블에 처음부터 0.0.0.0/0 igw-id 정책이 있어서 외부로 트래픽이 나갈 수 있는 Public Subnet이라는 것을 알 수 있어요.
이 Private Subnet 안에 있는 인스턴스들도 업데이트 등을 위해서 외부와 통신할 필요가 있을 수 있잖아요? 그럴 때는 어떻게 하는지. 에 대해서는 다음에 NAT gateway를 공부할 때 알아볼게요.
non-default VPC & subnet