본문 바로가기
[Cloud & Infrastructure]/[AWS]

[AWS] VPC 시작하기 (2/3)

by 코드몽규 2022. 3. 20.
반응형

 이번 포스팅에서는 VPC에서의 서브넷(subnet)과 routing table, internet gateway, NAT에 대해 설명하고자 한다. 

 

Routing table 

라우팅 테이블(Routing table)이란 네트워크 상의 특정 목적지까지의 거리와 가는 방법 등을 명시하고 있는 테이블입니다.
라우터는 어떤 목적지를 찾아갈때 이 라우팅 테이블을 보고 찾아가게 됩니다.
쉽게 말하면 라우터가 여러 가지 정보를 종합해서 얻어낸 네트워크에 대한 지도를 라우팅 테이블이라고 합니다.

라우팅 테이블의 구성도

 

이렇듯 라우팅 테이블은 local server에서 또 다른 subnet을 가지는 remote server와 통신하기 위해서 필요합니다. 

 

vpc에서도 마찬가지입니다. vpc 내에는 subnet이 있으며 각 subnet은 각기 다른 네트워크 대역을 갖고 있습니다. 때문에 A subnet에서 B subnet으로 가기 위해서는 Routing이 필요한 것입니다. 

 

vpc에서의 라우팅 테이블 

  VPC를 만들면 기본 라우팅 테이블이 자동으로 생성됩니다. 서브넷이 라우팅 테이블과 명시적으로 연결되지 않은 경우 서브넷은 기본 라우팅 테이블이 기본적으로 사용됩니다. Amazon VPC 콘솔에서 라우팅 테이블 페이지의 기본(Main) 열에서 예(Yes)를 찾으면 VPC에 대한 기본 라우팅 테이블을 볼 수 있습니다.
  
기본적으로 기본이 아닌 VPC를 만들면 기본 라우팅 테이블에는 로컬 라우팅만 포함됩니다. 콘솔에서 VPC 마법사를 사용하여 NAT 게이트웨이 또는 가상 프라이빗 게이트웨이가 있는 비 기본 VPC를 생성하면 마법사는 해당 게이트웨이의 기본 라우팅 테이블에 라우팅을 자동으로 추가합니다.

모든 라이퉁 테이블에는 vpc 내부 통신을 위한 로컬 라우팅이 포함되어 있습니다. 이 라우팅은 기본적으로 라우팅 테이블에 추가됩니다. vpc에 하나 이상의 IPv4 CIDR블록이 연결되어 있는 경우, 라우팅 테이블에 각 IPv4 CIDR 블록의 로컬 경로가 포함됩니다. 이러한 라우팅을 수정하거나 삭제할 수 없습니다.

즉, VPC내부의 모든 subnet에 대해서는 routing이 자동으로 생성됩니다. 즉 별도의 설정 없이 한 subnet에서 다른 subnet으로 통신이 가능하다는 뜻입니다. 사용자가 설정할 필요가 없고 보이지도 않는 암시적 라우터인 'VPC Router'를 통해 가능합니다. 서브넷 안의 모든 리소스들은 소속된 서브넷에서 다른곳으로 향하고자 할 때 vpc router를 거쳐야 하며 이러한 router들을 관리하는 라우팅 테이블을 사용하여 네트워크 트래픽이 전달되는 위치를 제어합니다. 때문에 vpc의 각 서브넷은 라우팅 테이블에 연결되어야 하고 테이블은 서브넷에 대한 라우팅을 관리하는 방식입니다.

 

아래 서브넷을 보면 172.13.0.0/16 local 에 연결되어 있는 것을 확인할 수 있습니다. 그 밑에 igw(인터넷 게이트웨이) 주소도 연결이 되어있습니다. 서브넷에 소속된 리소스가 외부 인터넷망으로 나가기 위해서는 routing을 가질 수 있습니다. 이를 internet gateway라고 합니다.


반응형

Internet Gateway

인터넷 게이트웨이는 vpc의 인스턴스와 인터넷 간에 통신할 수 있게 해 줍니다. 인터넷 게이트웨이에는 인터넷 라우팅 가능 트래픽에 대한 VPC 라우팅 테이블에 대상을 제공하고, 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 NAT(네트워크 주소 변환)을 수행하는 두 가지 목적이 있습니다. 

 subnet(서브넷) 내 Resource(ec2 등) 이 인터넷에 연결되려면 반드시 거쳐야 하는 관문이 '인터넷 게이트웨이'입니다. 

인터넷 게이트웨이에 연결될 때 필요한 조건은 총 3가지입니다. 

 

1. internet과 연결되고자 하는 resoruce가 공인 ip를 보유할 것

2. resource가 소속된 subnet의 routing table에 '0.0.0.0/0' 목적지로 갖는 routing 'internet gateway'가 있을 것

3. network ACL과 Security Group 규칙에서 허용할 것 

 

위 사진(서브넷 -> 라우팅 테이블)에서 서브넷 라우터를 통해 로컬에서 서브넷끼리 연결되어 있고 igw(인터넷 게이트웨이)를 통해 인터넷에 연결된 것을 확인할 수 있다.

 

AWS에서는 공인 인터넷과 통신 가능한 subnet을 'public subnet' 공인 인터넷이 차단된 사설 ip만 할당된 subnet을 'private subnet'이라고 부릅니다. 

 


NAT(Network Address Translation)

NAT는 Network Address인 IP를 변환해주는 장치입니다. 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위해 사용됩니다. 

 위의 설명만 들어서는 제대로 이해하기 쉽지 않습니다.  예를 들어 한집에서 무선인터넷을 사용하는 전자기기를 총 10대를 사용한다고 가정합니다. 각각의 전자기기들은 사설 IP를 갖고 있으며 이를 통해 인터넷에 접속을 시도합니다. 이때 NAT는 각각의 사설 IP를 라우터가 갖고 있는 공인 IP로 바꿔주어 인터넷으로 접속할 수 있게 해 줍니다. NAT를 사용하면 이렇듯 IP주소를 절약할 수 있다는 장점이 있습니다. 

  또한 NAT는 보안면에서도 장점이 있습니다. 아래 그림의 Private subnet에 Database service인 RDS를 넣어두려고 합니다.

  공인 IP에 연결되어 있지 않아 안전한 이유로 Private subnet에 RDS를 넣어 놓았지만 외부 인터넷을 통해 업데이트해야 할 일이 생긴다면 어떻게 해야 할까요? 이러한 경우 사용하는 것이 NAT gateway입니다. 인터넷 접속이 가능한 public subnet에 NAT gateway를 생성해두고 private subnet이 외부 인터넷에 연결될 때만 사용하도록 라우팅을 추가해주는 것입니다. private subnet의 사설 IP 주소는 NAT 되어 공인 IP로 인터넷에 연결될 수 있습니다. 이렇듯 내부에서 외부로의 접속만 가능하며 외부에서 NAT gateway를 이용하여 접속하는 것은 불가능합니다.

 

 

즉, Internet gateway가 있는 public subnet에 NAT gateway를 생성합니다.  이때 탄련적 주소(Elastic IP)를 하나 만들어 NAT gateway에 할당하도록 설정합니다. 그러면 private subnet에 있는 인스턴스들은 외부 인터넷으로 연결될 때 Elastic IP로 source IP NAT 되어 연결되어집니다.

 

 이렇게 Public Subnet에 EIP가 할당된 NAT gateway를 만들고 나면 Private Subnet의 라우팅 테이블에 '0.0.0.0/0'에 대하여 NAT gateway로 라우팅 되도록 설정해줍니다. 

  이를 통해  private subnet에 연결되는 공인 인터넷에 대해서는 NAT gateway가 있는 public subnet으로 이동하여 공인 ip(탄력적 주소)로 변환 후 인터넷 게이트웨이를 통해 인터넷으로 연결됩니다. 

 

아래 그림을 참고하면 쉽게 이해할 수 있습니다.

 


이번 포스팅을 통해 vpc 서브넷(subnet)과 라우팅 테이블(routing table), 인터넷 게이트웨이(internet gateway) 그리고 NAT에 대해 알아보았다. 다음 포스팅에는 VPC의 트래픽을 제어하는 서비스들과 엔드포인트에 대해 알아보겠다.

반응형

댓글