AWS - VPC, VPC peering, VPC 엔드포인트

jsbak·2023년 4월 25일
0

Cloud

목록 보기
33/59

Amazon VPC

사용자가 정의한 가상 네트워크로 AWS 리소스를 시작 가능하며 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사하다.

  • Virtual Private Colud(VPC)

    • 논리적으로 격리된 가상 네트워크
    • 사용자의 AWS 계정 전용 가상 네트워크, 전체 네트워크 주소 범위는 172.31.0.0/16 (리전 단위)
  • Subnet:

    • 각각의 AZ에 1개씩 네트워크 주소가 할당된 VPC의 IP 주소 범위
    • 172.31.0.0/20, 172.31.16.0/20, 172.31.32.0/20 (AZ 단위)
  • Routing Table

    • 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환 시키는 목적으로 사용되는 하나의 정보이자 이정표
    • 네트워크 트래픽을 전달할 위치를 결정하는데 사용되는 라우팅이라는 규칙 집합
    • 172.31.0.0/16 (서브넷 단위)
  • Internet Gateway

    • VPC의 리소스와 인터넷 간의 통신을 활성화하기 위해 VPC에 연결하는 게이트웨이
    • 라우팅 테이블에 할당 (VPC 단위)
  • Network ACL

    • Inbound(내부로의 통신), OutBound(외부로의 통신)를 기반으로 모든 통신을 허가 (서브넷 단위)
    • Stateless
  • Security Group

    • Inbound(내부로의 통신)는 모든 통신을 거부
    • Outbound(외부로의 통신)는 모든 통신을 허가
    • 인스턴스 단위
    • Stateful
      • 보안 그룹의 Inbound 규칙을 통과해서 들어온 트래픽은 은 기억하고 Outbound 에 상관없이 응답한다.
      • 보안 그룹을 이용해서 나간 트래픽은 Inbound 규칙과 상관 없이 돌아온다.
  • 기본 VPC

  • 정의 VPC 예시

VPC 대시보드

  • VPC 검색 또는 서비스 탭 - 네트워킹 및 콘텐츠 전송 - VPC 클릭

  • VPC 대시보드

사용자 정의 VPC 생성

사용자 정의 VPC 생성 순서

1) VPC 네트워크를 생성합니다.
2) Subnet을생성합니다,
3) Internet Gateway를 생성합니 다
4) Routing Table을 설정합니다.
5) Network ACL을 설정합니다.
6) Security Group을 설정합니다.

VPC 생성

  • VPC 생성 클릭
  • VPC 이름 및 CIDR 지정


  • 생성 결과

VPC 설정 편집

  • 작업 - VPC 설정 편집 클릭
  • DNS 호스트 이름 활성화 체크 후 저장

Subnet 생성

'서브넷 추가'를 눌러 다음 서브넷들을 추가한다. (이름에 맞는 가용영역을 고른다.)

  • my-pub-2a: 10.39.0.0/20
  • my-pub-2b: 10.39.16.0/20
  • my-pub-2c: 10.39.32.0/20
  • my-pub-2d: 10.39.48.0/20
  • my-pvt-2a: 10.39.64.0/20
  • my-pvt-2b: 10.39.80.0/20
  • my-pvt-2c: 10.39.96.0/20
  • my-pvt-2d: 10.39.112.0/20
  • 서브넷 생성 클릭
  • VPC 선택
  • 서브넷 설정 후 생성 클릭 - 서브넷 추가로 위 나열된 8개의 서브넷 등록

  • 생성 결과

Public 서브넷 주소 자동 할당 활성화 설정

  • '퍼블릭 IPv4 주소 자동 할당 활성화'를 통해크게 신경 안써도 무료로 주는 변동 가능한 공인 아이프를 받는다.
  • public 서브넷 우클릭 - 서브넷 설정 편집
  • 퍼블릭 IPv4 주소 자동 할당 활성화 체크 후 저장

인터넷 게이트웨어 생성

  • 인터넷 게이트웨이 - 인터넷 게이트웨이 생성 클릭
  • 인터넷 게이트웨이 이름 지정 후 생성
  • 생성 결과

인터넷 게이트웨이 VPC 연결

  • 인터넷 게이트웨이 세부 정보 - 작업 - VPC에 연결 클릭
  • VPC 선택 후 생성 클릭
  • VPC 연결 결과

라우팅 테이블 편집

  • 라우팅 테이블 - 라우팅 테이블 선택 및 이름 변경
  • 라우팅 테이블 선택 - 우클릭 - 라우팅 테이블 편집 클릭
  • 라우팅 테이블에 IGW 라우팅 정보 추가 - 변경 사항 저장 클릭
    • 외부 트래픽에 대해 인터넷 게이트웨이로 연결 되도록 라우팅
  • 추가 변경 사항 결과 확인

라우팅 테이블 - 서브넷 연결 편집

  • 라우팅 테이블 세부 정보 - 작업 🔽 - 서브넷 연결 편집 클릭
  • 퍼블릭 서브넷 선택 - 연결 저장 클릭
  • 명시적 서브넷 설정 결과 확인

프라이빗 라우팅 테이블 생성

  • VPC 메뉴 - 라우팅 테이블 - 라우팅 테이블 생성 클릭
  • 라우팅 테이블 이름 및 VPC 선택 후 라우팅 테이블 생성 클릭
  • 라우팅 테이블 생성 결과

프라이빗 서브넷 연결 설정

  • 서브넷 연결 편집
  • 프라이빗 서브넷 선택
  • 연결 편집 설정 결과
  • 라우팅 테이블들

EC2 생성

  • 서울 리전





#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
echo "<h1>seoul</h1>" > /var/www/html/index.html
  • 도쿄 리전 EC2 생성

    • 이름 : tokyo
    • Ubuntu Server 20.04 LTS
    • t2.micro
    • keypair: tokyo-key
    • default VPC, ap-northeast-1a
    • SG: tokyo-sg-web
      • SSH, HTTP, HTTPS, ICMP (0.0.0.0/0)
    • 사용자 정의 데이터
    #!/bin/bash
    apt update
    apt install -y apache2
    echo "<h1>tokyo</h1>" > /var/www/html/index.html
  • 서울 리전과 도쿄 리전간의 EC2 끼리 통신은 되지 않는다.

    • VPC Peering 을 통해서 가능하다!

VPC Peering

VPC Peering이란?
VPC 피어링 연결은 프라이빗 IPv4 주소 또는 IPv6 주소를 사용하여 두 VPC 간에 트래픽을 라우팅할 수 있도록 하기 위한 두 VPC 사이의 네트워킹 연결이다.

  • 동일한 네트워크에 속하는 경우와 같이 VPC와 인스턴스가 서로 통신 가능 ⭕
    • 서로의 프라이빗 끼리 통신 가능 ⭕
  • 사용자의 자체 VPC 또는 다른 AWS 계정의 VPC와 VPC 피어링 연결을 생성 가능 ⭕
    • ex: 거래처와의 연결
  • VPC는 다른 리전에 존재 가능 ⭕
    • 리전 간 VPC 피어링 연결
  • AWS는 VPC의 기존 인프라를 사용하여 VPC 피어링 연결을 생성
    • 이는 게이트웨이도, VPN 연결도 아니며 물리적 하드웨어 각각에 의존 ❌

피어링 연결 생성

  • 동일한 계정 및 상이한 리전의 VPC로 생성
  • VPC 피어링을 통해 두 리전 끼리 퍼블릭이 아닌 프라이빗 주소로도 통신이 되도록 설정
  • 서울 리전에서 피어링 연결 요청을 수행
  • VPC 탐색메뉴 - Virtual Private Cloud - 피어링 연결 - 피어링 연결 생성 클릭
  • 이름 설정 및 피어링 요청자 (VPC 선택)
  • 리전 선택 및 VPC ID(수락자) - 해당 VPC
    • 여기서는 수락자 VPC ID는 도쿄 리전의 VPC의 ID 복사, 적용
  • VPC 피어링 생성 결과

동일 계정 + 다른 리전 VPC 피어링 순서

  • 동일한 계정 및 상이한 리전의 VPC로 생성
    동일한 계정 및 상이한 리전의 VPC와 VPC 피어링 연결을 생성하는 방법
    1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.
    2. 탐색 창에서 Peering Connections(피어링 연결)를 선택합니다.
    3. Create peering connection(피어링 연결 생성)을 선택합니다.
    4. 다음 정보를 구성하고 구성을 완료하면 피어링 연결 생성을 선택합니다.
      • 이름: 필요에 따라 VPC 피어링 연결의 이름을 지정할 수 있습니다. 이렇게 하면 Name 키와 지정한 값으로 태그가 생성됩니다.
      • VPC ID(요청자): 계정에서 VPC 피어링 연결을 요청할 요청자 VPC를 선택합니다.
      • 계정: 내 계정을 선택합니다.
      • 리전: 다른 리전을 선택한 다음 수락자 VPC의 리전을 선택합니다.
      • VPC ID(수락자): 수락자 VPC를 선택합니다.
    5. 리전 선택기에서 수락자 VPC의 리전을 선택합니다.
    6. 탐색 창에서 Peering Connections(피어링 연결)를 선택합니다. 생성한 VPC 피어링 연결을 선택한 다음 작업, 요청 수락을 선택합니다.
    7. 확인 메시지가 나타나면 요청 수락을 선택합니다.
    8. 피어링 연결을 통해 트래픽을 보내고 받을 수 있도록 VPC 라우팅 테이블에 경로를 추가하려면 지금 내 라우팅 테이블 수정을 선택합니다.

피어링 연결 수락

  • 도쿄 리전에서 피어링 연결을 수락
  • 피어링 요청 수락
  • 피어링 요청 활성화 결과

동일 계정 + 같은 리전 피어링 연결 수락

  • 같은 리전의 VPC 피어링 생성후 "Pending Acceptance" 상태 일 때, 해당 피어링 => Actions → Accept request 버튼을 클릭하여 연결 요청을 수락하면 피어링 연결이 완료

피어링을 위한 라우팅 테이블 수정

  • 아직 VPC가 연결이 됐을 뿐, 서로 다른 네트워크 주소인데 라우팅 테이블 세팅이 안됐으므로, 아직 트래픽 송수신이 ❌
    • 그러므로 라우팅 테이블을 설정

됴코 리전 라우팅 테이블 편집

  • 라우팅 테이블 편집
    • PCX(피어링 연결) 규칙 추가
  • 도쿄 리전 라우팅 테이블 편집 결과

서울 리전 라우팅 테이블 편집

  • 트래픽은 양방향이므로, 반대쪽인 서울에서도 라우팅 테이블 정보 추가 필요 ⭕
  • 라우팅 테이블 편집
    • 도쿄 관련 PCX(피어링 연결 규칙 추가)
  • 서울 리전 라우팅 테이블 편집 결과

피어링 결과 확인

  • mobaXterm 확인
    • 서울

    • 도쿄

AWS PrivateLink

서비스 액세스

  • 기본 서비스 엔드포인트는 퍼블릭 인터페이스이므로 트래픽이 VPC에서 AWS 서비스로 이동할 수 있도록 VPC에 인터넷 게이트웨이 추가가 필요
  • 네트워크 보안 요구 사항에 맞지 않는 경우 AWS PrivateLink를 사용하여 VPC를 AWS 서비스에 연결하면 인터넷 게이트웨이를 사용하지 않고 서비스를 VPC에 있는 것처럼 이용 가능

AWS PrivateLink를 통한 연결

  • 인터페이스 VPC 엔드포인트를 생성
    • 네트워크 인터페이스를 사용하여 VPC의 서브넷과 AWS 서비스 간의 연결을 설정
  • DNS를 사용하여 엔드포인트 네트워크 인터페이스의 프라이빗 IP 주소로 확인된 후 VPC 엔드포인트와 AWS 서비스 간 연결을 통해 AWS 서비스로 전송

VPC 엔드포인드 생성

  • VPC endpoint 를 통해 VPC 내의 자원들은 인터넷 게이트웨이, NAT 게이트웨이 등의 영향 없이 Amazon 내부 리소스에 Access 할 수 있습니다.
    • 일반적으로 Amazon S3(Simple Storage Service) 는 Public endpoint 를 사용하기 때문에 EC2(Elastic Compute Cloud) 에서 데이터를 보내게 되면 Public Network 로 트래픽을 송신하게 됩니다.
      • 네트워크 지연시간과 AWS 트래픽 비용이 증가
      • VPC endpoint 를 이용하여 목적지가 Amazon S3인 트래픽을 아마존 내부 네트워크로 라우팅하여 네트워크 지연시간을 낮추고, 네트워크 트래픽 비용을 낮추는 것

S3와 통신을 위한 VPC 엔드포인트 생성

  • "VPC" → "엔드포인트" → "엔드포인트 생성"
  • VPC endpoint 생성 관련 설정
    • 서비스 범주 : AWS Service
    • 서비스 : com.amazonaws.ap-northeast-2.s3 (유형: Gateway)
    • VPC : hands-on-vpc VPC 선택
    • 라우팅 테이블 구성 : VPC 에 속한 라우팅 테이블 선택




      Amazon S3 로 송수신되는 트래픽의 라우팅을 Amazon 내부 네트워크로 라우팅을 변경하기 위한 설정 입니다. 만약 Amazon S3 로 데이터를 전송하고 있다면 라우팅 테이블을 변경하는 즉시 연결이 끊어지게 되므로 이것에 대한 경고 메시지를 보여줍니다.
  • 생성 결과

리소스 제거

VPC 피어링 제거

  • VPC 피어링은 어느 한쪽만 지우면 제거됨. (서울에서 수행했음.)
  • VPC - VPC 피어링 - 피어링 선택 - 작업 - 피어링 연결 삭제 클릭
  • 관련된 라우팅 테이블 정보도 제거
  • 제거 결과

라우팅 테이블 제거

  • 도쿄 리전 같은 경우는 제거해줘야한다. (서울리전에서 VPC 피어링 제거했기 때문)

VPC 제거 시

  • VPC와 관련되지 않은 다른 리소스 제거
  • VPC와 관련된 리소스 제거(NATGW)
  • VPC 제거
profile
끄적끄적 쓰는곳

0개의 댓글