1. 프라이빗 용도의 서브넷 구성
이전 실습에서 생성한 사용자 VPC에 프라이빗 용도의 서브넷 환경을 구성합니다.
이전 실습의 자원을 삭제한 상태라면, 다시 자원을 배포 후 돌아와 주세요.
신규 서브넷 생성
•
VPC 서비스 → 서브넷 (메뉴 진입) → 서브넷 생성 (버튼 클릭)
◦
VPC ID: MY-VPC (선택)
◦
서브넷 이름: PRIVATE-SUBNET (입력)
◦
가용 영역: 아시아 태평양 (서울) / ap-northeast-2c (선택)
◦
IPv4 서브넷 CIDR 블록: 10.2.2.0/24 (입력)
◦
서브넷 생성 (버튼 클릭)
사용자 라우팅 테이블 생성
•
라우팅 테이블 (메뉴 진입) → 라우팅 테이블 생성 (버튼 클릭)
◦
이름: Private-RT (입력)
◦
VPC: MY-VPC (선택)
◦
라우팅 테이블 생성 (버튼 클릭)
라우팅 테이블 - 서브넷 연결
•
서브넷 연결 (탭 클릭)
◦
명시적 서브넷 연결 → 서브넷 연결 편집 (버튼 클릭)
▪
이용 가능한 서브넷: PRIVATE-SUBNET (선택)
▪
연결 저장 (버튼 클릭)
NAT 게이트웨이 생성 및 연결
•
NAT 게이트웨이 (메뉴 진입) → NAT 게이트웨이 생성 (버튼 클릭)
◦
이름: MY-NAT (입력)
◦
서브넷: PUBLIC-SUBNET (선택)
◦
연결 유형: 퍼블릭 (선택)
◦
탄력적 IP 할당 (버튼 클릭)
◦
NAT 게이트웨이 생성 (버튼 클릭)
라우팅 경로 추가
•
라우팅 테이블 (메뉴 진입) → 대상 라우팅 테이블 (선택)
◦
라우팅 (탭 진입) → 라우팅 편집 (버튼 클릭)
▪
라우팅 추가 (버튼 클릭)
▪
대상: 0.0.0.0/0 (선택)
▪
대상: NAT 게이트웨이 (선택) → MY-NAT (선택)
▪
변경 사항 저장 (버튼 클릭)
VPC 리소스 맵 확인
•
VPC (메뉴 진입) → 대상 VPC (선택)
◦
리소스 맵 (탭 선택)
2. EC2 인스턴스 생성
생성한 프라이빗 용도의 서브넷에 EC2 인스턴스를 생성합니다.
이번 실습은 CloudFormation을 통해 EC2 인스턴스와 보안 그룹을 생성합니다.
CloudFormation 템플릿 다운로드
•
아래 CloudFormation 템플릿 파일을 다운로드합니다.
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
InstanceType:
Description: Enter t2.nano, t2.micro Default is t2.micro.
Type: String
Default: t2.micro
AllowedValues:
- t2.nano
- t2.micro
LatestAmiId:
Description: (DO NOT CHANGE)
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64'
AllowedValues:
- /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64
VpcId:
Type: AWS::EC2::VPC::Id
Description: Select the ID of MY-VPC.
SubnetId:
Type: AWS::EC2::Subnet::Id
Description: Select the ID of PRIVATE-SUBNET.
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref LatestAmiId
InstanceType: !Ref InstanceType
SubnetId: !Ref SubnetId
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: PRIVATE-EC2
SecurityGroupIds:
- !Ref MySG
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
echo "root:qwe123" | chpasswd
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
dnf install httpd -y
systemctl start httpd && systemctl enable httpd
echo "<h1>[인프런] AWS Networking - 2장 실습 프라이빗 웹 서버</h1>" > /var/www/html/index.html
MySG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
YAML
복사
# CH2_LAB2.yaml 파일 내용
CloudFormation 스택 생성 설정
•
CloudFormation 서비스 → 스택 (메뉴 진입) → 스택 생성 (버튼 클릭)
1단계 - 스택 생성
•
템플릿 준비: 기존 템플릿 선택 (선택)
•
템플릿 소스: 템플릿 파일 업로드 (선택)
◦
파일 선택 → 템플릿 파일 선택 (CH2_LAB2.yaml) → 열기
•
다음 (버튼 클릭)
2단계 - 스택 세부 정보 지정
•
스택 이름: Private-EC2
•
InstanceType: t2.micro or t2.nanp
•
KeyName: 각자 생성한 키 페어 선택
•
SubnetId: PRIVATE-SUBNET (선택)
•
VpcId: MY-VPC (선택)
•
다음 (버튼 클릭)
3단계 - 스택 옵션 구성
•
기본 값 유지
•
다음 (버튼 클릭)
4단계 - 검토 및 작성
•
설정된 정보 확인
•
전송 (버튼 클릭)
EC2 인스턴스 생성 확인
•
EC2 서비스 → 인스턴스 (메뉴 진입)
◦
대상 인스턴스 확인
다음 단계를 진행하기 위해 세부 정보 → 프라이빗 IPv4 주소를 확인하고 복사해 둡니다.
3. 통신 검증
통신 검증은 두 가지 방향으로 진행합니다.
1.
외부 인터넷 → 인스턴스(프라이빗 서브넷)
2.
인스턴스(프라이빗 서브넷) → 외부 인터넷
인터넷 구간에서 인스턴스로 통신
외부 인터넷 구간에서 프라이빗 서브넷에 위치한 인스턴스로 직접 통신이 불가합니다.
퍼블릭 서브넷에 위치한 인스턴스(Bastion Host)로 진입 후 로컬 통신을 수행합니다.
•
퍼블릭 서브넷의 인스턴스로 SSH 접근 후 진행
curl [프라이빗 IP 주소]
예시)
curl 10.2.2.150
Bash
복사
# 프라이빗 서브넷에 위치한 인스턴스로 curl 확인
ssh root@[프라이빗 IP 주소]
예시)
ssh root@10.2.2.150
Bash
복사
# 프라이빗 서브넷에 위치한 인스턴스에 ssh 접근 (계정: root / 암호: qwe123)
인스턴스에서 인터넷 구간으로 통신
curl wttr.in/seoul
Bash
복사
# curl 명령으로 서울 날씨 확인
ping -c 3 8.8.8.8
Bash
복사
# 구글 dns 주소로 ping 테스트 (3회)
4. 생성 자원 삭제
이전 실습과 이번 실습에 생성한 모든 자원을 삭제합니다.
PUBLIC-EC2 인스턴스 삭제
•
서비스 → EC2 서비스 → 인스턴스 (메뉴 진입)
◦
PUBLIC-EC2 (체크)
◦
인스턴스 상태 (토글 확장)
▪
인스턴스 종료 (클릭)
•
종료(삭제) (버튼 클릭)
PRIVATE-EC2 인스턴스 삭제
•
서비스 → CloudFormation 서비스 → 스택 (메뉴 진입)
◦
대상 스택 (선택)
◦
우측 상단 - 삭제 (버튼 클릭)
▪
약 1분 내외 시간 소요
NAT 게이트웨이 삭제
•
서비스 → VPC 서비스 → NAT 게이트웨이 (메뉴 진입)
◦
MY-NAT (선택)
◦
작업 (토글 확장)
▪
NAT 게이트웨이 삭제 (버튼 클릭)
▪
삭제 (입력)
탄력적 IP 삭제
•
서비스 → VPC 서비스 → 탄력적 IP (메뉴 진입)
◦
탄력적 IP (선택)
◦
작업 (토글 확장)
▪
탄력적 IP 주소 릴리스 (버튼 클릭)
▪
삭제 (입력)
VPC 삭제
•
서비스 → VPC 서비스 → VPC (메뉴 진입)
◦
MY-VPC (선택)
◦
작업 (토글 확장)
▪
VPC 삭제 (버튼 클릭)
▪
삭제 (입력)
여기까지 2장 - Amazon VPC로 프라이빗 서브넷 구성 실습을 마칩니다.
수고하셨습니다 :)