티스토리 뷰
VPC(Virtual Private Cloud): 독립된 가상의 클라우드 네트워크
VPC 특징
확장성: 클라우드 기반에 손쉽게 VPC 자원을 생성하고 삭제가 가능하며, 설정 및 관리에 편의성을 제공한다.
보안: 인스턴스 레벨과 서브넷 레벨에서 인바운드 및 아웃바운드 필터링을 수행할 수 있도록 보안 그룹과 네트워크 ACL을 제공하여 보안을 강화할 수 있다.
사용자 중심: VPC 내 리소스에 대해 사용자가 원하는 대로 손쉽게 제어할 수 있으며, 네트워크 지표 및 모니터링 툴을 활용하여 사용자에게 높은 가시성을 제공한다.
제약사항: 기술적 제약이 있다.(개선중)
OSI 계층(생각나지 않는다면 복습)
퍼블릭 IP(공인 IP): 인터넷 구간의 통신 대상을 식별하기 위해 ISP에서 제공하는 IP WNTH. 전 세계의 인터넷에서 유일
프라이빗 IP(사설 IP): 일반 가정이나 회사 등의 독리된 네트워크에서 사용하는 내부 IP 주소. 독립된 네트워크상에서 유일. 프라이빗 IP 주소를 통해 외부 인터넷 구간과 통신이 불가능
Class A: 10.0.0.0~10.255.255.255
Class B: 172.16.0.0~172.31.255.255
Class C:192.168.0.0~192.168.255.255
VPC 리소스 소개
ex) 서브넷에 할당할 IP 대역이 10.0.0.0/24이라면 10.0.0.0~10.0.0.255 중에서
10.0.0.0 -> 네트워크 주소
10.0.0.1 -> AWS VPC 가상 라우터 주소
10.0.0.2 -> AWS DNS 서버 주소
10.0.0.3 -> 향후 새로운 기능에 활용할 주소
10.0.0.255 -> 네트워크 브로드캐스트 주소
퍼블릭 서브넷과 프라이빗 서브넷
서브넷은 크게 퍼블릭 서브넷과 프라이빗 서브넷으로 나눌 수 있다. 위에서 설명한 IP와 똑같다고 보면 된다. 단, 프라이빗 서브넷은 원론적으로는 외부 인터넷 구간과 통신이 불가능하지만, 프라이빗 IP를 퍼블릭 IP로 변환해 주는 NAT 게이트웨이가 있으면 통신이 가능하다.
가상 라우터와 라우팅 테이블
VPC를 생성하면 자동으로 가상 라우터가 생성된다. 이 가상 라우터는 라우팅 테이블을 가지고 있어 목적지 네트워크로 라우팅하여 통신한다. 기본 라우팅 테이블을 사용할 수도 있지만, 새로운 라우팅 테이블을 생성하고 매핑하여 서브넷 당 개별적인 라우팅 테이블을 가질 수 있다.
인터넷 게이트웨이
인터넷 게이트웨이는 VPC와 인터넷 간의 논리적인 연결이다. 이러한 인터넷 게이트웨이는 VPC 당 1개만 생성할 수 잇다. 인터넷 게이트웨이를 통해 외부 인터넷 구간으로 통신할 수 있는 대상은 퍼블릭 IP 를 사용하는 퍼블릭 서브넷 내의 자원이다. 이러한 퍼블릭 서브넷은 자신의 라우팅 테이블에 외부 인터넷 구간으로 나가는 타깃을 인터넷 게이트웨이로 지정해 주어야 한다.(4장에서 자세히)
NAT 게이트웨이
NAT 게이트웨이도 인터넷 게이트웨이처럼 외부 인터넷 구간과 연결하는 관문 역할을 한다. NAT은 Network Address Translation의 약자로 네트워크 주소 즉, IP 주소를 변환해 주는 기술이다. NAT 게이트웨이가 프라이빗 IP를 퍼블릭 IP 로 변환하여 통신을 도울 수 있다. 즉, 프라이빗 서브넷 인스턴스의 프라이빗 IP를 퍼블릭 IP로 변환하여 인터넷 게이트웨이를 통해 인터넷 구간으로 연결하는 것이다. 반대로 외부 인터넷에서 프라이빗 서브넷으로 통신은 불가능하다.
(AWS에서 NAT 기능은 NAT 게이트웨이와 NAT 인스턴스로 구분 짓고 있다. 이번 장에서는 NAT 게이트웨이만 언급, NAT 인스턴스는 4장에서)
보안 그룹과 네트워크 ACL
VPC는 인스턴스 레벨과 서브넷 레벨 상에서 대상을 필터링 할 수 있는 보안 기술을 사용할 수 있다. 인스턴스 레벨에서의 보안 기술은 보안 그룹이며, 서브넷 레벨에서의 보안 기술은 네트워크 ACL이다.(7장에서 자세히)
[실습2-1] 퍼블릭 서브넷 VPC 구성
1. 퍼블릭 서브넷 VPC 생성
1-1. VPC 생성
서비스 -> VPC -> 가상 프라이빗 클라우드 -> VPC
IPv4 CIDR 블록: 10.0.0.0/16
1-2. 퍼블릭 서브넷 생성
서비스 -> VPC -> 가상 프라이빗 클라우드 -> 서브넷
VPC: 생성한 VPC 선택
가용 영역: ap-northeast-2a
IPV4 CIDR 블록: 10.0.0.0/24
(이 서브넷은 엄밀히 말하면 인터넷 게이트웨이가 연결되지 않은 상황이라 프라이빗 서브넷)
1-3. 인터넷 게이트웨이 생성 및 VPC 연결
서비스 -> VPC -> 가상 프라이빗 클라우드 -> 인터넷 게이트웨이
만들고 생성한 VPC와 연결.(작업 -> vpc 연결)
연결했지만 인터넷 구간으로 향하는 라우팅 경로가 없기 때문에 외부 인터넷 통신은 불가능
1-4. 퍼블릭 라우팅 테이블 생성 및 서브넷 연결
서비스 -> VPC -> 가상 프라이빗 클라우드 -> 라우팅 테이블
생성할때 생성한 VPC와 연결
생성한 라우팅 테이블 선택 -> 서브넷 연결(탭) -> 서브넷 연결 편집 -> 생성한 퍼블릭 서브넷 선택
1-5. 퍼블릭 라우팅 테이블 경로 추가
현재 퍼블릭 라우팅 테이블에는 외부 인터넷 통신을 위한 라우팅 경로가 없다. 추가하자
서비스 -> VPC -> 가상 프라이빗 클라우드 -> 라우팅 테이블 -> 라우팅(탭) -> 라우팅 편집 -> 라우팅 추가
대상: 0.0.0.0/0(모든 네트워크) // 대상: 생성한 인터넷 게이트웨이 선택
2. 검증
EC2 인스턴스 생성
3단계
네트워크: 생성한 VPC
서브넷: 생성한 퍼블릭 서브넷
퍼블릭 IP 자동 할당: 활성화
생성한 EC2 인스턴스에 SSH로 접근하여 통신 확인
ping google.com
[실습2-2] 프라이빗 서브넷 VCP 구성
1. 프라이빗 서브넷 추가
1-1. 프라이빗 서브넷 생성
VPC: 생성한 VPC 선택
가용 영역: ap-northeast-2c(가용영역 불가능한 경우 극복하기 위해 분산)
IPv4 CIDR 블록: 10.0.1.0/24
1-2. NAT 게이트웨이 생성
서비스 -> VPC -> 가상 프라이빗 클라우드 -> NAT 게이트웨이
서브넷: 퍼블릭 서브넷 선택, 탄력적 IP 할당 ID: 새 EIP 생성 클릭
(NAT 게이트웨이는 프라이빗 서브넷을 외부 인터넷 구간과 통신하게 해주는 역할이지만 위치상으로는 퍼블릭 서브넷에 배치되어야 한다.)
1-3. 프라이빗 라우팅 테이블 생성 및 서브넷 연결
1-4. 프라이빗 라우팅 테이블 경로 추가
대상: 0.0.0.0/0, VPC: 생성한 NAT 게이트웨이 선택
2. 검증
2-1. EC2 인스턴스 생성
3단계
네트워크: 생성한 VPC
서브넷: 생성한 프라이빗 서브넷 선택
사용자 데이터 입력(http://bit.ly/cnbl0202)
사용자 데이터 입력에 입력된 코드 값은 ec2 인스턴스가 부팅될 때 값을 읽어서 적용하낟. 참고로 위 사용자 데이터는 SSH 접속 시 EC2 인스턴스에 키 페어 없이 root 계정의 암호 입력 방식으로 로그인을 하는 설정이다.
2-2. EC2 인스턴스 접근 후 통신 확인
프라이빗 서브넷은 외부 네트워크에서 내부 프라이빗 서브넷으로 접근을 할 수 없다. 그래서 퍼블릭 EC2 인스턴스에 최초 접근을 한 후 로컬 통신을 통해 프라이빗 EC2 인스턴스로 SSH 접근을 시도한다.
ssh root@ip주소 (프라이빗 EC2 인스턴스의 프라이빗 IP 주소)
yes
비밀번호 : qwe123
2-3. 퍼블릭 서브넷과 프라이빗 서브넷의 통신 흐름
3. 자원 삭제
1. EC2 인스턴스 종료(EC2 -> 인스턴스 -> 인스턴스 선택 -> 작업 -> 인스턴스 상태 -> 종료)
2. NAT 게이트웨이 삭제(VPC -> NAT 게이트웨이 -> 작업 -> NAT 게이트웨이 삭제)
3. 탄력적 IP 삭제(VPC -> 탄력적 IP -> Actions -> 탄력적 IP 주소 릴리스)
4. VPC 삭제(VPC -> VPC -> 작업 -> VPC 삭제)
'책 > 따라하며 배우는 AWS 네트워크 입문' 카테고리의 다른 글
3. VPC 고급 (0) | 2021.04.03 |
---|---|
1. AWS 인프라 (0) | 2021.04.02 |