Hyun's Wonderwall

[AWS] Route53, VPC 이론과 실습 (+ NAT Gateway, Bastion Host) 본문

Study/Cloud

[AWS] Route53, VPC 이론과 실습 (+ NAT Gateway, Bastion Host)

Hyun_! 2025. 3. 21. 21:23

ACC Ewha 핸즈온 세션 - 공부 내용 정리


Route53

Route53: AWS의 DNS 서비스. 도메인을 타깃으로 분산 처리 가능.
- DNS(네임서버) + port 모니터링(Health Check) + L4(Failover 기능) + GSLB(라우팅 정책)
- Route53을 사용해 도메인의 트래픽을 로드 밸런서로 라우팅할 수 있다.
- 네임서버는 IP주소와 도메인네임을 연결해주는 역할. / 라우팅: 네트워크에서 경로를 찾는 행위.
  (Route53가 확인하는 것: 도메인 / 로드 밸런서가 확인하는 것: 지정된 포트, 프로토콜, 상태 확인)

 
DNS
- 도메인 네임(aws.amazon.com) -> 네트워크 주소(ip주소): Forwarding DNS, 그 반대는 Reverse DNS
- root DNS, TLD DNS, Authoritative DNS, ...
 
DNS 레코드
- RR(Name, Value, Type, TTL) 형식
- A, CNAME, NS 유형
- Alias: Route53에서만 제공하는 특별한 레코드 - 도메인네임과 AWS 리소스간의 연결
 
여러 라우팅 정책이 있음


VPC

IP: Internet Protocol. Public IP와 Private IP.
- IP 주소: 인터넷 장치들을 식별할 수 있도록 각각의 장비에 부여되는 고유한 주소. IPv4: 32bit.
- 네트워크 ID + 호스트 ID
- 네트워크 ID: 네트워크를 구분하기 위한 부분. 수많은 호스트들을 효과적으로 관리하기 위해 크게 묶은 단위.
- 호스트 ID: 호스트를 개별적으로 관리하기 위해 사용되는 ID
 
CIDR(Classless Inter-Domain Routing)
- 네트워크 ID & 호스트 ID 주소 범위를 구분하기 위한 하나의 표기법
- AWS에서는 /16~/28의 subnet mask 범위만 허용
  e.g. 192.168.0.0/24 -> 24비트를 네트워크ID로 mask -> 나머지 8비트를 호스트ID로 활용 -> 256(2^8)개의 IP주소
 
리전: 전 세계에서 데이터 센터를 클러스터링하는 물리적 위치 (AWS의 데이터센터들을 지리적으로 나눈 단위)
AZ(가용 영역, Availability Zone): 여러 데이터 센터들을 묶은 단위. AZ 여러 개가 모여 리전 구성.
 
VPC (Virtual Private Cloud)
- 독립적인 가상 네트워크망 구축 가능. 클라우드 리소스들 격리 가능
  (-> 시스템 복잡도, 의존도 낮춤. VPC별로 네트워크 구성 가능. 유지보수에 좋음)
- 리전 당 5개 설계 가능. VPC당 5개의 CIDR 설정 가능
- 사설 IPv4 범위만 할당 가능
- VPC CIDR는 다른 VPC나 네트워크와 범위가 겹치면 안 됨 (추후 vpc 추가되는 것 고려하면 /28 이렇게 최소로 설정하는게 좋을지도)
 
Subnet
- VPC의 IP주소를 나눠 리소스가 배치되는 물리적인 주소 범위
- IP 네트워크 논리적인 영역을 쪼개서 만든 하위 네트워크망
- Public Subnet, Private Subnet 존재
- VPC의 IP 범위 안에서 서브넷의 IP 범위를 지정해야 함
   e.g. VPC가 10.0.0.0/16이면 앞에서부터 16bit 고정 -> 10.0.0.0 ~ 10.0.255.255 범위
           첫번째 subnet 10.0.1.0/24로 만듬 -> 10.0.1.0 ~ 10.0.1.255
           두번째 subnet 10.0.2.0/24로 만듬 -> 10.0.2.0 ~ 10.0.2.255
- (당연히) VPC는 한 리전에 존재, Subnet은 한 AZ에 존재
 
VPC를 쪼개는 것: Subnetting
왜 쪼갤까? - IP 주소들을 낭비없이 효율적으로 사용하기 위해 (ex. Host: 50개인 경우 /24일 필요 없이 /26으로 충분함)
 
Internet Gateway(IGW)
- VPC의 리소스를 인터넷에 연결하도록 허용. 인터넷으로 나가기 위한 통로. VPC에 attach하여 사용.
 
Route Table
- 서브넷 혹은 게이트웨이의 네트워크 트래픽이 어디로 전송되어야 될 지에 관한 라우팅 규칙을 포함한 테이블
- 서브넷에는 각각 라우트 테이블이 연결되어 있음
- 라우팅 target(대상)이 local로만 설정되면 내부 통신만 지원. private subnet.
- 라우팅 target(대상)이 local뿐 아니라 IGW가 설정되면 public subnet.
 
Private Subnet이라는 망 구조를 유지하면서 외부와 조건적으로 데이터 통신을 하고 싶으면 어떻게 하지?
-ex. RDS를 public 접근 허용 x
=> NAT Gateway, Bastion Host 방법 사용 가능
(둘은 외부 & Private Subnet을 연결해주는 방향이 차이가 있음)
 
NAT Gateway
- 인터넷 접속이 가능한 Public Subnet에 NAT Gateway를 설정해두고, Private Subnet이 외부 인터넷이 필요할 때 NAT Gateway을 거치도록 라우팅을 추가
- 즉, Private Subnet의 AWS 리소스가 Public Subnet의 NAT Gateway -> IGW -> 외부 연결 가능
- 하지만 반대로 외부 -> Private Subnet으로 연결은 x
NAT Gateway 보충 설명
- 특정 AZ에서 생성됨 -> Elastic IP 사용
- 여러 개의 AZ에 생성하여(다중 NAT Gateway) 내결함성(fault tolerance) 강화 가능
- 비용은 "시간 당 비용 + 전달되는 데이터 양"에 따라 측정
- 시간 당 비용이 매우 비쌈
 
Bastion Host
- Public Subnet에 위치해 외부에서 Private Subnet으로의 통신을 도와주는 대리인. 내부와 외부 네트워크 사이에서 일종의 게이트웨이 역할을 수행.
- Public IP를 가지는 EC2를 통해 Private IP만 갖는 EC2에 접근 가능. 
- 이를 하고 싶으면 해야 하는 설정들
1. Bastion Host Security Group: 보안 그룹은 인터넷에서 제한된 CIDR(외부)로부터 private subnet으로의 접근을 허용해야 함.
2. EC2 Security Group: Bastion Host의 보안 그룹 혹은 Bastion Host의 개인 IP에 대해 SSH 연결을 허용해야 함.
 
NACL
- Subnet을 오고가는 모든 트래픽에 대해 allow/deny하여 트래픽을 제어
 
NACL vs Security Group과 차이점
- NACL은 Subnet 단위 보안이며. Stateless라 응답 트래픽이 허용되는지 확인함.(들어오고 나가는 것 둘다 확인)
- 보안 그룹은 인스턴스 단위 보안이며. Stateful이라 한번 보안 그룹을 거쳤을 때 해당 트래픽이 허용/거부인지 기억함.
 
VPC Peering
- private IPv4 주소 또는 IPv6 주소를 사용해 두 VPC 간 트래픽을 라우팅 할 수 있도록 해주어 두 VPC간의 연결을 이루는 서비스
- VPC의 CIDR가 서로 겹치면 안 됨
- 서로 다른 계정, 서로 다른 리전에서도 가능
 
VPC Endpoint
- (설치하지 않는다면) VPC 내부에 설치하는 서비스가 아닌 경우(S3, CloudWatch, API Gateway...) 따로 Public IP를 가지고 외부에서 접근해야
- VPC Endpoint를 VPC 내부에 설치하면 AWS 내에서 바로 연결이 가능. 안전하고 효율적


VPC 기본 실습

아래와 같이 인프라를 구축해보자.

 
VPC: IPv4 CIDR을 10.0.0.0/16으로 생성, DNS 확인 활성화
Public 서브넷: IPv4 CIDR을 10.0.1.0/24, 10.0.2.0/24 (퍼블릭 IPv4 주소 자동 할당을 활성화)
Private 서브넷: IPv4 CIDR을 10.0.3.0/25, 10.0.4.0/25
- 왜 24, 25 할당? (통상적으로) public subnet이 private subnet보다 EC2 다수를 탑재해야 하므로 더 많은 주소 할당
 
VPC와 서브넷들을 한 번에 만들 수도 있고, VPC만을 생성한 뒤 subnet들을 개별적으로 생성할 수도 있다.

생성 후 acc-private-table-1, -2는 지우고 기본 rtb를 acc-private-table로 수정했다.

 
생성된 서브넷이다.

 
public, private EC2를 각 서브넷마다 생성한다.

Public, Private EC2 최종 모습

 
(안 되어있는 경우 진행)
public용 라우팅 테이블을 생성하고, Public 서브넷 2개를 명시적으로 연결한다.
인터넷 게이트웨이를 생성, 생성한 VPC에 연결한다.
public용 라우팅 테이블의 라우팅 메뉴에 IGW를 추가한다. (대상: 0.0.0.0/0)
 


NAT Gateway

- 내부(private subnet)에서 외부로 나가는 트래픽만 가능
- private subnet(10.0.3.0/25, 10.0.4.0/25)에 있는 인스턴스 → Nat Gateway → Internet Gateway → 외부 인터넷

NAT 게이트웨이 어디에 생성? public subnet 하나를 선택해서 생성한다.
private용 라우팅 테이블을 만들어 private subnet들을 연결하고, 라우팅에 NAT Gateway를 추가한다. (대상: 0.0.0.0/0)


Bastion Host

- Bastion Host(public EC2)에서 private EC2 여러개에 접근할 수 있는 방식. (SSH와 Security Group을 이용)

Bastion Host 실습

- Bastion Host로 설정한 public EC2에 보안그룹을 생성하는데, 인바운드 규칙에서 ssh 유형을 위치무관으로 연다. (accBastionSg)
- 접근 가능하게 할 private EC2에 새로운 보안 그룹을 생성하는데, 인바운드 규칙에서 ssh와 모든 ICMP-IPv4를 bastion host의 보안그룹(accBastionSg)이 소스인 경우에 대해 허용한다. (accPrivateSg)
 
[Mac 기준]
- 터미널에 다음을 입력하여, 다운로드 경로에 있는 private EC2의 키 페어 파일을 public EC2의 홈 디렉토리(~)에 업로드한다.

scp -i ~/Downloads/{키 페어 파일명} ~/Downloads/{키 페어 파일명} ubuntu@{퍼블릭 인스턴스의 퍼블릭 ip주소}:~

 
- AWS console 또는 터미널에서 public EC2에 접속해, 홈 디렉토리에 키 페어 파일이 잘 업로드되어 있는 것을 확인한다.
- 아래의 명령어를 입력하면 private EC2로 접속된다.

ssh -i {키 페어 파일명} ubuntu@{프라이빗 인스턴스의 프라이빗 IP}

 

 
 
Q.  어떻게 private EC2의 pricate IP로 접속할 수 있는가?
A. Bastion Host는 public subnet에 배치되고, private EC2 인스턴스는 private subnet에 위치한다.
VPC 내에서 각 subnet의 CIDR 블록이 겹치지 않기 때문에, 각 EC2 인스턴스는 고유한 private IP를 가지게 된다.
Bastion Host는 public IP를 통해 외부에서 접속하고, 그 후 private IP를 사용해 private subnet의 EC2 인스턴스로 SSH 연결할 수 있다. 이때 SSH 연결이 가능한 것은, 보안 그룹의 인바운드 규칙 설정을 통해 Bastion Host에서 프라이빗 EC2로의 SSH 접속을 허용해주었기 때문이다.
 
Q. 왜 항상 NAT Gateway 쓰지 않고 때로는 Bastion Host를 사용할까?
- 비용상의 이점
- ssh 가능 (Secure Shell, SSH)
 

private subnet에 mysql-server 설치해보기

sudo apt-get update
sudo apt-get install mysql-server
mysql --version

 
 
 
*아래 사진 캡쳐 실습시엔 private subnet의 IPv4 CIDR을 10.0.2.0/25로 설정해버려 10.0.2.144가 private ec2의 private ip입니다...


모든 리소스 삭제하기

NAT Gateway 삭제
ec2 모두 삭제
라우팅 테이블 삭제 (서브넷 연결을 해제해야 삭제 됨)
vpc, subnet들 삭제, igw 삭제

'Study > Cloud' 카테고리의 다른 글

[AWS] Storage - S3, CloudFront  (0) 2025.03.25