Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
AWS Cheat Sheet - VPC
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2022-08-20
2022-08-19
2621
# VPC **Amazon VPC(Virtual Private Cloud)** 는 AWS에서 제공하는 네트워크 서비스다. 기본적으로 인터넷 애플리케이션들은 네트워크에서 실행이되기 때문에 VPC는 AWS에서 가장 기본이 되며 가장 중요한 서비스 중 하나다. 이 문서는 Cheat Sheet로 키워드 중심으로 VPC를 빠르게 이해하는 것을 목적으로 작성했습니다. ? 유튜브 영상자료인 [Learning and Hacking VPC](https://www.joinc.co.kr/w/Learning-and-Hacking-VPC)에서 VPC를 학습해보세요. ### VPC에 대해서 * VPC는 AWS의 네트워크 서비스로 IP 범위, 서브넷, 슈퍼넷, Routing Table, Internet Gateway, VPC Peering 등 가상의 네트워크 환경을 제어하기 위한 주요 기능들을 가지고 있다. * VPC는 IPv4와 IPv6를 지원한다. * 각 VPC는 다른 VPC와 서로 격리된다. 사용자는 하나의 리전에 여러 개의 VPC를 만들 수 있다. * Security Group와 NACL을 이용해서 트래픽을 막거나 허용 할 수 있다. Security Group는 호스트 단위의 방화벽이며, NACL은 서브넷단위로 트래픽을 필터링 한다. * AWS Account를 만들면 각 리전에 **Default VPC**가 제공된다. 사용자는 새로운 VPC를 구성하지 않고 미리 준비된 Default VPC를 사용 할 수 있다. ### IP Address * VPC는 **IP 네트워크** 이다. VPC에 있는 모든 자원들은 IP가 부여되며, IP를 통해서 서로 통신 할 수 있다. * VPC는 IPv4와 IPv6를 모두 제공하지만 일반적으로 IPv4를 주로 사용한다. * VPC는 Class A, Class B, Class C의 IP 주소 영역을 사용 할 수 있다. * IP 주소는**네트워크** 와 **호스트** 두 개의 개별 구성요소로 구성된다. 첫번째는 **네트워크** 이고 두번째는 네트워크의 **호스트**를 지정하는데 사용한다.  * VPC는 인터넷으로 부터 격리된 네트워크이며 Private IP가 할당된다. 사용자는 아래의 Private IP 영역을 사용 할 수 있다. * Class A : 10.0.0.0\~10.255.255.255 * class B : 172.16.0.0 \~ 172.32.255.255 * class C : 192.168.0.0 \~ 192.168.255.255 * VPC에서 IP는 **CIDR(Classless Inter-Domain Routing)** 을 이용해서 해당 네트워크를 표현한다. * CIDR 은 **10.0.0.0/16** 과 같이 표기한다. / 뒤에 0 \~ 32 사이의 숫자가 부여되는 형식이다. * / 뒤의 숫자는 네트워크의 크기를 나타낸다. 예를 들어 10.0.1.0/24는 네트워크의 크기가 24 bit임을 나타낸다. 네트워크의 크기가 24 bit 이므로 호스트가 사용 할 수 있는 크기는 8bit(256)가 된다. 즉 10.0.1.0/24 네트워크의 IP Range는 10.0.1.1 \~ 10.0.1.255 가 된다. ### Subnet * 일반적으로 VPC는 Subnet이라고 부르는 네트워크 세그먼트로 나눠서 사용한다. * VPC는 Region에 걸쳐있지만 Subnet은 하나의 가용영역에만 생성 할 수 있다. * VPC는 Private IP를 가진다. 즉 기본적으로 인터넷으로 부터 격리 된다. * 인터넷과 통신하려면 VPC 의 구성요소인 **Internet Gateway** 가 필요하다. * Default VPC는 Internet Gateway가 포함된 상태다. * 서브넷의 크기는 VPC IPv4 CIDR 범위의 크기에 따라 달라진다. 사용자는 CIDR 범위내에서 서브넷의 크기를 결정 할 수 있다. 생성할 수 있는 가장 작은 서브넷은 **/28** 이고 가장 큰 서브넷은 **/16** 이다. /28의 경우 4 bit를 호스트 영역으로 사용 할 수 있으므로 각 Subnet은 4개의 IP를 사용 할 수 있으며, /16의 경우 16 bit, 65536 만큼의 IP를 사용 할 수 있다. * Subnet 간 통신은 **Routing Table**로 제어 할 수 있다. * VPC는 여러 개의 Subnet으로 구성되는데, Routing Table에 의해서 Subnet이 Internet Gateway와 연결되 있다면 **Public Subnet** 그렇지 않다면 **Private Subnet** 이 된다. * Public Subnet : Intenet Gateway를 통해서 인터넷으로 연결된다. 즉 인터넷에서 접근 할 수 있다. * Private Subnet : Intenet Gateway와 연결되어 있지 않으므로 인터넷에서 접근 할 수 없으며, 인터넷으로 나갈 수도 없다.  ### Routing Table * 사용자는 **Routing Table**을 이용해서 서브넷의 트래픽 정책을 설정 할 수 있다. * VPC가 만들어지면 기본 Routing Table이 함께 제공된다. * Routing Table은 **서브넷에서 목적지로(Destination) 흐르는 트래픽을 어디로(Target) 보낼지**에에 대한 정보를 담고 있다. 아래 예제에서 10.1.0.0/16으로 하르는 트래픽 즉 VPC 안에 있는 다른 서브넷으로 흐르는 트래픽은 VPC 내부로 보내도록 하고 있다. 그 외의 트래픽인 0.0.0.0/0은 internet gateway로 보내도록 하고 있다. 따라서 이 Routing rule 이 적용되는 subnet에 있는 자원들은 인터넷과 통신이 가능하다. 이러한 subnet을 public subnet 이라고 한다.  * 기본적으로 Routing table은 internet gateway를 포함하고 있지 않다. 즉 private subnet이다. * VPC당 200개의 라우팅 테이블을 가질 수 있다. * subnet은 하나의 라우팅 테이블에만 연결될 수 있다. (2 개 이상의 라우팅 테이블에 연결될 수 있다면, 트래픽 흐름이 꼬일 것이므로)  ### Intenet Gateway * Internet Gateway는 VPC의 서브넷과 인터넷을 연결하는 통로(Gateway)역할을 하는 VPC 구성요소다. * VPC는 하나의 Internet Gateway만을 가질 수 있다. * 리전당 5개의 internet Gateway를 가질 수 있다. * EC2 인스턴스는 Public IP를 가질 수 있는데, internet gateway에 EC2 Instance의 Public IP가 할당된다. ### NACL * NACL(Network ACL)은 서브넷 수준의 방화벽처럼 작동한다. * 기본적으로 모든 인바운드/아웃바운드 IPv4 트래픽을 허용한다. * 각 서브넷은 하나의 NACL만 가질 수 있다. * NACL은 여러 서브넷에 적용할 수 있다. * NACL은 상태 비저장이다. 즉 인바운트 트래픽 정책과 아웃바운드 트래픽 정책이 구분된다. 인바운드 트래픽을 허용했다고 하더라도 아웃바운드 트래픽이 허용이 아니라면 막히게 된다. * NACL 규칙은 일련번호를 가진다. * NACL은 번호가 낮은 규칙부터 먼저 적용된다. ### Security Group * Security Group는 인스턴스 수준의 방화벽처럼 작동한다. * Security Group은 Source IP와 Target Port(인스턴스 Port)에 대한 허용 규칙을 저장하고 있다. * Security Group의 Default Rule은 **ALL DENY**이기 때문에 허용한 트래픽한 수신가능할 수 있다. * Security Group은 상태를 저장한다. 즉 허용된 트래픽은 아웃바운드 규칙에 상관 없이 아웃바운드로 흐를 수 있게 허용한다. * 인스턴스는 하나 이상의 Security Group 적용을 받을 수 있다.  ### EIP * EIP(Elastic IP)는 사용자 Account에 할당되는 Public IP 주소다. * 모든 EC2 인스턴스는 Private IP만 가지고 있기 때문에, 인터넷 통신을 위해서는 EIP를 붙여줘야 한다. * EC2 인스턴스를 생성 할 때 **Public IP**를 할당 할 수 있다. 이 Public IP로 인터넷 통신을 할 수 있지만, **EIP는 사용자에게 할당된 IP이고 Public IP는 할당되지 않은 IP**라는 차이가 있다. 인스턴시 생성시 할당된 Public IP는 변경될 수 있기 때문에, 안정적인 서비스를 원하는 곳에는 사용 할 수 없다. * EIP는 AWS가 관리하는 IP Pool에서 임의 할당하는 방식이므로 사용자는 IP Address를 선택할 수 없다. * 사용자가 EIP를 요청하면 AWS는 IP Pool에서 사용가능한 IP를 돌려준다. * 할당받은 EIP는 해제 할 때까지 계속 사용 할 수 있다. * Region 당 5개의 EIP를 할당받을 수 있다. (Case Open 해서 늘릴 수 있다.) * EIP는 인스턴스에 자유롭게 뗐다 붙였다 할 수 있다. * Private Subnet에 있는 Instance에도 EIP를 붙일 수는 있지만 Internet gateway가 없으므로 인터넷 통신을 할 수 없다. ### NAT Gateway 와 NAT Instance Private Subnet에 있는 Instance는 인터넷으로 부터 완전히 격리된다. 인터넷에서 접근 할 수도 없고, 인터넷으로 나갈 수도 있다. 하지만 **Private subnet에 있는 Instance도 파일 다운로드, 패치, 업데이트, API 호출 등으로 인터넷으로 접근** 해야 할 때까 있다. 이때 **NAT Gateway 혹은 NAT Instance를 사용** 할 수 있다. * NAT(Network Address translation)은 IP를 변환하는 일을 한다. 즉 Private IP를 인터넷 통신이 가능한 Public IP로 변환하는 식으로 인터넷과 통신이 가능하게 한다. * NAT Instance는 Public Gateway에 배치되어야 한다. Internet Gateway가 있어야지만 인터넷과 통신이 가능하기 때문이다. * Private Subnet에 있는 인스턴스가 NAT Instance를 통해서 인터넷에 접근하게 하려면 **Routing Table**을 수정해야 한다. * NAT Instance는 사용자가 Public Subnet에 설치하고 운영/관리를 해야 한다. 사용할 수는 있지만 AWS는 NAT Instance 대신에 NAT Gateway를 사용할 것을 권장하고 있다. * NAT Gateway는 NAT Instance와 하는일이 같다. 하지만 NAT Gateway는 완전관리형 서비스로 더 나은 가용성, 더 높은 대역폭, 더 낮은 관리비용을 제공한다. * NAT Gateway는 아래와 같은 방법으로 구축 / 운영 할 수 있다. * Public Subnet에 NAT Gateway를 생성한다. * EIP를 할당받고 NAT Gateway에 연결한다. * 0.0.0.0/0 트래픽을 NAT Gateway로 향하도록 Routing Table을 수정한다.  ### EIGW * **송신전용의 Internet Gateway** 다. IPv6를 통한 아웃바운드 통신은 허용하지만 인터넷에서의 인바운드 통신을 막는다. * NAT와 하는 일이 비슷하지만 NAT 처럼 주소변환 기능을 수행하지 않는다.  위 예제는 아래와 같이 Routing Table이 구성된다. | Destination | Target | | ----------- | ------ | | 10.0.0.0/16 | Local | | 2001:db8:1234:1a00:/64 | Local | | ::/0 | <span style="color: #f90000">eigw-id</span> | ### VPC Peering * VPC Peering로 연결된 네트워크는 같은 네트워크인 것처럼 자유롭게 통신이 가능하다.  * 일치하거나 중첩되는 IPV4 CIDR 블록에 대해서는 VPC Peering 할 수 없다. * VPC에 여러 개의 IPv4 CIDR 블럭이 있는 경우, 중첩되는 CIDR이 있다면 VPC Peering 할 수 없다. * IPv6에 대한 VPC Peering는 지원하지 않는다.    * VPC Peering은 **전이적 피어링**을 지원하지 않는다.  * 다른 리전의 VPC와도 Peering 할 수 있다. * 다른 AWS Account의 VPC도 Peering 할 수 있다. ### ENI * **EN(Elastic Network Interface)** 는 가상의 네트워크카드다. 랜카드라고 보면 된다. * 인스턴스가 생성되면 **Default Network Interface** 를 가진다. Default Network Interface는 인스턴스에서 분리 할 수 없다. * 인스턴스는 추가적인 ENI을 붙일 수 있다. * EIP는 ENI 중 하나에 연결 할 수 있다. * ENI는 기본적으로 인스턴스와 독립적으로 작동한다. 인스턴스의 종료시 연결된 ENI를 삭제할지 그대로 둘지를 설정 할 수 있다. * **원본(Source)/대상(targeg)확인** 을 활성화 또는 비활성화 할 수 있다. 이를 통해서 인스턴스가 수신되는 트래픽의 원본 또는 대상을 확인 할 수 있다. 원본/대상확인은 기본적으로 활성화 된다. NAT, 라우팅, 방화벽같은 서비스를 실행하기 위해서는 원본/대상 확인을 비활성화 해야 한다. ### VPC Endpoint * VPC Endpoint를 이용하면 Internet Gateway, NAT 디바이스, VPN, AWS Direct Connect 의 연결이 필요 없이 VPC와 AWS 서비스간의 연결을 설정할 수 있다. * AWS 서비스인 S3, DynamoDB 등은 Public Network에 존재한다. VPC에 있는 인스턴스는 Private Network에 존재하는데 VPC Endpoint를 이용하여 연결 할 수 있다.  * VPC Endpoint는 **Interface Endpoint와 Gateway VPC Endpoint** 두 가지 타입이 있다. * Interface Endpoint는 VPC의 ENI를 사용한다. * Gateway VPC Endpoint는 Routing Table을 이용한다.
Recent Posts
MLOps with Joinc - Kubeflow 설치
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
Archive Posts
Tags
aws
aws cheat sheet
cloud
network
vpc
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags