공학, 음악 부스러기
Published on

AWS CLI 를 통한 VPC 관련 설정

Authors
  • avatar
    Name
    치우

안녕하세요,

이번 글에서는 VPC 생성, 서브넷 생성, 게이트웨이 설정, 보안그룹 생성까지 vpc 관련 초반에 꼭 해야하는 전반적인 설정들을

브라우저 기반 관리 콘솔 없이 터미널에서 모두 완료하는 방법을 알아보겠습니다.

AWS CLI 설치 관련:

AWS CLI 설치 가이드

1. vpc 설정

새로운 vpc 를 생성합니다. aws cli 가 설치된 환경에서 터미널을 열고 아래 형식의 명령어를 입력합니다.

주의!

만약 aws cli 를 아직 설치하지 않았다면 , 다음 포스팅을 참고하셔서 CLI 를 설치하고 오시면 되겠씁니다..

AWS CLI  설치 가이드

새로운 vpc 생성하기

aws ec2 create-vpc --cidr-block 10.0.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=MyCustomVPC}]'

2. 인터넷 게이트웨이 생성 및 연결

퍼블릭 서브넷을 만들고 외부 인터넷에 접근하려면 **인터넷 게이트웨이(IGW)**를 생성하고 VPC에 연결해야 합니다.

다음 명령어를 통해 인터넷 게이트웨이를 생성합니다

aws ec2 create-internet-gateway --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=MyIGW}]'

게이트웨이 생성후 출력된 쿼리에 있는 인터넷 게이트웨이 ID를 사용하여 VPC에 연결합니다

aws ec2 attach-internet-gateway --vpc-id <VPC_ID> --internet-gateway-id <IGW_ID>

3. 서브넷 생성

VPC 안에서 서브넷을 생성합니다. 서브넷은 특정 가용 영역(AZ) 내에 배치되며, 퍼블릭 또는 프라이빗 서브넷으로 나뉩니다.

퍼블릭 서브넷 생성

aws ec2 create-subnet --vpc-id <VPC_ID> --cidr-block 10.0.1.0/24 --availability-zone us-east-1a --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet}]'

프라이빗 서브넷 생성

aws ec2 create-subnet --vpc-id <VPC_ID> --cidr-block 10.0.2.0/24 --availability-zone us-east-1a --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PrivateSubnet}]'

위 명령어들의 옵션을 다르게 하여 원하는대로 서브넷의 CIDR 블록과 **가용 영역(AZ)**을 다르게 설정할 수 있습니다.

참고 : 서울 리전의 가용영역 4 개의 코드는 각각 ap-northeast-2a, ap-northeast-2b, ap-northeast-2c, ap-northeast-2d 입니다.

서울 리전이 ap-northeast-2 라서 a 부터 d 까지 있다고 보면 될 것 같습니다.

4. 라우팅 테이블 생성 및 설정

서브넷에 트래픽을 라우팅할 라우팅 테이블을 설정합니다. 퍼블릭 서브넷과 프라이빗 서브넷에는 다른 라우팅 테이블을 설정해야 합니다.

라우팅 테이블 생성:

다음 명령어를 통해 라우팅 테이블을 생성할 수 있습니다.

aws ec2 create-route-table --vpc-id <VPC_ID> --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PublicRouteTable}]'

퍼블릭 서브넷과 라우팅 테이블 연결:

생성한 라우팅 테이블을 퍼블릭 서브넷과 연결합니다. 꺽쇠로 표현한 변수에 이전에 확인한 값을 틀리지 않게 넣어줍니다.

aws ec2 associate-route-table --route-table-id <ROUTE_TABLE_ID> --subnet-id <SUBNET_ID>

인터넷 게이트웨이를 통한 라우팅 경로 추가

aws ec2 create-route --route-table-id <ROUTE_TABLE_ID> --destination-cidr-block 0.0.0.0/0 --gateway-id <IGW_ID>

5. NAT 게이트웨이 설정 (프라이빗 서브넷용)

프라이빗 서브넷에서 인터넷으로 나가는 트래픽을 허용하려면 NAT 게이트웨이를 설정해야 합니다. NAT 게이트웨이는 퍼블릭 서브넷에 있어야 하며, EIP(Elastic IP)를 사용합니다. 내부망 설정을 원하시는 분이라면 잘 확인해야 할 부분입니다.

Elastic IP 생성:

aws ec2 allocate-address --domain vpc

NAT 게이트웨이 생성 (퍼블릭 서브넷에 생성):

aws ec2 create-nat-gateway --subnet-id <Public_Subnet_ID> --allocation-id <EIP_ALLOCATION_ID> --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=MyNATGateway}]'

프라이빗 서브넷에 대한 라우팅 테이블 생성 및 설정:

aws ec2 create-route-table --vpc-id <VPC_ID> --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PrivateRouteTable}]'

프라이빗 서브넷과 라우팅 테이블 연결:

aws ec2 associate-route-table --route-table-id <Private_Route_Table_ID> --subnet-id <Private_Subnet_ID>

NAT 게이트웨이를 통해 프라이빗 서브넷에서 인터넷으로 나가는 경로 설정:

aws ec2 create-route --route-table-id <Private_Route_Table_ID> --destination-cidr-block 0.0.0.0/0 --nat-gateway-id <NAT_GATEWAY_ID>

6. 보안 그룹 생성

보안 그룹은 EC2 인스턴스에 대한 트래픽을 제어하는 방화벽 역할을 합니다. http , ssh 등의 외부 접근에 대한 허용 규칙과 인스턴스로부터 외부로 전근하는 프로토콜 규칙을 지정하는 등의 설정을 합니다. 퍼블릭과 프라이빗 용도로 각각 보안 그룹을 생성할 수 있습니다.

퍼블릭 보안 그룹 생성 (SSH 및 HTTP 트래픽 허용):

aws ec2 create-security-group --group-name PublicSecurityGroup --description "Security group for public instances" --vpc-id <VPC_ID>

인바운드 규칙 추가 (SSH 및 HTTP 트래픽 허용):

aws ec2 authorize-security-group-ingress --group-id <Security_Group_ID> --protocol tcp --port 22 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress --group-id <Security_Group_ID> --protocol tcp --port 80 --cidr 0.0.0.0/0

자, 전반적인 vpc 관련 설정들과 보안 그룹 생성까지 명령줄 도구를 사용해 설정하는 방법을 기록해 보았씁니다.

AWS CLI 설치 가이드

안녕히갸세요