4장. 가상 네트워크 만들기
- 먼저 인프라 스트럭처 관리자가 자유롭게 다양한 서버를 구축할 수 있는 네트워크부터 만든다.
- 책 내에서 언급하는 네트워크는 인프라스트럭처 관리자가 주체가 되어 관리하는 장소를 말한다.
VPC
- 실제에서 네크워크에 서버나 네트워크 장비, 이들을 연결하는 케이블들 물리적인 것을 구축해야되는데
- VPC는 가상환경 안에 네트워크 장비에 해당하는 리소스를 VPC안에 추가할 수 있다.
VPC 생성 내용
VPC생성 순서
-

-
name이 -
인 VPC는 기본VPC이다.
- 블로그나 간단한 웹사이트를 즉시 만들고자 하는 이용자의 요구를 만족하려는 것으로 미리 만들어진 VPC이다.
VPC생성
생성시 이름 규칙이 있다.
시스템 이름 -리소스이름(-리소스 식별자)
- ex. sample-vpc, sample-ec2-web01
IPv4 CIDR 블럭정보 : manual input 10.0.0.0/16
IPv6 CIDR 블럭정보: 블록 없음
테넌시 정보 : 기본값
서브넷과 가용영역
- VPC안에는 하나 이상의 서브넷을 만들어야 한다.
- 서브넷은 VPC의 IP주소 범위를 나누는 단위이다.
- IP주소 범위를 나누는 대표적인 이유는 2가지이다.
- 역할 분리 : 외부에 공개하는 리소스 여부 구별
- 기기분리 : AWS 안에서의 물리적인 이중화를 수행
역할분리
- 리소스가 담당하는 역할에 따라 분리
- 로드밸런서는 외부 공개가 목적이므로 외부에서 접근 가능
- DB서버는 VPC 내부서버에서만 사용
기기분리
- 내결함성을 높이기 위해 기기를 분리
- aws라고 하더라도 장애가 나타나 운영이 안되는 경우가 종종있다.
- 이런 경우라면, 동일한 기기에 리소스를 넣는다면, 시스템 자체를 사용하지 못하는 사태가 일어날 수 있다.
리전
- 글로벌 서비스에서 지리적 관점으로 영역을 구분하는데, 이를 리전이라고 한다.
- 일본 도쿄에서 호스팅되는 영역 - 도쿄 리전
- 한국 서울에서 호스팅되는 영역 - 서울 리전
- 이렇게 전세계영역으로 분산되어 있으면 천재지변등의 불가항력에 대해 대처가능
- 또한, 리전은 서로 완전히 독립적이다.
가용영역
- 리전은 2개 이상의 가용영역 단위로 또 나눌 수 있다.
- 1개의 가용영역만 있을 수도 있긴하지만, 대부분 2개이상으로 운영된다.
- 가용 영역이 다르면 독립되었음을 보장 할 수 있다.
- 가용 영역별로 서브넷(IP주소 범위)을 제공하면, 여러 서브넷을 동시에 못하는 가능성을 낮출 수 있다.
한국은 4개의 데이터센터(4개의 가용영역)
- aws는 국내에 직접 IDC를 구축하지않고 기존에 구축되어있던 IDC를 사용한다.
IPv4 CIDR 설계 방법
- 서브넷을 한번 만들면 해당 서브넷이 이용하는 CIDR블록은 변경할 수 없다.
- 처음 설계를 확실히 해야함!!
- 생성할 서브넷의 수
- 서브넷 안에 생성할 리소스 수(AWS가 5개정도 예약하기위해 사용한다.)
-> 아키텍처를 설계할 때 어느정도 예측 할 수 있게 된다.

생성 내용
서브넷 생성 순서
- 서브넷 또한, Name이
-
인 경우 기본으로 제공되는 서브넷이다.

- 서브넷 -> 서브넷 생성 -> 서브넷 필요정보 입력
- 서브넷 이름(
VPC이름-서브넷-public/private 01
)
- 가용영역 선택
- 서브넷 IPv4 CIDR블록 설정
- ex.
10.0.0.0/20
,10.0.16.0/20
, 10.0.64.0/20
, 10.0.80.0/20
인터넷 게이트웨이
VPC에서 생성된 네트워크와 인터넷 사이의 통신을 가능하게 하는 것
- 게이트웨이가 없다면 인터넷과 VPC안의 리소스는 서로 통신할 수 없다.
- 생성할 때 필요한 내용은 크게 2가지이다.

- VPC에 인터넷 게이트를 붙이는 것을 연결이라고 한다.
게이트웨이 생성
VPC에 연결

- 상태가 Attached가 보이면 인터넷 게이트웨이가 VPC에 연결이 된 것이다.

NAT 게이트웨이
인터넷 게이트웨이는 서브넷이 public이든 private이든 ip를 알고 접근할 수 있게 된다.
하지만, 이렇게되면 public과 private을 구분한 의미가 사라진다.
그래서, 기본적으로 private 서브넷에 생성된 리소스는 인터넷 으로 보낼 수 있지만 인터넷에서는 접근할 수 없어야한다.
- NAT(Network Address Translation)
- private SubNet 리소스
--o-->
인터넷
- private SubNet 리소스
<--x--
인터넷
- 즉, 이러한 요구사항을 구현하는 것이 NAT 게이트웨이이다.
- NAT은 네트워크 주소 변환 시스템이다.
- 이것은 Public 서브넷에 생성한다.

NAT 시스템
- 아파트로 비유하자면, 아파트 주소는 노출되어 있어도, 각층의 방을 구체적으로 누가 살고, 몇층이고, 몇번째이고, 방안에는 무엇이 있는지 정보가 노출되어 있으면 안된다.
- 이것을 아파트 사람들끼리 1호, 2호등 호실로 표현하게된다.
- 만약 이 아파트에 사는 사람이 외부사람과 연락하고자 편지를 적어 보낼 때,
1호만 적어서 보내거나, 아파트 주소만 적어서 보내게되면 답장을 받을 수 없게 된다.
- 그래서 아파트주소+호실번호 라는 형식의 정보로 변환해야한다.
- 이러면, 아파트가 먼저 받고 내부적으로 알고 있는 호실로 전달할 수 있게 된다.
- 그러므로 퍼블릭 서브넷에 NAT 게이트웨이가 필요하다.
생성내용

- 이름을 적고, 사용할 서브넷을 선택한다.
- 탄력적 IP 할당 ID : 탄력적 IP할당 버튼
- 자동 생성한 탄력적ip는 NAT게이트를 삭제해도 그대로 남아있어 이용료가 부과되기 때문에, 따로 삭제해줘야 한다.
- 이때, NAT게이트웨이를 삭제해도 1시간정도 콘솔에 표시될 수 있으므로,탄력적 IP를 바로 삭제할 수 없을 수도 있다.
- 이미 생성했던 탄력적IP가 있다면 선택도 할 수 있다.

라우팅 테이블
위 과정까지 마치면, 외부에서 private리소스에 직접 접근 할 수 있는 방법은 없어진다.
하지만, 이 상태에서는 서브넷과 서브넷, 또는 서브넷과 각 게이트웨이가 통신할 수 있는 경로가 존재하지 않는다.
이러한 문제를 해결하기 위해 라우팅 테이블은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다.
-
쉽게 말해, 어디로 전송할지 경로를 결정하는 방법을 라우팅 테이블을 참조하여 결정하게 된다.
-
라우팅 테이블에는 이서버에 접속할 때는 이곳을 경유한다 라는 규칙을 설정할 수 있다.

-
송신 대상지 : 접속 대상 위치에 관한 정보.
- 송신 대상지는 IP 주소를 지정
- IP 주소는 특정값을 지정하거나 CIDR 형식을 이용해 범위로 지정할 수도 있다.
-
타깃 : 경유지에 관한 정보
- 라우팅 테이블에 지정할 수 있는 타깃은 몇가지가 있다.

-
필요에 따라 라우팅테이블을 여러개 만들 수 있다.
-
ex.
- public 라우팅 테이블 : public subnet1,2 공용
- private 라우팅 테이블1 : private subnet1
- private 라우팅 테이블2 : private subnet2
생성 내용
- public 라우팅 테이블(공용)
- 로컬
- 송신대상지 :
10.0.0.0/16
(VPC)
- 타깃 : 로컬
- 외부
- 송신대상지 :
0.0.0.0/0
(모든 주소라는 의미)
127.0.0.1
은 로컬 호스트 즉 자기 스스로를 가리키는 IP
- 타킷 : sample-igw(인터넷 게이트웨이)
- 해당되는 서브넷
- sample-subnet-public01
- sample-subnet-public02
- private 라우팅 테이블 1
- 로컬
- 송신대상지 :
10.0.0.0/16
(VPC)
- 타깃 : 로컬
- 외부
- 송신대상지 :
0.0.0.0/0
(모든 주소라는 의미)
- 타킷 : sample-ngw-01(
public-subnet-01
에 있는 NAT 게이트웨이)
- 해당되는 서브넷
- private 라우팅 테이블 2
- 위 private 라우팅 테이블1 양식이랑 거의 동일
실습
-
이름과 라우터테이블을 적용할 VPC만 잘 선택해주고 라우팅 테이블 생성을 하면 된다.

-
생성이 되면 하단 메뉴에 라우팅과 라우팅 편집을 할 수 있게 된다.

-
편집화면에 들어오면 Local은 기본으로 있고, 만들 라우팅을 추가해주면 된다.


- 이 작업을 private 라우팅 테이블 1,2 도 비슷하게 수행하면된다.
- private의 경우 NATgateway와 연결한다.
VPC상에서 다양한 리소스를 생성할 준비를 마쳤다.
보안그룹
이 상태에서는 인터넷을 통해 모든 리소스에 접근할 수 있다.
외부로 부터 접근을 보호하려면 접근 제한 즉, 보안 그룹 기능을 사용해야한다.
☉ ACL(네트워크 액세스 컨트롤 리스트)
- 보안 설정이 복잡한 경우 ACL를 통해 간소화 할 수 있다.
- 보안그룹보다 더 앞단에서 적용된다
보안그룹 제어
- 외부로부터 접근을 크게 2가지 개념으로 제어한다.
생성내용
- 모든 리소스에 접속하는 입구인 점프서버(5장)
- 요청이나 처리를 분산하는 로드 밸런서(7장)
- 인바운드 규칙
- HTTP :
0.0.0.0/0
- HTTPS :
0.0.0.0/0
실습
-
보안그룹 생성하면, 먼저 이름과 적용할 VPC을 선택한다.

-
그다음 인바운드 규칙:접근할 수 있는 정보를 입력한다.

-
아웃바운드 규칙: 내보낼 수 있는 정보를 입력한다.
마치며
- 이로써 격리용 클라우드 리소스(VPC)를 만들 수 있는 환경이 갖춰졌다.
- 아무것도 없는 환경에서 하나하나 만들어간다고 생각하면서 실습을 따라가니, 좀 더 이해가 잘 가는 듯 하다.
- 다음은 접근 통제 역할은 하는 점프서버를 알아보고자 한다.