AWS

VPC에 대해 조금 더 자세히 알아보자 (2) - Subnet, BastionHosts

S_N_Y 2024. 4. 17. 09:23

 

#0 VPC란? 

- 단일 AWS region에 여러 VPC를 둘 수 있고 region당 최대 5개까지 가능하다.

- VPC마다 할당된 CIDR은 다섯 개이다.

(각 CIDR의 최소 크기는 /28로 IP주소는 최소 16개가 있고 최대 크기는 /16로 IP주소는 최대 6만 개쯤이다.)

- VPC는 Private 리소스이기 때문에 Private IPv4범위만 허용된다.

 

#1 Subnet 🔃

- 서브넷이란? ✨

VPC 내부에 있는 IPv4 주소의 부분 범위라고 생각하면 편하다.

한 가용영역 안에 public/private 서브넷이 있는 모습

이 범위 내에서 AWS가 IP주소 5개를 예약한다. (처음에는 4개 마지막 1개를 서브넷마다 예약)

=> 이런 IP 주소는 사용도 안 되고 EC2 인스턴스에 IP로 할당되지도 못한다.

 

예를 들어 CIDR 블록 10.0.0.0/24가 있으면 일부는 예약된 IP주소이다.

☑️10.0.0.0 => 네트워크 주소

☑️10.0.0.1 => 아까 10.0.0.0을 VPC router용으로 예약

☑️10.0.0.2 => DNS에 매핑한다.

(이거는 당장 사용되진 않지만 나중에 필요할 지 모르니 예약)

☑️10.0.0.255 => 브로드캐스트 주소

(VPC에서 브로드캐스트를 지원하지 않아서 사용은 안 되지만 예약은 가능)

 

+) 만약 EC2 인스턴스 서브넷에서 IP주소가 29개가 필요할 때 /27 서브넷은 사용 못한다. 왜냐면 /27 IP주소는 32개인데 예약된 IP주소 5개를 제외하면 27개만 남기 때문이다. 29개가 필요하댔는데 그보다 작으니 안 되고 서브넷 크기는 /26이어야 한다.(서브넷에 IP주소 64개를 제공하기 때문, 예약된 IP주소 5개를 제거하면 59개가 되니 필요한 29개보다 훨씬 많다) 

 

#2 Internet Gateway (인터넷 게이트 웨이)

internet gateway는 VPC의 리소스를 인터넷에 연결하도록 허용시키는 게이트웨이를 말하는데 EC2 인스턴스나 람다 함수 등이 있다. => 좋은 관리형 리소스이다.

(VPC는 Internet Gateway 하나에만 연결되고 Internet Gateway 자체는 인터넷 엑세스를 허용하지 않는다!)

하나의 AZ에 서브넷은 2개인데 다른 2개는 안 넣은 상태(도식을 최대한 간단하게 보여주기 위함)

VPC에 internet gateway를 만들어보자.

일단 그림 정도로는 서브넷에 인터넷 엑세스를 제공하지 못 하고 라우팅 테이블도 수정해야 한다.

따라서 public subnet에 공용 EC2 인스턴스를 만들고 라우팅 테이블을 수정해서 EC2 인스턴스를 라우터에 연결하고 internet gateway에 연결한다. 그러면 internet gateway가 인터넷과 연결될 수 있다!

 

#3 Bastion Hosts

사용자가 private subnet에 없는 EC2 인스턴스에 액세스하고자 한다. 사용자인 우리는 public subnet에 있는데 이는 사용자의 EC2 인스턴스가 private subnet에 위치하지 않기 때문이다 private subnet에 대한 인터넷 엑세스는 없다.😰

=> 이때 배스천 호스트를 사용할 수 있다!

배스천 호스트는 이름 그대로 EC2 인스턴스인데 이 EC2 인스턴스는 public subnet에 있다는 점이 특이한 점이다.

(배스천 호스트 보안 그룹이라는 자체 보안 그룹도 있다)

이때 public subnet에 있는 EC2 인스턴스(배스천 호스트)로 private subnet에 있는 EC2 인스턴스에 액세스할 수 있다.

=> 이 모든 것이 VPC에 존재하기 때문인 것을 잊지 말기

 

private subnet에 있는 EC2 인스턴스에 액세스하려면 먼저 SSH를 배스천 호스트에 연결하고 이 배스천 호스트가 다시 SSH를 private subnet의 EC2 인스턴스에 연결해야 한다.

...

결국에는 요약하자면

🌟배스천 호스트를 통해서 private EC2 인스턴스에 SSH로 액세스할 수 있다는 것이다.🌟

 

➕) 배스천 호스트를 위해서는 보안 그룹이 반드시 인터넷 액세스를 허용해야 한다! 그런데 모든 인터넷 액세스를 허용하면 보안상 위험이 크기 때문에 기업의 public CIDR 액세스만 허용하거나 사용자의 인터넷 액세스만 허용하는 등 제한하는 게 더 좋으니 염두해두고 만들길 바란다. => 이렇게 하면 배스천 호스트의 EC2 보안 그룹을 최대한 제한해서 특정 IP만 액세스가 가능하도록 설정할 수 있다.

➕➕) private subnet의 EC2 인스턴스 보안 그룹에서는 반드시 SSH 액세스를 허용해야 한다. 따라서 포트 22번이 배스천 호스트의 private IP가 되거나 배스천 호스트의 보안 그룹이 되는 셈이다. 이는 트래픽, 즉 EC2 인스턴스가 배스천 호스트를 이용해서 연결되기 때문이다.