VPC

박상훈·2023년 2월 23일
0

Virtual Private Cloud

가상 사설망

개요

AWS는 기본 VPC가 있으며 VPC는 인터넷에 연결되어 있음
EC2인스턴스 생성시 서브넷을 설정하지 않으면 기본 VPC가 적용됨
결과적으로 EC2인스턴스는 공용 IPv4 주소를 가지며 인터넷에 액세스 가능

CIDR(싸이더), 공개/비공개 IP

단순한 IP 범위 정의에 도움

  • Octets
    • IP 를 구성하는 최소단위
    • IP란 255(Octet).255(Octet).255(Octet).255(Octet) 4개의 옥텟
  • Base IP
    • 1.1.1.1, 192.168.0.0
  • Subnet Mask
    • IP에서 변경 가능한 비트의 개수 정의
    • 255.0.0.0/0 ~ 32

192.168.0.0 IP를 예시로 사용하여 싸이더를 적용하면 아래와 같다
/32 는 2의 0승 으로 1개의 IP를 허용하여 192.168.0.0 허용
/31 은 2의 1승 으로 2개의 IP를 허용하여 192.168.0.0 ~ 1 허용
/30 은 2의 2승 으로 4개의 IP를 허용하여 192.168.0.0 ~ 3 허용
/24 는 192.168.0.0 ~ 256 (256개)
/16 은 192.1678.0 ~ 256.0 ~ 256 (65536개)
/0 모든 아이피 허용

그러므로 122.149.196.85/32 는 122.149.196.85 라는 단 하나의 IP를 의미함

  • Private IP
    • 10.0.0.0 ~ 10.255.255.255(10.0.0.0/8): 큰 네트워크 사용
    • 172.16.00 ~ 172.31.255.255: AWS VPC
    • 192.168.0.0 ~ 192.168.255.255: Home networks
  • Public IP
    • 위 Private IP 를 제외한 모든 아이피는 공용 IP 주소

서브넷

VPC 내부에 있는 IPv4주소의 부분 범위
AWS에서 서브넷에 기본적으로 IP 5개를 사용, 해당 IP는 사용할 수 없음
CIDR이 10.0.0.0/24 인 경우 사용되는 5개의 IP는 아래와 같음

  • 10.0.0.0 네트워크 주소
  • 10.0.0.1 VPC router
  • 10.0.0.2 DNS
  • 10.0.0.3 대비용 IP
  • 10.0.0.4 브로드캐스트

그래서 서브넷을 설정할 때 디폴트로 사용되는 5개의 IP를 포함한
IP의 총 개수를 계산하여 적용해야한다

서브넷 마스크

컴퓨터 네트워크 설정에 아래와 같은 내용을 본적 있음
IP 192.168.0.0
Subnet Mask 255.255.255.0
255는 > 1111 1111(8) -> 255(8).255(8).255(8).0(0) -> 모두 더하면 24
위는 192.168.0.0/24, 192.168.0.0 ~ 192.168.0.254 를 의미한다

Flow logs

서브넷을 통해 들어오는 트래픽에 대한 로그 관리

Route Tables

트래픽이 VPC를 통하여 경로를 선택하도록 도움

인터넷 게이트웨이

VPC와 연결되며 VPC > 서브넷에 생성된 EC2인스턴스에 인터넷 액세스 제공
인터넷이 적용되기 위한 요소와 원리는 아래와 같음

  • Region
  • VPC
  • Internet Gatway
  • Router
  • Public Subnet
  • Private Subnet

Region 영역에 VPC가 있으며
VPC는 Internet Gatway와 연결되어 있음
VPC 영역에 Public, Private Subnet 이 있고
Subnet 영역에 생성된 EC2인스턴스가 생성됨
EC2인스턴스는 라우터에 연결하고 라우터는 인터넷 게이트웨이에 연결
인터넷 게이트웨이는 인터넷과 연결되어 트래픽을 주고 받을 수 있음

Bastion Hosts

Private Subnet에 있는 인스턴스에 접근하는 방법으로
Public Subnet에 있으며 인스턴스의 이름에 ''을 명시
User는 'BastionHost' 이름의 인스턴스에 접근, 해당 인스턴스는
Private Subnet에 있는 인스턴스와 연결이 가능하다
같은 VPC 내에서만 연결 가능

(Public)Bastion Host의 보안 그룹은 반드시 인터넷 액세스를 허용하고
보안 그룹을 최대한 제한하여 특정 IP만 액세스가 가능하도록 설정 필요
노출 범위가 높아질수록 해커의 공격 대상이 될 수 있음

(Private)EC2 인스턴스 보안 그룹은 반드시 SSH(22번 포트) 액세스를 허용
이는 Bastion Host의 Private IP 또는 보안 그룹이 됨을 의미

NAT 인스턴스

Network Address Translation 네트워크 주소 변환
EIP(탄력적IP) 할당 필요
인스턴스에서 Source / Destination checking Stop 필수 체크
NAT 인스턴스 자체가 소스, 목적지가 아니므로 체크하여 데이터 송수신이 가능해야함
사설 서브넷 EC2 인스턴스가 인터넷에 연결되도록 허용
NAT 인스턴스는 공용 서브넷에서 실행되어 공용 및 사설 서브넷을 연결

사설 EC2 인스턴스는 라우트 테이블을 설정하여 (public)NAT 인스턴스에 연결하여
NAT 인스턴스를 통해 외부 서버(인터넷 서버)에 요청 가능
반대로 외부 서버의 응답은 NAT 인스턴스에서 대신 받고
다시 받은 응답을 사설 EC2 인스턴스로 응답하여 사설망에서 인터넷 사용이 가능해짐

private subnet 인스턴스는 특정 서버로 바로 요청하는듯 하지만 NAT 인스턴스를
거치며 특정 서버는 NAT 인스턴스로 응답하는 것 같지만 결과적으로 사설 서브넷의
인스턴스가 응답을 받게 됨

NAT 인스턴스 권장하지 않은 이유

AMI를 제공하였지만 지원 종료하였으며 서비스가 없어질 예정
NAT Gateway 사용을 권장
가용성이 높지 않아 여러 가용 영역에 ASG 생성 필요하며
보안 그룹 인바운드에서 사설 서브넷의 트래픽을 허용해야함

NAT Gateway

관리형 NAT 인스턴스로 높은 대역폭, 고가용성, 관리가 필요 없음
사용량 & 대역폭에 따라 지불하는 구조
특정 AZ에 생성하며 탄력적 IP 설정 필요
같은 서브넷의 인스턴스의 액세스는 지원하지 않으며
다른 서브넷에 생성되어 있는 인스턴스가 액세스를 시도하는 경우에만 적용 가능
인터넷 게이트웨이가 있어야만 NAT 게이트웨이 적용 가능하고
대역폭은 초당 5Gbps -> 45Gpbs 까지 확장 가능
보안그룹 설정 필요 없음
Bastion, NAT 인스턴스와 다르게 인스턴스가 아닌 서브넷에 구성

NAT Gateway를 이용한 Private Subnet 인스턴스의 인터넷 접근

NAT Gateway는 public subnet에 생성되어 router를 통해 인터넷에 접근 가능
private subnet에 생성된 EC2 인스턴스는 NAT Gateway를 통해 인터넷에 접근

NACL

서브넷을 오고가는 트래픽을 제어하는 방화벽과 비슷
하나의 서브넷에 하나의 NACL이 있으며 새로운 서브넷에 기본 NACL이 구성
NACL 규칙은 1 ~ 32766 까지 지정할 수 있으며 숫자가 낮을수록 우선순위가 높음
100 번에 ALLOW A 규칙, 200 번에 DENY 똑같은 A 규칙을 넣으면 200번은 무시됨
* 일치하는 규칙이 없으면 모든 요청을 거부
AWS는 100씩 증가하는 번호 규칙을 권장
새로운 NACL은 모든 것을 차단
좋은 NACL 사용법으로 서브넷 수준에서 특정한 IP 주소를 차단하는데 적합

Ephemeral Ports(일시적인, 임시 포트)

연결 수명을 위해서 할당되는 무작위 포트
IANA & Windows 10 기준 49152 ~ 65535 포트 중 임시 포트 생성
Linux Kernels 기준 32768 ~ 60999 포트 중 임시 포트 생성
클라이언트가 서버에 요청을 보낼 때 자신의 서버, 접속 정보, 요청 페이로드 등
전송하는데 자신의 임시 포트도 포함하여 전송
서버에서 응답하려는 경우 요청 서버에 전달하는데 포트가 필요한 경우
임시포트에 연결하여 응답 처리를 완료함

NACL에 서브넷 추가시 NACL 규칙도 업데이트해서 연결 조합 가능 여부 체크

Security Group vs NACLs

  • Security Group
    • 인스턴스 수준에서 작동
    • 허용 규칙만 지원
    • 상태 유지, 규칙과 무관하게 트래픽을 허용
    • 모든 규칙 평가, 트래픽 허용 여부 결정
  • NACL
    • 서브넷 수준에서 작동
    • 허용/거부 규칙 모두 지원
      • 특정 IP 주소를 거부할 수 있음
    • 무상태
      • 인바운드, 아웃바운드 규칙이 매번 평가됨
    • 가장 높은 우선순위가 먼저 평가

VPC Peering

VPC는 자신만의 네트워크로 구성되어 다른 VPC와 연결되어 있지 않음
A라는 VPC와 B라는 VPC를 연결하여 사용하려할 때 필요
주의할 점으로 VPC A, B, C가 A <-> B, B <-> C 와 같이 연결되어 있어도
A와 C는 서로 연결되지않아 사용할 수 없음!

VPC Endpoints

AWS PrivateLink를 통해 public network를 사용하지 않고 private 액세스
중복, 수평 확장 가능하며 인터넷 게이트웨이, NAT 게이트웨이 없이도 사용 가능
문제 발생시 DNS 설정, Route Table 확인으로 문제 해결 가능

  • Interface endpoint
    • ENI(Elastic Network Interface) Provisioning
      • ENI란 Private ip, AWS 엔트리 포인트
    • 보안 그룹 설정 필요
    • 요금 청구는 시간 단위 or 처리 되는 데이터의 GB 단위
    • 다양한 서비스에 적용 가능
  • Gateway endpoint
    • Gateway Provisioning
    • 게이트웨이는 라우팅 테이블의 대상으로 IP, 보안 그룹과 상관 없음
    • 서비스 대상으로 S3, DynamoDB 사용 가능
    • 무료

VPC Flow log

인터페이스로 향하는 IP의 트래픽 정보 확인
VPC, Subnet, ENI 3가지 로그로 구성
데이터의 흐름 로그를 S3, CloudWatch로 보낼 수 있음
관리형 인터페이스 서비스의 흐름 포착 가능
트러블 슈팅에 적용

Site to Site VPN

VPC에 VGW(GW: Gateway) 생성
VGW란 Virture Private Gatwway로 AWS에 있는 VPN 집선기(허브 같은 장비)
VGW 생성시 VPC에 자동 연결

CGW(Customer Gateway)
고객쪽에서 Site to Site로 연결하기 위한 게이트웨이

Public IP CGW는 VGW와 직접 연결하여 사용
Private CGW는 고객 측 NAT G(public ip)가 세팅되어 있을 것이며 NAT를 통해 연결

위와 같은 연결 상태를 가정하고 온프레미스(고객) -> AWS EC2 인스턴스의 상태확인 필요시
보안 그룹 인바운드 ICMP 프로토콜 활성화를 확인 필요 미활성화시 연결 불가

CloudHub

여러 VPN 연결을 통해 모든 사이트간 안전한 의사소통을 지원
VPN만 사용하여 서로 다른 지역 사이 기본, 보조 네트워크 연결에 사용
하나의 VGW에 여러개의 CGW를 연결하면 결국 여러 CGW도 서로 연결될 수 있음을 의미

사용 방법

1.AWS VPC > VPN - Customer Gateways 생성, (고객측 공공 IP 연결 필요)
2.AWS VPC > VPN - Virture Private Gateways 생성
3.AWS VPC > VPN - Site to Site 1, 2번에서 생성한 게이트웨이 연결

Direct Connect & Direct Connect Gateway

Direct Connect DX라고 부르기도 함
공공 네트워크를 사용하지 않고 데이터를 주고 받는 작업을 수행할 수 있음
원격 네트워크 VPC로의 전용 프라이빗 연결 제공
Direct Connect 사용은 전용 연결 생성, AWS Direct Connnect Location 사용

  • Use Cases
    • 공공 네트워크가 아닌 사설 네트워크 장점과 연관
      • 큰 데이터의 처리시 속도 빠름
      • 비용 절감
      • 연결 상태 유지
      • 실시간 데이터 피드 사용에 유용

Direct Connect & Site to Site

On-premiss 서버와 AWS를 Direct Connect를 이용하여 연결하려는 경우
일반적으로 하나의 DC를 생성하여 연결할 수 있지만 문제가 발생할 경우를 대비
Back Up 커넥션을 두어 기본 연결에 대해 문제가 발생하여 네트워크 연결에
실패하는 경우 Back Up 커넥션이 대신 수행하여 연결에 대해 지속할 수 있다

Transit Gateway(환승 게이트웨이)

여러개의 Amazon VPC, Customer Gateway를 연결하기 위해서는 수 많은
VPC Connection, VPC Peering Connection, Direct Connect Gateway가
복잡하게 얽히고 섥혀 연결되어야 하는데 이 문제를 해결

Gateway, VPC를 Transit Gateway에 연결하면 전이적으로 서로 연결된다
region 리소스로 region 간에 작동
계정간 공유가 필요할 때 Resource Access Manager 사용하여 공유
regions 간에 Transit Gateway 피어링 가능
Transit Gateway 내에 라우팅 테이블을 생성하여 통신 상대를 정의

ECMP를 이용한 Transit Gateway 사용 사례

Equal-cost multi-path routing
site to site(AWS to Customer) VPN 연결 대역폭을 늘리는 방법
여러 최적 경로를 통해 패킷을 전달하는 라우팅 전략

VPN to VPGateway

VPC 한 개에 하나의 연결이 생성, 하나의 연결은 1.25Gbps 지원
VPN 연결은 총 2개의 터널로 구성

VPN to Transit gateway

VPC를 여러개 가진 Transit gateway는 한 개의 연결로 모든 VPC에 지원
ECMP로 인해 최대 처리량 2.5Gbps를 가지며 더 추가 가능
1 = 2.5Gpbs, 2 = 5.0Gbps ...
성능 최적화 비용으로 1GB마다 요금이 청구

Direct Connect 여러 계정 공유

profile
엔지니어

0개의 댓글