Virtual Private Cloud(VPC) 쉽게 이해하기 #2
VPC와 Network 쉽게 이해하기 #1에 이어서 이번 문서에서는 VPC, Subnet과 뗄레야 뗄 수 없는 존재인 Routing Table과 Internet Gateway에 대해 설명하고자 합니다.
Routing Table
라우팅 테이블(영어: routing table)은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다. 각 라우터의 라우팅 테이블은 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해서 거쳐야 할 다음 라우터의 정보를 가지고 있다.
- 출처 : 위키백과 -
위키백과의 설명처럼 라우팅 테이블은 최종 목적지에 도달하기 위한 다음 행선지의 정보를 담고 있습니다. 아래의 그림에서는 Your Computer(10.10.4.2)로 가고자 할 경우 My Computer(10.10.1.1)은 다음 행선지를 Router 1(10.10.1.2)로 지정해야합니다.
VPC도 마찬가지입니다. VPC 내에는 Subnet이 있으며 각 Subnet은 각기 다른 네트워크 대역을 갖고 있습니다. 그리고 한 Subnet이 다른 Subnet으로 가기 위해서는 'Routing'이 필요합니다. 각각의 Subnet은 서로 다른 네트워크 영역이기 때문이지요. 그렇다면 VPC를 다루기 위해서는 Routing을 어떻게 설정해야 할까요?
모든 라우팅 테이블에는 VPC 내부 통신을 위한 로컬 라우팅이 포함되어 있습니다. 이 라우팅은 기본적으로 모든 라우팅 테이블에 추가됩니다. VPC에 하나 이상의 IPv4 CIDR블록이 연결되어 있는 경우, 라우팅 테이블에 각 IPv4 CIDR 블록의 로컬 경로가 포함됩니다. 이러한 라우팅을 수정하거나 삭제할 수 없습니다.
- 출처 : AWS VPC 설명서 -
위의 설명처럼 VPC 내부(모든 Sunbet)에 대해서는 Routing이 자동으로 생성됩니다! 즉 별도의 설정 없이 한 Subnet에서 다른 Subnet으로 통신이 가능하다는 뜻입니다. 이는 사용자가 설정할 필요가 없고, 보이지도 않는 암시적 라우터인 'VPC Router'를 통해 가능합니다. Subnet 내의 모든 Resource는 자신이 소속된 Subnet이 아닌 다른 곳으로 향하고자 할 때 VPC Router를 거쳐야 합니다.
VPC에는 암시적 라우터가 있으며 라우팅 테이블을 사용하여 네트워크 트래픽이 전달되는 위치를 제어합니다. VPC의 각 서브넷을 라우팅 테이블에 연결해야 합니다. 테이블에서는 서브넷에 대한 라우팅을 제어합니다.
- 출처 : AWS VPC 설명서 -
아래 그림에서는 Subnet 10.0.3.0/25의 Routing을 보여주고 있습니다. VPC 대역인 10.0.0.0/16에 대해 Local Rouing이 지정되어 있음을 알 수 있습니다. 10.0.3.0/25뿐만 아니라, 나머지 3개 Subnet도 해당 라우팅 테이블을 보유하고 있습니다. VPC 내 Subnet에 할당된 Resource라면 어느 Subnet이든 다른 Subnet의 Resource와 자유롭게 통신할 수 있게 됩니다.
또한 라우팅 테이블은 Local Routing 뿐만 아니라 Subnet에 소속된 Resource(EC2 등)가 외부 인터넷망으로 나갈 수 있는 Routing을 가질 수 있습니다. 이를 Internet Gateway라고 합니다.
Internet Gateway
인터넷 게이트웨이는 수평 확장되고 가용성이 높은 중복 VPC 구성 요소로, VPC의 인스턴스와 인터넷 간에 통신할 수 있게 해줍니다. 인터넷 게이트웨이에는 인터넷 라우팅 가능 트래픽에 대한 VPC 라우팅 테이블에 대상을 제공하고, 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 NAT(네트워크 주소 변환)를 수행하는 두 가지 목적이 있습니다.
- 출처 : AWS VPC 설명서 -
이름에서 알 수 있듯이 Subnet 내 Resource(EC2 등)가 Internet으로 나아가고자 할 때 반드시 거쳐야 하는 관문이 'Internet Gateway'입니다. Internet Gateway가 없이는 외부 인터넷으로 나아갈 방법은 없습니다. 그렇다면 Internet Gateway만 생성해두면 외부 Internet과 통신할 수 있는 것일까요? 아닙니다! VPC에서 Resource(EC2 등)가 외부 인터넷과 통신하고자 할 경우 갖추어야 할 조건은 다음과 같습니다.
1. Internet 통신하고자 하는 Resource가 공인 IP를 보유할 것
2. Resource가 소속된 Subnet의 Routing Table에 '0.0.0.0/0' 목적지로 갖는 Routing 'Internet Gateway'이 있을 것
3. Network ACL과 Security Group 규칙에서 허용할 것
말로만 들어서는 이해가 쉽지 않습니다. 그림으로 보겠습니다.
위의 그림이 Internet Gateway입니다. 외부 인터넷으로 나가기 위한 관문 역할을 합니다. VPC에 연결하고 이름을 생성한 후 생성 버튼을 눌러주면 생성됩니다.
그리고 '0.0.0.0/0'에 대해 Routing을 Internet Gateway의 id로 지정합니다. 여기까지 설정을 하면 Subnet 내 Resource(EC2 등)는 외부 인터넷과 통신이 가능하게 됩니다. AWS에서는 공인 인터넷과 통신 가능한 Subnet을 'Public Subnet', 공인 인터넷이 차단된 사설 IP만 할당된 Subnet을 'Private Subnet'이라 부릅니다. 이를 그림으로 표현하면 다음과 같습니다.
위 그림에서 Public Subnet 2개는 Local Routing과 함께 Internet Gateway에 연결되어 있으므로 Internet 통신이 가능하며 Private Subnet은 Local Routing만을 갖고 있으므로 내부 통신만 가능합니다.
여기까지가 Routing Table과 Internet Gateway입니다. Routing Table과 Internet Gateway는 VPC를 이해하는데 필수적인 존재이므로 꼭 이해하고 넘어가셨으면 좋겠습니다. 다음 문서에서는 NAT Gateway에 대해서 알아보도록 하겠습니다!