AWS 서비스용 VPC 및 Subnet 생성
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이전 포스팅을 이전한 내용.
시작하며
이 블로그의 주목적은 내 개인작업의 메모용 이었다는걸 잊고 이쁘게 만들려고 노력하다보니 점점 더 포스팅을 안하게 되었다. 모양새 보다는 질을 중시하여 꼼꼼하게 기록을 남겨가도록 하겠다. aws의 메뉴는 가능하면 영어로 기술하도록 한다.
VPC의 목적
하려고 한다면 더욱 복잡한 구성의 vpc를 설계하는 것도 가능하지만 일반적으로 폭 넓게 이용할 수 있는 범위내서 작성했다. aws는 available zone 이라는 개념이 있기 때문에 최소 두개의 zone을 포함하도록 구성하였다. public subnet 에 두개의 zone을, 마찬가지로 private subnet에도 두개의 zone을 추가하겠다.
VPC 생성
- 관리콘솔에서 vpc dashboard로 이동하여 Your VPCs를 클릭한다. VPC Wizard를 이용하여 생성해 본적도 있지만 그냥 Create VPC가 더 편한듯 하다.
- Create VPC를 클릭하여 Name Tag에 적당한 이름을 주고 IPv4의 CIDR block에 10.0.0.0/16을 지정하였다.
- IPv6 CIDR block도 Amazon provided IPv6 CIDR block을 선택했다. IPv6는 vpc작성시에 지정하지 않으면 나중에 별도로 추가할 수 없기 때문.
- Create를 클릭하여 VPC를 생성한다.
Subnet 생성
vpc내에서 네트워크를 분리해 줄 subnet을 생성한다. 외부와 직접 통신할 수 있는 public subnet과 secure한 private subnet을 만들 것이다. 두개의 availability zone 을 이용할 수 있으니 각각 2개씩 총 4개의 subnet을 만들 것이다.
- VPC Dashboard에서 subnets를 클릭한 후 위에 있는 Create subnet을 클릭한다.
- Name tag에 헷갈리지 않게 public-a 를 입력한다.
- 위에서 생성한 VPC를 선택하면 지정한 IPv4, IPv6 의 CIDR block이 표시된다.
- Availabilty zone을 보니 ap-northeast-2a와 ap-northeast-2c두개가 존재한다. 일단 ap-northeast-2a를 선택.
- IPv4 CIDR block에서 10.0.1.0/24를, IPv6 CIDR block에서 Custom Ipv6 선택후, 01를 입력.
- create를 선택하여 subnet을 생성.
위 작업을 반복하여 public-a/public-c, private-a/private-c subnet을 생성하였다. CIDR block은 각각 24bit씩 10.0.2.0/24, 10.0.7.0/24, 10.0.8.0/24를 할당하였다. IPv6도 이에 맞추어 02, 07, 08를 지정하였다.
Gateways 생성
생성한 subnet 들은 서로간의 통신은 가능하지만 외부와의 통신은 불가능한 상황이다. 외부와 통신 할 수 있는 입구, 즉 Gateway가 없기 때문이다. public subnet 용으로 Internet Gateways를, private subnet 용으로 NAT Gateways를 생성한다. VPC Dashboard에서 각 메뉴를 선택한후 Create를 누르기만 하면 자동으로 생선된다. 항상 적당한 이름을 지정해 주도록 하자.
주의 할 점으로 private subnet 용인 NAT gateway를 생성할 때 subnet을 지정해야 하는데 private 용이라고 private subnet을 지정하면 외부와의 통신이 이루어 지지 않는다. NAT gateway도 결국 Internet Gateway를 이용하여 외부와 통신하기 때문에 반드시 public subnet을 지정할 것. Elasitc IP는 존재하지 않는다면 Create New EIP로 새로 만들어서 지정할 것.
private subnet -> NAT gateway -> Internet Gateway
Route Tables 생성 및 설정
subnet이 외부와 통신하기 위한 입구를 만들었지만 입구까지 가는 길을 모르기 때문에 이를 위한 경로, 즉 Routing 설정을 해주도록 한다.
- Route Tables 에서 Create route table을 클릭.
- public subnet 용 route table이니 rtb-public으로 이름을 지정해주고 위에서 생성한 VPC를 선택한 후 Create를 클릭.
- 작성한 Route table를 선택 후 Routes 를 클릭.
- Edit routes클릭 후, Destination 에 0.0.0.0/0 을, Target에 위에서 작성한 Internet Gateway를 지정하여 저장한다. 이로서 외부와 통신하기 위한 Default Gateway가 작성되었다.
- Status가 active로 변하지 않고 black hole 등과 같이 표시 되면 무언가 잘못 된 것이니 설정내용을 다시 한번 확인 할 것.
- Subnet Associations를 클릭.
- Edit subnet associations를 클릭한 후 public subnet 두개를 선택한다.
위 작업을 반복하여 private subnet 용 route table도 작성한다. 틀린 점은 default gateway로서 internet gateway가 아닌 NAT gateway를 지정 할 것.
주의점
처음에는 private subnet에 gateway를 지정하지 않았다. secure한 영역이기 때문에 외부와의 통신은 필요없다고 생각했지만 cloudwatch agent를 이용한 로그전송을 위해서는 internet 통신이 필요하기 때문에 어쩔 수 없이 NAT gateway를 추가하였다. cloudwatch agent 이외에도 sqs나 lamda, s3등에 접속하기 위해서는 internet 통신이 필요하니 망설이지 말고 NAT gateway를 추가하자.
AWS에서는 NAT gateway 외에도 NAT gateway용 인스턴스를 생성하여 이용할 수 있도록 AMI도 제공하고 있으니 그런 방법도 있다는 것도 알아두자. 단 NAT gateway 서비스가 나온 후로는 별로 이용되지 않는 듯 하다.
댓글
댓글 쓰기