3장에서는 인터넷 게이트웨이와 NAT 게이트웨이를 실습으로 좀 더 알아볼 예정입니다!!
기본적으로 Amazon VPC를 사용하면서 요금은 발생하지 않지만, VPC 기능 중 일부는 요금이 발생하는데,
이번에 실습할 NAT 게이트웨이가 그 예입니다..
서울 리전의 NAT 게이트웨이는 1시간당 100원 미만의 요금이 발생할 수 있다는점 참고 하시길 바랍니다!!
Amazon VPC로 퍼블릭 및 프라이빗 서브넷 구성하기
실습의 목표는 Amazon VPC를 생성하여 퍼블릭/프라이빗 서브넷 환경을 구성하고 통신을 확인하는 것입니다!
사용자 VPC 생성하기
Amazon VPC는 생성 주체에 따라 기본 VPC(default VPC)와 사용자 VPC(custom VPC)로 구분한다
기본 VPC는 리전마다 한 개씩 가지고 있으며, AWS 네트워킹 리소스를 미리 정해서 생성되어 있다
반면 사용자 VPC는 사용자에 따라 수동으로 정의하는 VPC로 리전마다 최대 다섯 개까지 생성할 수 있다
이번 실습은 사용자 VPC를 사용하여 진행하므로 사용자 요구에 따라
이름 태그, IPv4 CIDR(/16~/28 범위의 서브넷 마스크 사용) 을 정의해야 한다
AWS에 로그인하고 VPC를 선택하면 사진과 같은 VPC 대시보드를 확인할 수 있다
(가운데에 리전마다 생성된 VPC 리소스를 확인할 수 있음)
별도의 작업을 수행하지 않았지만, VPC 리소스가 존재하고 있는데 이것은 앞서 설명한 기본 VPC에서 정의된 리소스이다!!
VPC 설정을 ㅟ해 위쪽에 있는 VPC 생성을 눌러 VPC 생성 페이지로 들어간다
이렇게 입력을 해주고 VPC 생성을 눌러준다
그 후, VPC를 클릭하여 리스트를 보면 기본 VPC와 새로 생성한 사용자 VPC 두 개를 확인할 수 있다
생성한 VPC 를 체크하여 세부정보를 확인해볼 수 있고 자동으로 기본 라우팅 테이블이 생성되는걸 알 수 있다!
=> 라우팅 테이블에서 확인해볼 수 있음
기본 네트워크 ACL도 자동으로 생성되었는데
=> 보안 > 네트워크 ACL에서 확인해볼 수 있음
인바운드 규칙 정보를 확인해보면 모든 트래픽 유형과 모든 IP 범위(0.0.0.0/0)를 허용하는 규칙이 앞에 있다
(필요에 따라 원하는 트래픽만 허용하거나 거부하는 규칙을 편집할 수 있음)
이렇게 사용자 VPC를 생성하면 기본 라우팅 테이블을 사용하는 가상 라우터가 생성되고 로컬 통신이 가능하다
그리고 기본 네트워크 ACL이 생성되는데, 모든 트래픽과 IP 대역을 허용하는 기본 규칙이 있어 제약 없이 통신이 가능하다
퍼블릭 서브넷 생성하기
새로 생성한 사용자 VPC는 10.3.0.0/16 하나의 네트워크이다
이제 여기에 외부 인터넷과 자유롭게 통신할 수 있는 퍼블릭 서브넷을 생성해보자
1. 서브넷 생성하기
서브넷을 생성할 때는 기본적으로
VPC ID(연결한 대상의 VPC), 서브넷 이름, 가용 영역, IPv4 CIDR 블록(VPC의 IPv4 CIDR에서 나누어진 대역)
을 정의해야 한다
서브넷을 클릭하고 서브넷 생성을 누르면 서브넷 생성 페이지로 이동한다
서브넷을 생성할 VPC ID를 선택하고
사진과 같이 설정을 해준다
2. 라우팅 테이블 생성하기
새로 생성한 서브넷은 기본 라우팅 테이블을 사용하는데
이번 실습에는 서브넷마다 라우팅 테이블을 생성해서 연결해본다!
라우팅 테이블을 생성할 때는
라우팅 테이블 이름, VPC(연결한 대상의 VPC), 서브넷 연결
을 정의해야 한다
왼쪽 VPC 메뉴에서 라우팅테이블을 선택하고 오른쪽 위의 라우팅 테이블 생성을 누른다
이렇게 설정을 해주고 라우팅 테이블 생성을 누른다
다시 라우팅 페이지로 들어가면 새로 생성한 라우팅 테이블의 세부 정보를 확인할 수 있는데
현재 라우팅 테이블은 기본 라우팅 테이블이 아닌 일반 라우팅 테이블이며, 서브넷과 연결되지 않고 덩그러니 있다!
=> 생성된 라우팅 테이블을 서브넷과 연결하는 작업이 필요
생성된 라우팅 테이블의 세부사항에서 서브넷 연결 탭을 클릭하고,
현재 연결된 서브넷이 없는 상태로 오른쪽에 있는 서브넷 연결 편집을 누른다
그 후, 라우팅 테이블에 새로 생성한 서브넷을 체크하고, 아래쪽에 연결 저장을 누른다
이제 서브넷 연결 탭에서 라우팅 테이블이 연결된 것을 확인할 수 있음!
3. 인터넷 게이트웨이 생성하기
퍼블릭 서브넷 같은 외부 인터넷 구간과 자유롭게 통신할 수 있는 환경을 만들기 위해서는 인터넷 게이트웨이가 필요하다!
인터넷 게이트웨이를 생성할 때는
이름태그(인터넷 게이트웨이 이름), VPC 연결
을 정의해야 한다
왼쪽 VPC 메뉴에서 인터넷 게이트웨이를 선택하면 기본 VPC의 인터넷 게이트웨이가 존재하는걸 확인할 수 있다
신규 인터넷 게이트웨이 생성을 위해 위쪽의 인터넷 게이트웨이 생성을 누른다
인터넷 게이트웨이 이름 태그를 'CH3-IGW'로 입력하고 생성하면
다음과 같이 생성된 것을 확인할 수 있는데, 현재는 VPC와 연결되지 않은 상태라 Detached로 뜨는걸 볼 수 있다
VPC와 연결할 수 있도록 방금 생성한 인터넷 게이트웨이를 체크하고 위쪽의 작업을 클릭하여 VPC연결을 선택한다
연결할 VPC를 선택하고 연결을 하면 Attached 로 변경된 것을 확인할 수 있다
4. 라우팅 테이블 편집하기
퍼블릭 서브넷의 라우팅 테이블은 로컬 통신 경로만 있을 뿐 외부 인터넷 구간으로 갈 수 있는 경로 정보는 없다
=> 라우팅 테이블 수정 작업을 수행
라우팅 테이블로 들어가서 생성한 라우팅 테이블을 체크한 후 라우팅 탭을 클릭한 후 라우팅 편집을 누른다
이렇게 설정해주면 0.0.0.0/0 모든 IP 대역에 대해 타깃 대상을 인터넷 게이트웨이로 설정한 것이다!
퍼블릭 서브넷 통신 확인하기
앞서 실습으로 퍼블릭 서브넷 환경을 구성했다
이런 퍼블릭 서브넷에 EC2 인스턴스를 생성하여 통신을 확인해야 한다
1. 보안 그룹 생성하기
EC2 인스턴스는 기본적으로 한 개의 보안 그룹으로 접근을 통제한다
EC2 인스턴스를 설정할 때 별도의 보안 그룹을 지정하지 않으면 신규 보안 그룹이 자동으로 생성된다
(실습에서는 수동으로 보안 그룹을 생성할거임)
왼쪽 VPC 메뉴에서 보안 그룹을 선택하고 위쪽에 있는 보안 그룹 생성을 누른다
이렇게 설정을 해주고 보안 그룹을 생성하면 된다
2. EC2 인스턴스 생성하기
저번 실습에서 인스턴스를 생성했었으므로 텍스트로만 설명하고 넘어가겠습니다
1. 인스턴스 메뉴를 선택하고 인스턴스 시작 누르기
2. 이름 및 태그에서 이름 설정(CH3-Public-EC2)
3. 키 페어(로그인)에서 키 페어 이름을 기존에 생성한 키 페어 파일로 선택
4. Network settings 에서 편집 누르기
5. VPC는 CH3-VPC 선택
6. 서브넷은 CH3-Public-Subnet 선택
7. 퍼블릭 IP 자동 할당은 활성화 선택
8. 방화벽 (보안 그룹)은 기존 보안 그룹 선택
9. 일반 보안 그룹은 MY-WEB-SSH-SG 선택
10. 인스턴스 시작 누르기
11. 모든 인스턴스 보기 누르기
이렇게 생성된 EC2 인스턴스를 확인할 수 있다
네트워킹 탭을 클릭해보면
퍼블릭 IPv4 주소가 보이는데 이게 EC2 인스턴스가 사용할 공인 IP 주소이다
(실습을 위해 IP 주소를 복사해놓자)
프라이빗 IPv4 주소는 EC2 인스턴스가 내부 통신을 할 때 사용할 사설 IP 주소이다
VPC ID는 앞서 생성한 사용자 VPC이다
서브넷 ID는 퍼블릭 서브넷 용도로 생성한 서브넷에 위치한다
가용 영역은 퍼블릭 서브넷에 설정한 가용 영역이다
3. EC2 인스턴스 실습 환경 설정하기
생성된 EC2 인스턴스의 퍼블릭 IP 주소로 SSH 접근을 해야한다
=> 2장에서 MobaXterm(SSH 프로그램)을 실습했던 것과 동일
메인 메뉴에서 Session을 눌러 다음과 같이 설정하고 OK를 눌러준다
중간에 장소를 바꿔서 진행했는데 SSH 접근이 자꾸 에러가 떠서 고생했습니다..
보안 그룹 설정에서 바뀐 IP 주소를 사용해야 해결 가능!!!!
SSH 터미널이 열리면 EC2 인스턴스에 웹 서비스를 설치해야한다
# SSH 터미널 접속
# 슈퍼 유저로 변경
sudo su -
# http 데몬 설치
yum install httpd -y
# http 데몬 실행
systemctl start httpd
# 웹 서비스 최초 페이지 내려받기
curl -L https://bit.ly/afbtest02 > /var/www/html/index.html
이렇게 퍼블릭 서브넷의 통신을 확인하는 모든 설정이 완료된다
4. EC2 인스턴스에서 외부 인터넷으로 통신 확인하기
SSH 터미널에서 간단하게 외부 인터넷 통신을 확인할 수 있다
# SSH 터미널 접속
# 외부 인터넷 구간으로 ping 테스트
ping google.com
...
ctrl + c
# 외부 인터넷 구간으로 HTTP 접근 테스트
curl google.com
이렇게 외부 인터넷 구간으로 ping 테스트 확인할 수 있고
외부 인터넷 구간으로 HTTP 접근 테스트도 할 수 있다!
퍼블릿 서브넷에 위치한 EC2 인스턴스는 외부 인터넷 구간의 대상과 정상적으로 통신하는걸 알 수 있음
5. 외부 인터넷에서 EC2 인스턴스로 통신 확인하기
외부 인터넷 구간에서 통신은 현재 작업 중인 각자의 PC와 스마트폰에서 진행하고 결과를 확인한다!
1. PC에서 웹 서비스에 접근 수행 : 웹 서비스 접근 가능
2. PC에서 터미널 창을 열고 ping 테스트 수행 : ping 통신 불가
3. 스마트폰에서 와이파이 연결을 해제하고 웹 서비스 접근 : 웹 서비스 접근 불가
4. 스마트폰에서 와이파이를 연결하고 웹 서비스 접근 : 웹 서비스 접근 가능
이론상 퍼블릭 서브넷 환경은 외부 인터넷 구간과 통신 제약이 없지만 통신이 불가능한 경우가 발생했다
=> 보안 그룹 설정 때문에 HTTP 와 SSH 프로토콜에 대해 내 IP(작업 중인 PC의 IP)만 허용했기 때문이다!
내용이 너무 많아서 프라이빗 서브넷은 다음 챕터에서 다뤄보겠습니다!
'Infra > AWS 교과서' 카테고리의 다른 글
[AWS 교과서] 4장 - AWS 부하분산 서비스(1) (0) | 2024.01.07 |
---|---|
[AWS 교과서] 3장 - AWS 네트워킹 서비스(5) (1) | 2024.01.07 |
[AWS 교과서] 3장 - AWS 네트워킹 서비스(3) (2) | 2024.01.04 |
[AWS 교과서] 3장 - AWS 네트워킹 서비스(2) (1) | 2024.01.03 |
[AWS 교과서] 3장 - AWS 네트워킹 서비스(1) (1) | 2024.01.03 |