Post

GENEVE AWS VPC 환경 구성

AWS GWLB 테스트 환경 구성 방법

구성도

  • WEB-VPC : 웹서비스를 위한 가상 네트워크 그룹(virtual private clould)
    • web-vpc-ingress-rtb : WEB-VPC 라우팅 테이블
    • subnet-gwlb-01 : GWLBe-01 이 배치될 서브넷
      • subnet-gwlb-01-rtb : subnet-gwlb-01 의 라우팅 테이블
      • GWLBe-01 : GWLB의 endpoint. 여기로 오는 트래픽은 GWLB-01로 포워딩 됨
    • subnet-server-01
      • subnet-server-01-rtb : subnet-server-01 의 라우팅 테이블
      • SERVER-01 : 웹서버
    • WAF-VPC : WAF 서비스를 위한 가상 네트워크 그룹
      • waf-vpc-ingress-rtb : WAF-VPC 라우팅 테이블
      • subnet-waf-01-rtb :GWLB-01과 WAF-01 이 배치될 서브넷
        • subnet-waf-01-rtb : subnet-waf-01 라우팅 테이블
        • GWLB-01 : 게이트웨이 로드 밸런서
          • GWLBe-01로부터 수신된 트래픽이 대상 그룹으로 포워딩 됨
          • 대상그룹, 대상 장비 여러개 등록 가능
        • WAF-01 : AIWAF

동작

  • GWLB 적용 시 브라우저 <-> GWLBe <-> 웹서버로 트레픽 흐름이 변경된다.
    • 기존 흐름은 브라우저 <-> 웹서버이며 라우팅 테이블 설정 변경으로 흐름을 바꾼다
  • 이 때 GWLBe는 송수신 되는 트래픽을 GWLB-01 로 포워딩 하고
  • GWLB-01 해당 트래픽을 GENEVE 프로토콜(UDP 6081)로 인캡슐레이션 한 뒤 등록된 대상 그룹으로 포워딩 한다.
  • GENEVE 프로토콜 패킷을 수신한 WAF-01 은 GENEVE 프로토콜을 디캡슐레이션 하여 인스펙션 한 후 다시 GWLB-01 로 포워딩 한다.(GENEVE로 인캡슐레이션 후 GWLB-01 로 포워딩)

Note WAF 입장에서는 인라인(SYN TP) 로 구성된 것과 동일하게 동작한다.

환경 구성

Note 이전 작업이 진행되어야 다음 작업이 가능한 작업이 있다. 순차적으로 작업 필요(e.g. VPC 생성 이 후 VPC 서브넷 등록 가능함) 관련 설정은 AWS EC2, VPC 두 곳에서 진행된다.(설정 가능한 항목이 다름)

EC2 : https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Instances: VPC : https://ap-northeast-2.console.aws.amazon.com/vpcconsole/home?region=ap-northeast-2#vpcs:

VPC 생성

AWS 콘솔 접속 이후 VPC 검색

Virtual Private Cloud -> VPC -> VPC 생성

Note 위 내용을 참고하여 ‘WAF-VPC’ 를 생성한다. (이름 WEB-VPC, IPv4 CIDR 192.168.0.0/24)

생성된 VPC 에서 우클릭 -> VPC 설정 편집

Note 위 내용을 참고하여 ‘WAF-VPC’ 의 설정도 동일하게 변경한다.

서브넷 생성

Virtual Private Cloud -> 서브넷 -> 서브넷 생성

WEB-VPC 서브넷

서브넷 생성 화면에서 ‘새 서브넷 추가’ 버튼으로 1개 이상의 서브넷 생성이 가능하다.

WAF-VPC 서브넷

서브넷 설정 편집

Note 위를 참고하여 ‘subnet-GWLB-01’, ‘subnet-SERVER-01’, ‘subnet-WAF-01’ 의 설정을 동일하게 변경한다

인터넷 게이트웨이 생성

Virtual Private Cloud -> 인터넷 게이트웨이 -> 인터넷 게이트웨 생성

waf-vpc-igw 도 동일하게 생성

라우팅 테이블 생성

WEB-VPC 라우팅 테이블 생성

‘subnet-gwlb-01-rtb’, ‘web-vpc-ingress-rtb’ 도 동일하게 생성

web-vpc-ingress-rtb

WEB-VPC 에 인터넷 게이트웨이를 엣지로 연결한다

엣지 연결 이후 “서브넷 연결 편집” 버튼을 눌러 생성한 subnet-SERVER-01 과 연결을 진행한다.

이후 생성되는 GWLB, WAF 또한 라우팅 설정 후 서브넷 연결을 진행해야 한다.

subnet-GWLB-01-rtb

GWLBe 가 생성되는 서브넷에는 디폴트 라우팅을 인터넷 게이트웨이로 설정한다.

**WARNING ** 왜 설정해야하는지 명확한 이유는 잘 모르겠음. 설정하지 않을 경우 WAF에서 응답을 GWLB로 보내고 나서 동작을 하지 않음 https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html#configure-routing 명시됨

waf-vpc-ingress-rtb

WAF-VPC 기본 라우팅 테이블에 인터넷 게이트웨이를 연결한다

WEB-VPC 는 엣지로 연결하고 WAF-VPC는 디폴트 라우팅으로 인터넷 게이트웨이를 설정하는데 어떤 차이점이 있는지 잘 모르겠다. 자동으로 생성 시 인터넷 게이트웨이는 디폴트 라우팅으로 설정한다. (시간 될 때 확인 필요)

SERVER-01 인스턴스 생성

인스턴스 -> 인스턴스 -> 인스턴스 시작

인스턴스 OS는 Nginx 또는 기타 웹 서버를 띄울 수 있는 환경이면 OS는 상관 없다.

네트워크 설정에서 ‘편집’을 눌러야 VPC 및 기타 정보를 변경할 수 있다 테스트 환경 구성이기 때문에 임시로 전체 트레픽을 허용한다

웹서버 설치

인스턴스 실행 이 후 ssh 접속하여 nginx 설치 진행한다
설치 과정은 생략한다.

WAF-01 인스턴스 생성

인스턴스 -> 인스턴스 -> 인스턴스 시작

GWLB-01 대상그룹 생성

로드 밸런싱 -> 대상 그룹 -> 대상 그룹 생성

GWLB-01 생성

로드 밸런싱 -> 로드 밸런서 -> 로드 밸런서 생성

GWLB 엔드포인트 서비스 생성

Virtual Private Cloud -> 엔드포인트 서비스 -> 엔드포인트 서비스 생성

GWLB 엔드포인트 생성

Virtual Private Cloud -> 엔드포인트 -> 엔드포인트 생성

GWLB 엔드포인트 서비스 이름을 참고하여 서비스 이름을 입력한다

라우팅 테이블 수정

Virtual Private Cloud -> 라우팅 테이블

라우팅 테이블 수정을 통해 SERVER-01 로 패킷이 전달되는 흐름을 WEB-VPC <-> GWLBe-01 <-> SERVER-01 로 변경한다.

web-vpc-ingress-rtb

subnet-server-01-rtb

테스트 방법 (tcpdump)

jumbo_frame 설정 필수

1
2
# GENEVE 프로토콜은 6081이다.
tcpdump -i <interface> udp port 6081 -nn -vv
This post is licensed under CC BY 4.0 by the author.