Amazon VPC 생성 시 자동으로 생성되는 메인(기본) 라우팅 테이블은 뭘까?

Amazon VPC 생성 시 자동으로 생성되는 메인(기본) 라우팅 테이블은 뭘까?

Amazon VPC 생성 시 자동으로 생성되는 메인(기본) 라우팅 테이블에 대해 조사해 봤습니다.
Clock Icon2025.06.05

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Amazon VPC 생성 시 자동으로 생성되는 메인(기본) 라우팅 테이블에 대해 조사해 봤습니다.

메인(기본) 라우팅 테이블?

AWS에서 네트워크를 구성하고자 하면 항상 생성되는 리소스가 있습니다. 바로 메인(기본) 라우팅 테이블입니다.

jw-vpcmainroute-1

Amazon VPC 콘솔 화면에서 VPC 외 서비스를 생성할 때 다음 이미지처럼 각 네트워크들이 연결된 이미지를 확인할 수 있습니다. 하지만, 해당 이미지에서는 메인(기본) 라우팅 테이블을 확인할 수 없지만, 실제로 생성해 보면 메인(기본) 라우팅 테이블이 생성되는 것을 확인할 수 있습니다.

jw-vpcmainroute-2

그렇다면 이 메인(기본) 라우팅 테이블은 어떤 역할을 하는 걸까요?

Amazon Web Services(AWS) 및 CloudFormation(CFN)의 맥락에서 "메인" 라우팅 테이블이라는 용어는 VPC가 생성될 때 자동으로 연결되는 기본 라우팅 테이블을 의미합니다. 이 메인 라우팅 테이블은 사용자 지정 라우팅 테이블이 명시적으로 서브넷과 연결되지 않는 한 VPC 내의 트래픽을 라우팅하는 데 사용됩니다.

aws re:Post에서는 VPC가 생성될 때 자동으로 연결되는 기본 라우팅 테이블이며, 별도의 설정이 없을 경우, VPC 내 모든 서브넷은 이 메인 테이블과 연결하여 트래픽을 라우팅하는 데 사용된다는 의미로 들립니다.

https://repost.aws/questions/QUKIDx77JcTy2_xJi8niMoYg/how-to-set-a-route-table-as-main-and-what-does-it-mean

라우팅 테이블 없이 생성하면?

그렇다면 CloudFormation으로 라우팅 테이블 생성없이 VPC, Subnet을 생성하면 어떻게 될까요? 각 서브넷들이 메인(기본) 라우팅 테이블에 자동으로 연결될까요?

AWS 네트워크 환경을 구성하기 위해 다음 CloudFormation 코드를 사용했습니다.

라우팅 테이블 생성없이 진행했습니다.

AWSTemplateFormatVersion: '2010-09-09'
Description: VPC with 2 public and 2 private subnets using naming convention

Parameters:
  EnvName:
    Type: String
    Default: prd
  SystemName:
    Type: String
    Default: test
  VpcCidr:
    Type: String
    Default: 10.0.0.0/16
  PublicSubnet1Cidr:
    Type: String
    Default: 10.0.1.0/24
  PublicSubnet2Cidr:
    Type: String
    Default: 10.0.2.0/24
  PrivateSubnet1Cidr:
    Type: String
    Default: 10.0.11.0/24
  PrivateSubnet2Cidr:
    Type: String
    Default: 10.0.12.0/24

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCidr
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-vpc"

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-igw"

  AttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway

  PublicSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PublicSubnet1Cidr
      AvailabilityZone: !Select [ 0, !GetAZs "" ]
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-public-subnet-1"

  PublicSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PublicSubnet2Cidr
      AvailabilityZone: !Select [ 1, !GetAZs "" ]
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-public-subnet-2"

  PrivateSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PrivateSubnet1Cidr
      AvailabilityZone: !Select [ 0, !GetAZs "" ]
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-private-subnet-1"

  PrivateSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PrivateSubnet2Cidr
      AvailabilityZone: !Select [ 1, !GetAZs "" ]
      Tags:
        - Key: Name
          Value: !Sub "${EnvName}-${SystemName}-private-subnet-2"

결과를 확인해 보면, 메인(기본) 라우팅 테이블은 생성됐지만, 각 서브넷이 자동으로 연결되지는 않았습니다.

jw-vpcmainroute-3

AWS 콘솔 화면에서 자동으로 네트워크 환경을 구성해 주는 기능을 이용해 보아도 기본 라우팅 테이블에 연결되지는 않습니다. 서브넷에 따라 자동으로 라우팅 테이블이 생성되어 연결되기 때문에 별도로 서브넷 2개 생성, 라우팅 테이블 생성없음 이런 식으로 생성은 되지 않기 때문에 메인(기본) 라우팅 테이블에 생성된 서브넷이 자동으로 할당되지 않는 것을 확인할 수 있습니다.

jw-vpcmainroute-4

그렇다면 용도는 뭘까?

결과적으로 사용자가 별도의 라우팅 테이블을 만들고 각 서브넷에 직접 연결(associate) 했다면, 메인(기본) 라우팅 테이블은 사용되지 않고 남겨만져 있는 상태가 됩니다. 하지만, 각 서브넷의 라우팅을 위해 최소한 하나의 라우팅 테이블을 생성해 둔다 라는 명목으로 메인(기본) 라우팅 테이블이 생성되는 것 같습니다.

이 메인(기본) 라우팅 테이블은 삭제가 불가능 하며, CloudFormation으로도 메인(기본) 라우팅 테이블을 생성 못하게 막는 건 불가능합니다. 그렇기에 메인(기본) 라우팅 테이블을 활용하여 라우팅 테이블을 새롭게 구성하거나 남겨두는 것이 베스트입니다.

사실상 명시적으로 모든 서브넷에 원하는 라우팅 테이블을 붙여두는 게 베스트 프랙티스이기 때문에 메인(기본) 라우팅 테이블을 사용하는 일은 없을 것입니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.