-
[AWS] #2 VPC 구축 실습 1Software engineer/Infra 2023. 5. 17. 10:28

실습 1 VPC 구축 실습
오늘은 새로운 VPC를 생성하고 public subnet, private subnet을 각각 구현한 후 public subnet에 Apache httpd 웹서버를 통해 통신 가능 여부를 확인하는 실습을 해보겠습니다.
실습 순서
- VPC 생성
- Subnet
- Internet Gateway
- Route Table
- NACL
- EC2
VPC 생성

새로운 VPC 생성하는 화면입니다. VPC이름 태그와 CIDR을 10.0.0.0/16으로 설정하고 생성을 합니다.
CIDR이란?
클래스 없는 도메인 간 라우팅(Classless Inter Domain Routing) 기법으로서 1993년부터 도입된 최신의 IP 할당 기법이라고 합니다. 참고: https://kim-dragon.tistory.com/9새로운 VPC가 생성되면 자동적으로 Route Table, NACL, Security Group 이 각각 default로 자동으로 생성이 됩니다.
Subnet
Subnet은 실습을 위해 public, private 두 가지 Subnet을 생성합니다. public은 말 그대로 인터넷과 연결할 예정이고, private은 인터넷을 연결하지 않고 보안성을 유지하도록 합니다.

그림처럼 subnet 생성시 위에서 만든 VPC를 선택하고 서브넷 설정을 하게 됩니다.

subnet 설정에서는 이름, 가용영역, CIDR 블록을 지정합니다. 이름은 각각 public-subnet, private-subnet으로 지정했습니다.
가용영역에 경우에는 public과 private이 서로 다른 가용영역을 선택했습니다. CIDR에 경우 VPC에서 설정한 가용영역 내에서 지정하게 됩니다. 실습에서는 public은 10.0.0.0/24, private은 10.0.1.0/24로 설정했습니다.
만약 VPC CIDR 범위를 넘어가는 대역을 설정하게 되면 아래와 같이 에러가 납니다!

Subnet 생성 완료!

Internet Gateway & Route Table & NACL
생성한 public subnet에 인터넷 통신을 위해 IGW, Route Table, NACL을 연결해줘야 합니다.
Internet Gateway

이름 태그를 정한 후 인터넷 게이트웨이를 생성합니다. 이제 막 생성한 인터넷 게이트웨이는 Detached 상태인데 이제 VPC를 연결해 줍니다.


사용 가능한 VPC를 선택한 후 인터넷 게이트웨이를 연결해 줍니다. 기본적으로 IGW는 1개의 VPC에만 연결이 가능합니다.
Route Table
맨 처음 VPC를 생성하게 되면 default route table이 생성이 되게 됩니다. 이 default route table을 실습에서는 private subnet에 연결하는 private route table로 사용합니다.

이처럼 default route table을 private subnet의 route table로 정하면 앞으로 생성될 subnet들은 모두 default로 해당 route table을 사용하기 때문에 보안적인 부분에서 이점을 가져갈 수 있습니다.
이번엔 public subnet을 위한 route table을 생성합니다.

위와 같이 이름을 작성하고 어느 VPC에 사용하는지 선택합니다.

public subnet을 위한 route table에 편집을 통해 모든 대역대에 대해서 앞서 생성한 IGW를 연결합니다.
NACL
이번엔 subnet에 인바운드, 아웃바운드 규칙을 정하는 NACL을 생성합니다.

이름을 정하고 VPC를 선택합니다. 이후 인바운드 규칙, 아웃바운드 규칙, 서브넷 연결을 설정하게 됩니다.
인바운드 규칙

인바운드 규칙에 경우 규칙 번호를 지정하게 되는데 AWS에서는 100 단위로 지정하길 권장한다고 합니다. 규칙번호 순서대로 요청에 대해 점검하기 때문에 만약 101번 규칙번호를 새로 만들고 HTTPS 접속을 Deny 시킨다면 해당 요청은 200번 규칙번호까지 가지 못하고 요청이 거부됩니다.
아웃바운드 규칙

서브넷 연결

이렇게 NACL까지 설정을 마치면 public subnet은 인터넷과 연결이 가능합니다.
이를 확인하기 위해 public subnet에 EC2를 띄우고 Apache httpd 웹서버를 설치한 후 접속 테스트를 진행합니다.
EC2
이번엔 public subnet, private subnet에 각각 인스턴스를 띄워보려 합니다. 그전에 public subnet에서 IP 할당을 위한 작업을 먼저 진행합니다.

그림처럼 public-subnet에 자동 할당 IP 설정에 자동 할당 활성화를 체크합니다. 만약 고정된 IP를 사용한다면 아래 고객 소유 IP 할당을 활성화하면 될 것 같아요!
public subnet ec2

public ec2 생성을 시작합니다. 이름을 정해주세요.

다음 키 페어를 생성합니다. 만약 기존에 사용중인 키 페어가 있다면 선택해 주세요!
다음 네트워크 설정입니다.

먼저 VPC를 선택해 줍니다.
이후 subnet은 기존에 만들어둔 public subnet을 선택해줍니다.
IP는 자동 할당으로 선택합니다.
보안 그룹을 생성할 차례입니다. 이름과 설명을 작성해 줍니다.

위와 같이 인바운드 규칙을 지정해 줍니다.
이제 아래로 쭉 내려보시면 고급설정란이 있습니다. Apache httpd 웹서버를 설치하기 위해 쉘 명령어를 추가합니다.


#!/bin/bash yum install httpd -y service httpd start각 라인별로 쉘을 사용한다고 선언, yum을 통해 httpd 설치, 설치한 httpd 실행 순서로 작성합니다.
이렇게 작성 후 인스턴스를 시작!
private subnet ec2
이번엔 private subnet 영역에도 ec2를 띄워 보겠습니다.

이름을 작성합니다.
다음 키 페어에 경우 기존에 사용하던 키 페어를 사용해도 좋고 public ec2 생성 때 만들었던 키 페어를 선택해도 좋습니다. 선택해 주세요!
이후 네트워크 설정을 해줍니다.

이번엔 subnet을 private subnet으로 선택해 줍니다.
IP 자동 할당 또한 비활성화로 선택!
보안 그룹은 기존 보안 그룹 선택 후 public ec2에서 생성했던 jh-web-sg로 선택했습니다.
이후 public ec2 생성때와 같이 고급설정에서 Apache httpd 웹서버 설치 및 실행 쉘을 추가했습니다.
#!/bin/bash yum install httpd -y service httpd start이렇게 public, private subnet에 각각 ec2를 모두 띄웠습니다.

이제 public subnet에 띄워진 ec2에 접속이 가능한지 확인해 볼 차례입니다! 퍼블릭 IP 주소로 접속해서 아래 화면처럼 보인다면 인터넷 연결 성공입니다.

추가적으로!
실습 이후 public ec2에 Apache 웹 서버를 설치하는 과정에서 통신에 문제가 있어 public subnet NACL의 인바운드, 아웃바운드 설정을 수정 후 진행했습니다.


위 실습은 유튜브 'AWS강의실'의 VPC 강좌 1편을 보고 진행했습니다.
참고: https://www.youtube.com/watch?v=FeYagEibtPE&t=2549s&ab_channel=AWS%EA%B0%95%EC%9D%98%EC%8B%A4
'Software engineer > Infra' 카테고리의 다른 글
[CI/CD] Django + GithubAction + EC2 (1) 2023.06.01 [AWS] #5 VPC 구축 실습 4(ELB) (2) 2023.05.19 [AWS] #4 VPC 구축 실습 3(Auto Scaling) (1) 2023.05.19 [AWS] #3 VPC 구축 실습 2(Bastion Host, NAT Gateway) (3) 2023.05.18 [AWS] #1 3 계층 구조, VPC (3) 2023.05.16