VPC (Virtual Private Cloud)
VPC 생성에 기본으로 필요한 것
- CIDR(Classless Inter Domain Route) block (CIDR block 은 한 번 정해지고 나면 변경 불가.)
- 최근 MSA 적용 사례들이 늘어나고 있어서 CIDR block 내에 IP 를 모두 사용하기도 어렵고, 서브넷 간 CIDR 블록 충돌을 고려하면 VPC CIDR 블록을 크게 잡는 건 지양하는 편.
- CIDR block subnet mask / network ID / host IP range 확인하는 사이트 : https://cidr.xyz/
Subnet 생성에 기본으로 필요한 것
- CIDR (VPC CIDR block 범위 내)
- AZ
Subnet 생성 시 고려 할 것
- public/private
- routing table
- routing table 형식 :
CIDR block 또는 IP
|target
→ IP 에 접근하기 위해선 타겟을 경유해야함을 나타냄. - 서브넷 만들면 라우팅 테이블은 알아서 만들어주는데 public/private 에 따라 라우팅 룰을 새로 만들어야 함.
- 예)
0.0.0.0 | IGW
-> 세상의 모든 IP 에 접근하려면 IGW (Internet Gateway) 을 경유하세요. - 예)
10.0.0.6/16 | local
→10.0.0.6/16
CIDR 에 소속되는 IP 에 접근하려면 local (서브넷) 을 경유하세요.
- 다중 AZ 에 2개 이상 subnet 구성 (for High Availability)
public subnet 생성 시 고려할 것
- IGW
- IGW 으로 연결하는 라우팅 룰 (0.0.0.0 | IGW) → IGW 으로 향하는 라우팅이 존재하는 서브넷 == public subnet ?
- Public IP (IGW 통해 인터넷에 접속할 때 공개하는 IP)
Elastic IP
- public subnet 에 있는 컴퓨팅 서버에 Elastic IP 부여
- Elastic IP 는 EC2 에 연결되어 있지 않아도 비용 발생
Elastic Network Interface (ENI)
- 고정 Public/Private IP, MAC 주소 제공
- 로드밸런서가 바라보는 인터페이스
- EC2 서버에 ENI 탈부착
private subnet 생성 시 고려할 것
- 인터넷 접속이 필요한 경우 NAT Gateway
- 라우팅 테이블에 NAT Gateway 에 대한 라우팅 룰 생성
NACL (Network Access Control List)
- 서브넷 단위로 설정하는 방화벽 (서브넷 안에 있는 모든 리소스 대상에 방화벽 적용)
- rule number 가 작을수록 적용 우선순위가 높다.
- stateless (inbound/outbound 규칙은 서로 독립적)
Security Group
- 리소스 단위로 설정하는 방화벽.
- NACL 보다 Security Group 을 더 많이 활용하는 편.
- stateful (inbound ACL 이 설정되어 있으면 해당 ACL을 통과해서 들어온 트래픽에 대한 outbound 를 허용)
- security group chaining 가능 (ex. public subnet SG 에 정의된 inbound rule 을 통과해서 들어온 트래픽을 private subnet 에 허용하도록 private subnet SG inbound rule 생성 가능)
ping 명령어는 ICMP(Internet Control Message Protocol) 을 사용하므로 다른 서브넷에 있는 인스턴스에 ping 에 대한 응답을 받으려면 SG 에 ICMP 인바운드 룰을 허용해야 한다.
VPC endpoint
IGW, NAT, public IP 를 통해 퍼블릭 서비스(ex.S3) 또는 private 서비스에 접근하지 않고 VPC endpoint 를 통해 접근 가능.
- gateway VPC endpoint
- interface VPC endpoint
VPC peering
- 리전 내 또는 cross-region VPC 피어링(peering) 가능.
- 피어링 대상의 두 VPC 내에 라우팅 룰 정의 필요.
- 피어링 간 IP 대역은 겹치면 안된다.
- 전이적이지 않다.
- ex) A 와 B 피어링, B 와 C 피어링 되어있다고 해서 A 와 C 가 피어링 되지 않는다.
- n개의 VPC 들을 피어링하면
combination(n, 2)
만큼 라우팅 룰이 필요하므로 복잡도가 높아짐. - 따라서 다중 VPC peering 필요한 경우 Transit Gateway 를 사용.