[AWS] Transit Gateway (1)

1. 전송 게이트웨이 (Transit Gateway) 란?

1) Transit Gateway vs VPC peering

전송 게이트웨이는 VPC를 포함한 다수의 네트워크를 연결하기 위해 사용된다. VPC Peering을 사용해 다수의 네트워크를 연결할 수도 있지만, 이를 사용할 경우 모든 네트워크에 대해 서로 VPC Peering 작업을 해주어야 한다. 하지만 전송 게이트웨이를 사용한다면 각 네트워크를 전송 게이트웨이에 연결하는 것 만으로 모든 네트워크끼리 통신이 가능하다.

전송 게이트웨이가 더 편리하긴 하지만 비용이 훨씬 비싸다.

2) Transit Gateway Attachment

전송 게이트웨이는 3가지 연결 방식을 지원한다.

  1. VPC 연결

    전송 게이트웨이와 동일 리전 내 VPC를 연결한다. 타 계정에서 생성한 VPC도 연결 가능하다

  2. VPN 연결

    전송 게이트웨이와 VPN을 연결한다.

  3. Peering

    서로 다른 리전의 전송 게이트웨이끼리 연결한다.

VPC를 전송 게이트웨이에 연결하는 경우 가용영역 당 하나의 서브넷을 지정하면 해당 가용영역에 있는 모든 서브넷의 리소스에 트래픽이 도달할 수 있다. 연결을 위해 별도의 작은 CIDR 범위를 가진 연동 목적의 서브넷을 생성하면 NACL을 더 편하게 관리할 수 있다.

2. TGW VPC 연결 구성

구성할 인프라는 다음과 같다.

image

VPC0의 포워드 웹 프록시 서버를 제외한 모든 서브넷은 프라이빗이다. 외부와의 통신을 위해서는 VPC0을 거쳐가야 한다.

1) 기본 전송 게이트웨이 환경

  1. 전송 게이트웨이를 제외한 인프라를 구성한다.

    웹 프록시 서버는 image ami-0bd7691bf6470fe9c 로 설치하고 다음과 같이 설정한다.

    #! /bin/bash
    hostnamectl set-hostname VPC0-Web-Proxy
    yum install -y tcpdump squid
       
    cat <<EOT> /etc/squid/squid.conf
    http_port 3128
    acl all src 0.0.0.0/0
    http_access allow all
    http_access deny all
    EOT
    systemctl start squid && systemctl enable squid
       
    cat <<EOT> /home/ec2-user/list.txt
    10.0.1.10
    10.10.1.10
    10.10.2.10
    10.20.1.10
    10.20.2.10
    EOT
       
    yum install httpd -y
    systemctl start httpd && systemctl enable httpd
    echo "<h1>TGW Lab - MgMt Server1</h1>" > /var/www/html/index.html
    curl -o /home/ec2-user/pingall.sh https://cloudneta-book.s3.ap-northeast-2.amazonaws.com/chapter6/pingall.sh --silent
    cp /home/ec2-user/pingall.sh /var/www/html/pingall.sh
    cp /home/ec2-user/list.txt /var/www/html/list.txt
    chmod +x /home/ec2-user/pingall.sh
    
  2. 전송 게이트웨이를 생성하고 각 VPC의 서브넷 3, 4 (연동 전용 서브넷)에 연결한다.

    연결이 완료되었다면 전송 게이트웨이 라우팅 테이블이 잘 생성되었는지 확인한다.

  3. 각 VPC의 서브넷 0,1과 연결된 라우팅 테이블에 10.0.0.0/8 로 향하는 트래픽을 전송 게이트웨이로 라우팅하도록 추가한다.

  4. VPC1과 2의 인스턴스에 웹 트래픽이 VPC0의 웹 프록시 서버로 가도록 설정한다.

    $ vim /etc/bashrc
    # 맨 아래 추가
    export http_proxy=http://10.0.1.10:3128
    export https_proxy=https://10.0.1.10:3128
    no_proxy=127.0.0.1,localhost,169.254.169.254,10.0.0.0/8,.internal
    #------------------------------------------------------------------#
    $ source /etc/bashrc
    

2) Blue, Red 라우팅 테이블

트래픽 제어를 위해 Blue, Red 라우팅 테이블을 생성하여 VPC1과 2가 서로 통신하지는 못하게 구성한다.

  1. 기본 전송 게이트웨이 라우팅 테이블에서 VPC1과 2 연결을 삭제한다.

  2. Blue, Red 전송 게이트웨이 라우팅 테이블을 생성한다.
  3. Blue-RT는 VPC0 , 에 전파하고, Red-RT는 VPC 0, 2에 전파한다.

각 전송게이트웨이 라우팅 테이블의 경로를 확인하면 연결한 VPC로 전파되었음을 확인할 수 있다.

이제 VPC1, 2는 웹 프록시 서버로 외부와 웹 트래픽 송수신은 가능하지만, 서로 통신할수는 없다.

3) Black Hole 라우팅

블랙홀 라우팅이란 특정 IP로의 통신을 막는 것이다. VPC0에서 VPC2의 서브넷2로의 통신을 막아본다.

  1. 기본 전송 게이트웨이 라우팅 테이블에서 10.20.2.0/24 로의 블랙홀 정적 경로를 생성한다.

이제 10.20.2.10 으로 ping을 보내면 응답하지 않는 것을 확인할 수 있다.

카테고리:

업데이트:

댓글남기기