-
AWS를 이용하여 인스턴스 생성하고 SSH, FTP, HTTPD 서비스 사용하기 (1/5) - 기초 환경 설정클라우드(Cloud)/AWS 2023. 8. 21. 09:59
Bastion Host(Public Host), Private Host를 생성하고 SSH, FTP, HTTPD 서비스를 구현해 보겠습니다.
먼저 서비스를 구현하기 전에,
1.1 VPC
1.2 서브넷
1.3 인터넷 게이트웨이
1.4 NAT 게이트웨이
1.5 라우팅 테이블 생성 및 편집
을 진행하겠습니다.
1.1 VPC 생성
VPC는 독립된 네트워크 구성이 가능하게 합니다. AWS는 다양한 고객들이 사용하는 공용 환경이기에, 사용자는 각자의 EC2, RDS, 데이터베이스를 비롯한 다양한 리소스들을 생성해서 사용하기 위해서는 VPC를 이용하여 격리된 네트워크를 만들어줘야 합니다.
AWS 아키텍처(VPC만 생성) AWS -> VPC -> VPC 생성 버튼을 클릭합니다.
이름 태그 : my-vpc
IPv4 CIDR : 10.1.0.0/16
으로 생성 클릭을 누르게 되면 VPC 생성이 완료됩니다.
1.2 서브넷 생성
VPC만 가지고는 아직 아무것도 할 수 없기에, 서브넷을 통해 리소스가 생성되는 물리적인 공간(Available Zone)과 연결해줘야 합니다. VPC가 논리적인 범위를 의미한다면, 서브넷은 VPC안에서 실제로 리소스가 생성될 수 있는 네트워크입니다.
AWS > VPC > 서브넷 > 서브넷 생성 버튼을 클릭합니다.
총 3개의 서브넷을 생성해 줍니다.
첫 번째 서브넷
VPC ID : my-vpc
서브넷 이름 : my-bastion-subnet
가용 영역 : 아시아 태평양(서울) / ap-northeast-2a
IPv4 CIDR 블록 : 10.1.1.0/26
두 번째 서브넷
VPC ID : my-vpc
서브넷 이름 : my-private-subnet-ubuntu
가용 영역 : 아시아 태평양(서울) / ap-northeast-2a
IPv4 CIDR 블록 : 10.1.1.128/27
세 번째 서브넷
VPC ID : my-vpc
서브넷 이름 : my-private-subnet-windows
가용 영역 : 아시아 태평양(서울) / ap-northeast-2c
IPv4 CIDR 블록 : 10.1.1.160/27
여기서 Public 서브넷과 Private 서브넷은 다음과 같은 차이점이 존재합니다.
Public 서브넷 : 인터넷과 연결하여 외부에서 접근이 가능한 영역이다. Public 서브넷과 인터넷 게이트웨이를 연결시키면 외부 인터넷과 통신이 가능하다.
Private 서브넷 : 외부 인터넷을 차단하고 내부에서만 사용하기 위해 만든 서브넷이다. 예를 들어 Database Service인 RDS는 중요한 정보이니 외부에서의 접속을 차단하기 위해 Private 서브넷에 넣어두는 형태로 이용한다.
위와 같이 3개의 서브넷을 생성하면 다음은 인터넷 게이트웨이를 생성하겠습니다.
1.3 인터넷 게이트웨이
VPC는 기본적으로 격리된 네트워크 환경입니다. 따라서 VPC에서 생성된 리소스들은 기본적으로 인터넷을 사용할 수가 없습니다. 인터넷에 연결하기 위해서는 인터넷 게이트웨이가 필요합니다.
AWS > VPC > 인터넷 게이트웨이 > 인터넷 게이트웨이 생성 버튼을 클릭합니다.
이름 태그 : my-igw
로 인터넷 게이트웨이를 생성해 줍니다.
인터넷 게이트웨이가 생성되었다면 이제 VPC와 인터넷 게이트웨이를 연결시켜줘야 합니다.
생성했던 my-igw 체크박스를 선택하고 작업 -> vpc에 연결을 클릭합니다.
그런 다음 저희가 사용하는 VPC(my-vpc)에 인터넷 게이트웨이를 연결해 주면 끝이 납니다.
생성과 VPC 연결을 통해 인터넷 게이트웨이 설정을 마쳤습니다. 다음으로는 NAT 게이트웨이 생성입니다.
1.4 NAT 게이트웨이
NAT 게이트웨이는 Private 서브넷이 인터넷과 통신하기 위한 아웃바운드 인스턴스입니다. Private 네트워크가 외부에서 요청되는 인바운드는 필요 없더라도 인스턴스의 펌웨어나 주기적인 업데이트가 필요하면 아웃바운드 트래픽만 허용해야 할 경우가 있습니다.
이때 Public 서브넷상에서 동작하는 NAT 게이트웨이는 Private 서브넷에서 외부로 요청하는 아웃바운드 트래픽을 받아 인터넷 게이트웨이와 연결합니다.
예를 들어, Private 서브넷에 존재하는 RDS와 같은 리소스들을 외부 인터넷을 통해 업데이트해야 하는 상황을 가정해 보겠습니다. Private 서브넷이기에 인터넷 게이트웨이와 연결을 할 수도 없으며, Public IP를 생성해서 인터넷 게이트웨이와 연결하게 된다면 그것 Private 서브넷으로 구성한 의미가 없어집니다.
바로 이러한 경우 사용하는 기술이 NAT 게이트웨이입니다. (Bastion Host 도 사용 가능)
이 두 가지 기술은 Private 서브넷의 구조를 유지시켜 주면서 외부와 조건적으로 데이터 통신이 가능하게 해 줍니다.
이제 NAT 게이트웨이를 생성해야 하는 이유를 알았으니 AWS를 통해 생성해 보겠습니다.
AWS > VPC > NAT 게이트웨이 > NAT 게이트웨이 생성 버튼을 클릭합니다.
이름 : my-natgateway
서브넷 : my-bastion-subnet
탄력적 IP 할당 버튼을 클릭하여 탄력적 IP 할당
연결 유형 : 퍼블릭
연결 유형에 있는 퍼블릭과 프라이빗의 차이점은 다음과 같습니다.
퍼블릭(Public) 연결 유형
- 인터넷과 직접 연결되는 공용 IP 주소를 사용하여 인터넷과 통신할 수 있는 방식입니다. 이 유형의 연결은 외부에서 NAT 게이트웨이에 직접 접속할 수 있으며, 인터넷에 노출되는 IP 주소를 사용합니다.
이러한 연결 방식은 대개 인터넷에서 웹 서버나 VPN 등을 호스팅 하는 경우에 사용됩니다.
프라이빗(Private) 연결 유형
- NAT 게이트웨이와 연결된 가상 네트워크 내부에서만 통신이 가능한 방식입니다. 이 유형의 연결은 NAT 게이트웨이 내에서만 동작하며 외부에서 직접 접속할 수 없습니다. 이러한 연결 방식은 대개 회사 내부 네트워크나 클라우드 서비스 내부에서만 사용됩니다.
이번 실습에서는 퍼블릭 연결 유형을 이용합니다.
이제 NAT 게이트웨이 생성이 완료되었다면 라우팅 테이블을 편집합니다.
1.5 라우팅 테이블 생성 및 편집
저희는 지금까지 VPC, Subnet, 인터넷 게이트웨이, NAT 게이트웨이를 생성하였습니다.
인터넷 게이트웨이는 Public Subnet이 외부 인터넷과 통신할 수 있게 해 주고,
NAT 게이트웨이는 Private Subnet이 외부 인터넷과 통신할 수 있게 해 줍니다.
라우팅 테이블을 편집하는 이유는,
네트워크 요청이 발생하면 데이터는 우선 라우터로 향하게 됩니다. 라우터란 목적지이고 라우팅 테이블은 각 목적지에 대한 이정표입니다.
AWS에서 라우팅 테이블은 서브넷과 연결되어 있는 리소스입니다. 서브넷에서 네트워크를 이용할 때는 라우팅 테이블을 사용해서 목적지를 찾게 됩니다.
즉, 서브넷을 다른 리소스와 통신하거나 인터넷을 연결하기 위해서는 라우팅 테이블에 있는 라우트 규칙(목적지 정보, CIDR 등등)이 필수적입니다.
라우팅 테이블의 중요성을 알았다면 이제 라우팅 테이블을 편집해 보겠습니다.
1. 라우팅 테이블 <--> 목적지(인터넷 게이트웨이, NAT 게이트웨이)
2. 서브넷 <--> 라우팅 테이블
두 가지 연결을 진행해야 합니다.
먼저 라우팅 테이블과 목적지 연결입니다.
AWS > VPC > 라우팅 테이블 > 라우팅 테이블 생성 버튼을 클릭합니다.
총 2개의 라우팅 테이블을 생성해 줍니다.
첫 번째 라우팅 테이블
이름 : my-public-route
VPC : my-vpc
두 번째 라우팅 테이블
이름 : my-private-route
VPC : my-vpc
위와 같이 두 개의 라우팅 테이블을 생성하였다면, 이제 라우팅 테이블을 편집해 줍니다.
AWS > VPC > 라우팅 테이블 > 라우팅 테이블 체크박스 클릭 > 라우팅 (하단) > 라우팅 편집 클릭
my-public-route과 my-private-route 두 개의 라우팅 테이블을 편집합니다.
my-public-route
대상 : 0.0.0.0/0
대상 : 인터넷 게이트웨이(my-igw)
my-private-route
대상 : 0.0.0.0/0
대상 : NAT 게이트웨이(my-natgateway)
*이때 0.0.0.0/0 주소는 범위가 모든 네트워크라는 것을 의미합니다.
위와 같은 과정을 통해 라우팅 테이블에 목적지(인터넷 게이트웨이, NAT 게이트웨이)를 명시하였습니다.
그렇다면 이제 서브넷이 라우팅 테이블을 참고하여 목적지로 향할 수 있도록, 서브넷과 라우팅 테이블을 연결시켜줘야 합니다.
AWS > VPC > 라우팅 테이블 > 라우팅 테이블 체크박스 클릭 > 서브넷 연결 (하단) > 서브넷 연결 편집 클릭
my-public-route과 my-private-route 두 개의 라우팅 테이블을 편집합니다.
my-public-route
선택한 서브넷 : my-bastion-subnet
my-private-route
선택한 서브넷 : my-private-subnet-ubuntu, my-private-subnet-windows
위와 같이 설정하고 연결 저장을 누르게 되면 서브넷과 라우팅 테이블 연결이 끝나게 됩니다.
이것으로 저희는
- VPC (my-vpc)
- 3개의 Subnet (my-bastion-subnet, my-private-subnet-ubuntu, my-private-subnet-windows)
- 인터넷 게이트웨이 (my-igw)
- NAT 게이트웨이 (my-natgateway)
- 2개의 라우팅 테이블 (my-public-route, my-private-route)
을 생성하였습니다. 아키텍처를 그림으로 표현하면 다음과 같습니다.
이제 모든 리소스 구성이 완료되었으니, 다음장부터는 FTP, HTTPD, SSH 서비스를 구현해 보겠습니다.
'클라우드(Cloud) > AWS' 카테고리의 다른 글
AWS를 이용하여 인스턴스 생성하고 SSH, FTP, HTTPD 서비스 사용하기 (5/5) - HTTPD (0) 2023.08.22 AWS를 이용하여 인스턴스 생성하고 SSH, FTP, HTTPD 서비스 사용하기 (4/5) - FTP (2) 2023.08.22 AWS를 이용하여 인스턴스 생성하고 SSH, FTP, HTTPD 서비스 사용하기 (3/5) - SSH (0) 2023.08.22 AWS를 이용하여 인스턴스 생성하고 SSH, FTP, HTTPD 서비스 사용하기 (2/5) - Bastion Host, Private Host 생성 (0) 2023.08.21