[AWS] VPC 구성하기(Private/Public Subnet)
이번 포스팅에서는 AWS Console에서 VPC를 생성하고 VPC 내에 Private, Public Subnet을 생성하여 보겠습니다.
생성할 서비스들은 다음과 같은 구성을 가집니다.
생성 순서는 다음과 같습니다.
1. VPC 생성 및 설정
2. Subnet 생성 및 설정
3. Internet Gateway 생성
4. Internet Gateway와 VPC 연결
5. 라우팅 테이블 생성
6. 라우팅 테이블과 서브넷 연결
7. 라우팅 규칙 설정
VPC 생성하기
우선 AWS Management Console에 로그인하여 생성된 VPC를 확인합니다. 처음 생성하시는 분들은 계정마다 존재하는 기본 VPC 하나가 생성되어 있을것입니다.
오른쪽 위의 VPC 생성 버튼을 클릭합니다.
생성할 VPC의 이름과 IPv4 CIDR를 설정합니다.
IPv6 CIDR가 필요한 경우 설정할 수 있으며, '테넌시'는 기본값으로 합니다. 테넌시 값을 전용으로하는 경우 전용 하드웨어에서 실행하기 때문에 비용이 더 높습니다. 태그 값 또한 기본으로 생성되는 태그만 이용하겠습니다. 필요한 경우 '새 태그 추가' 버튼을 이용해서 태그를 추가할 수 있습니다.
필요한 부분을 모두 작성하였으면 'VPC 생성' 버튼을 클릭하여 VPC를 생성합니다.
다시 VPC 콘솔로 돌아가면 VPC가 생성된 것을 확인할 수 있습니다.
Public Subnet 생성하기
Management Console에서 서브넷 페이지로 접속하여 "서브넷 생성" 버튼을 클릭해서 서브넷을 생성할 수 있습니다.
서브넷 생성 페이지에서 서브넷을 생성할 VPC를 선택합니다. 위에서 생성한 VPC의 이름이나 VPC ID를 보고 선택하면 됩니다.
VPC를 클릭하면 서브넷 설정 부분이 변경되게 됩니다.
서브넷의 이름과 가용 영역(AZ), CIDR 를 적절하게 입력합니다. (서브넷 내에도 CIDR를 지정해주어야 합니다.)
public-subnet(10.0.0.0/24)이라는 이름의 서브넷과 private-subnet이라는 이름의 서브넷 두 개를 생성하도록하겠습니다.
그 후 생성된 Subnet들을 확인합니다.
Internet Gateway 생성 및 VPC와의 연결
그 후 인터넷 게이트웨이를 생성합니다. 간단하게 이름만 설정하면 인터넷 게이트웨이가 생성됩니다.
인터넷 게이트웨이 생성 직후 페이지에서 'VPC에 연결' 버튼을 클릭하면 VPC에 연결할 수 있습니다.
생성한 VPC의 이름을 선택한 후 인터넷 게이트웨이에 연결 버튼을 클릭합니다.
이후 콘솔에서 인터넷 게이트웨이와 VPC가 연결된 것을 확인할 수 있습니다.
라우팅 테이블 설정
서브넷을 생성하고 라우팅 테이블을 따로 설정하지 않았으므로, 서브넷은 모두 기본 라우팅 테이블에 연결이 되어 있습니다. (명시적 연결이 없는 서브넷으로 분류됨)
이는 구성하고자하는 퍼블릭 서브넷과 프라이빗 서브넷의 형태가 아니기 때문에 각각 서브넷에 맞는 라우팅 테이블을 생성합니다.
콘솔의 라우팅 테이블에서 '라우팅 테이블 생성' 버튼을 이용하여 라우팅 테이블을 생성합니다.
이름을 public-rtb, private-rtb로 두 개의 라우팅 테이블을 생성하겠습니다.
여기서도 VPC를 위에서 생성한 VPC로 선택합니다. 라우팅 테이블을 정상적으로 생성하였으면 다음과 같습니다.
이제 각 라우팅 테이블에 서브넷을 연결합니다. 라우팅 테이블을 클릭하고 '서브넷 연결' > '서브넷 연결 편집'을 클릭합니다.
그리고 public-rtb는 public subnet과 private-rtb는 private subnet과 연결합니다. (각각 설정ㅇ)
라우팅 규칙 설정
마지막으로 라우팅 테이블의 라우팅 규칙을 설정합니다. 각 라우팅 테이블을 클릭한 후 '라우팅' > '라우팅 편집'을 클릭하여 라우팅 규칙을 편집할 수 있습니다.
public-rtb는 다음과 같이 설정합니다.
'대상'에서 '인터넷 게이트웨이'를 선택하면 위에서 VPC에 연결한 인터넷 게이트웨이가 나타나고 이를 클릭하면 됩니다.
위의 라우팅 테이블을 설명하면 다음과 같습니다. 목적지가 10.0.0.0/16인 ip는 로컬에서 찾아서 전송하고, 그 이외의 ip는 인터넷 게이트웨이로 전송하라.
private-rtb는 다음과 같습니다.
public-rtb와 다르게 인터넷 게이트웨이로 라우팅하는 부분이 없습니다. 따라서 Private Subnet으로 구성된 것입니다.
이로소 다음 그림과 같이 AWS의 리소스들을 설정하였습니다.(NACL 제외)
Public Subnet과 Private Subnet을 AWS에서 리소스로 구분하는 것이 아니라 사용자가 설정한 라우팅 테이블에서 인터넷 게이트웨이로의 라우팅 규칙이 있는지 없는지에 따라 public/private으로 나뉜다는 것을 알 수 있었습니다.
감사합니다.