[AWS] VPC 알아보기
VPC(Virtual Private Cloud)는 가상 네트워크입니다. AWS 클라우드에서 격리된 네트워크 환경을 제공하며, AWS 리소스(EC2 인스턴스, RDS 데이터베이스 등)가 상호작용할 수 있도록 해줍니다. VPC는 사용자 전용 인터넷 네트워크입니다.
vpc란 간단히 말해 하나의 가상 컴퓨터다.
한 리전안에 VPC를 여러개 생성할때 서로 아이피는 겹치면 안된다. 생성은 되지만 DNS IP를 잡지 못하는 에러가 발생하기 때문이다.
예를 들어, 기본 VPC가 172.31.0.0/16으로 생성되어 있다면 우리는 172.31 네트워크 IP주소를 피해서 생성해야 한다.
그리고 유의할 점이 있는데, 원래 규정된 사설 IP 범위와는 다르게 aws에서는 /16 ~ /28 비트의 서브넷 마스크만을 허용한다는 것이다.
즉, AWS VPC를 생성할 수 있는 가장 큰 IP 대역은 /16이며, 가장 작은 대역은 /28 인 셈이다.
이 범위내에서만 CIDR를 설정해야 된다.
그리고 VPC에서 한번 설정된 IP 대역은 수정할 수 없으며, 각각의 VPC는 독립적이기 때문에 서로 통신할 수 없다.
만일 통신을 원한다면 VPC 피어링(peering) 서비스를 통해 VPC 간에 트래픽을 라우팅할 수 있도록 설정할 수 있다.
가용 영역 AZ
VPC는 리전안에 하나만 존재할 수 있습니다.
VPC는 리전과 대응될 정도로 큰 단위입니다.
Subnet
VPC가 네트워크 공간 이라면 서브넷은 VPC의 네트워크 공간을 나누어 리소스가 배치되는 공간을 말한다.
서브넷은 네트워크 공간 구역을 차지해서 안에 리소스들을 배치할 수 있는 영역입니다.
하나의 VPC는 여러개의 서브넷을 가질 수 있지만 하나의 AZ에서만 생성이 가능합니다.
Subnet의 CIDR
Subnet은 VPC의 네트워크 영역을 쪼개서 사용한다. 그래서 VPC의 CIDR 범위인 /16 ~ /28을 사용할 수 있다.
VPC를 나눠서 사용하기에 대역폭이 낮아야 한다.
AWS가 관리용으로 사용하는 IP도 존재하는데, 아래에 서술한 IP들은 AWS의 관리 IP로서 사용자가 사용할 수 없는 AWS의 예약 주소이다. (10.0.0.0/24 기준)
| 10.0.0.0 | 네트워크 주소 (Network ID) |
|---|---|
| 10.0.0.1 | AWS에서 VPC 라우터용으로 예약 (Default Gateway) |
| 10.0.0.2 | DNS 서버 주소 |
| 10.0.0.3 | AWS에서 앞으로 사용하려고 예약한 주소 |
| 10.0.0.255 | 네트워크 브로드캐스트 주소 |
AWS에서는 자체 서비스에 이용되는 호스트가 추가로 할당되어있어서 총 2+3개를 사용을 못한다고 이해하면 된다.
Public Subnet
인터넷과 연결이 가능한 서브넷이다.
Private Subnet
인터넷 연결이 불가능한 서브넷이다.
라우팅 테이블
각각의 Subnet은 서로 다른 네트워크 영역을 가진다.(CIDR로 설정해서)
Subnet이 다른 Subnet에 가기 위해선 Routing이 필요하다.
각 Subnet 들은 네트워크 트래픽 전달에 대한 라우팅 테이블을 가지고 있으며, 요청이 발생하면 라우팅 테이블로 목적지로 찾아간다.
Public Subnet는 Local Routing과 함께 Internet Gateway에 연결시키면 내부와 Internet 통신이 가능하며 Private Subnet은 Local Routing만을 가지고 내부 통신만 가능하다.
VPC 내부(모든 Sunbet)에 대해서는 디폴트로 Routing이 자동으로 생성되어져 있다.
즉 별도의 설정 없이 한 Subnet에서 다른 Subnet으로 통신이 가능하다는 말이다.
0.0.0.0/16에 대해 Local Rouing이 지정되어 있음을 알 수 있다.
Destination에 10.0.0.0/16은 local 타겟으로 가라고 안내하고 있다.
이 말은 만일 10.0.0.6의 인스턴스로 오면 로컬에서 찾으라는 말이다
라우팅 테이블 해석
“대상” 은 라우팅 규칙이 적용될 IP 주소 범위(네트워크 대역, CIDR) 를 의미합니다.
- 10.0.0.0/16 → local
→ VPC 내부(10.100.0.0 ~ 10.100.255.255 범위) 트래픽은 VPC 안에서만 통신되도록 설정
즉, 같은 VPC 안의 인스턴스끼리 라우팅 - 0.0.0.0/0 → igw-… (Internet Gateway)
→ 모든 IP(전 세계 인터넷)을 의미
즉, 위에 지정한10.0.0.0/16을 제외한 나머지 모든 트래픽은 인터넷 게이트웨이(IGW)로 나가도록 설정
인터넷 게이트웨이
VPC는 기본적으로 격리된 네트워크 환경이다. 따라서 VPC에서 생성된 리소스들은 기본적으로 인터넷을 사용할 수 없다.
이러한 환경에서, 인터넷 게이트웨이는 VPC의 인스턴스와 인터넷간에 통신을 할 수 있게 해준다.
인터넷 게이트웨이는 VPC의 리소스와 인터넷 간의 통신을 활성화하기 위해 VPC에 연결하는 관문이라고 이해하면 된다.
즉, VPC 리소스가 인터넷으로 나가기위한 통로이다.
인터넷으로 데이터를 보내야한다면 당연히 인터넷 게이트웨이로 트래픽을 전달해야 한다.
10.0.0.0/16 대역 이외의 모든 인터넷 트래픽(0.0.0.0/0) 은 인터넷 게이트웨이(igw)로 가라고 매핑 되어 있다.
VPC에서 Resource(EC2 등)가 외부 인터넷과 통신하고자 할 경우 갖추어야 할 조건
- Internet 통신하고자 하는 Resource가 공인 IP를 보유할 것
- Resource가 소속된 Subnet의 Routing Table에 ‘0.0.0.0/0’ 목적지로 갖는 Routing ‘Internet Gateway’이 있을 것
- Network ACL과 Security Group 규칙에서 허용할 것 (뒤에서 다룸)
AWS Lambda의 VPC
Lambda는 기본적으로 VPC 설정이 필요없지만 Private Subnet에 연결하거나 IPv6로 통신하기 위해선 VPC 설정이 필요합니다.
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-End-Point-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EA%B5%AC%EC%B6%95-%EC%84%B8%ED%8C%85 https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-%EC%82%AC%EC%9A%A9-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-NAT-%EB%B3%B4%EC%95%88%EA%B7%B8%EB%A3%B9-NACL-Bastion-Host
댓글남기기