Gateway Load Balancer


Gateway Load Balancer를 사용하면 가상 어플라이언스를 쉽게 배포, 확장 및 관리할 수 있습니다. 여러 가상 어플라이언스에 트래픽을 분산하는 동시에 수요에 따라 확장하거나 축소할 수 있는 하나의 게이트웨이를 제공합니다. 

이렇게 하면 네트워크의 잠재적인 실패 지점이 제거되고 가용성이 높아집니다.


AWS Marketplace에서 직접 타사 공급업체의 가상 어플라이언스를 찾고, 테스트하고, 구입할 수 있습니다. 이 통합된 경험은 배포 프로세스를 간소화하므로 현재와 동일한 공급업체와 협력하거나 새로운 시도를 하고 있는지 여부에 관계없이 가상 어플라이언스의 가치를 보다 빠르게 확인할 수 있습니다.


테스트 구성도


Inbound Traffic

Outbound Traffic

- 참고 : test-vpc2에 있는 Public subnet 은 Fortigate 접속 용도로 사용하였습니다. (Fortigate VDOM(VirtualDomain) 기능을 통해 Fortigate를 가상으로 분리하여 사용 - GWLB 와 상관 없는 기능)



통신흐름

- 오른쪽 test-vpc2 가 방화벽(FW)이 위치한 VPC

- 왼쪽 test-vpc 가 웹 서비스 중인 인스턴스가 위치한 VPC 입니다.

- 외부에서 인스턴스로 트래픽 인입시 IGW → GWLBE(Gateway Load Balancing Endpoint) → GWLB → FW → GWLB → GWLBE → EC2 순으로 트래픽이 흐르게 됩니다. 



1. 리소스(Resource) 생성


Fortinet Instance 생성 ( EC2 -> 인스턴스 -> 인스턴스 시작 -> AWS Marketplace -> Fortinet FortiGate Next-Generation Firewall)


- GENEVE 통신을 위한 Fortinet 보안그룹 6081Port(GENEVE) 오픈


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

설정 (상황에 맞춰 설정)

- 대상유형 : IP 주소

- 프로토콜 : GENEVE(6081)

- VPC : test-vpc2

- 상태검사 : HTTPS


대상등록

- 네트워크 : test-vpc2

- IP주소 : Fortinet Instance IP


GWLB 생성 (EC2 -> 로드밸런싱 -> 로드밸런서)



로드밸런서 이름 : yongdongan-gwlb

IP주소 유형 : IPv4

VPC : test-vpc2

Subnet : sec-sub-pri

IP리스너 라우팅 : 위에서 생성한 대상그룹 지정(yongdongangwlb-test-tg)


엔드포인트 서비스 생성(VPC -> 엔드포인트서비스)


이름 : yongdongan-gwlb-ep

로드밸런서 유형 : 게이트웨이

사용가능한 로드밸런서 : 위에서 생성한 GWLB 선택(yongdongan-gwlb)

* 참고 : GWLBE 와 연동을 위해 엔드포인트 서비스이름을 복사합니다.


엔드포인트 생성(VPC - 엔드포인트)



서비스범주 : 이름별 서비스 찾기

서비스 이름 : 위에서 복사한 엔드포인트 서비스 이름을 붙여넣기 한다.

VPC - 엔드포인트가 위치할 VPC Subnet 지정


* 엔드포인트 생성 후 (엔드포인트 -> 엔드포인트 연결 -> 엔드포인트 연결 요청 수락)


2. 라우팅 설정 (VPC -> 가상 프라이빗 클라우드 -> 라우팅테이블)


IGW GWLBE (엣지 연결 사용)

라우팅

- inboud 통신이 EC2 Instance가 존재하는 서브넷을 대상으로 하는 통신이 들어왔을 경우 GWLBE로 라우팅 설정을 합니다.


test-vpc-ep-sub

- GWLBE가 존재하는 서브넷으로 outbound 통신을 위해 igw를 Default Routing의 대상으로 지정합니다.


test-vpc2-private-sub

- Fortigate로 통신을 보내도록 Fortigate 인터페이스를 default routing의 대상으로 지정합니다.


test-vpc2-public-sub

- 방화벽(Forti) 관리용으로 생성한 서브넷으로 igw를 대상으로 지정합니다.


EC2 Private Subnet Routing 

- 엔드포인트로 통신이 되도록 Default Routing의 대상을 GWLBE로 지정합니다.



3. Fortigete(FW) 설정


fortigate geneve 인터페이스 설정

edit "awsgeneve" - geneve 인터페이스네임 지정

set interface "port2" - geneve 인터페이스로 사용할 포트 지정

set remote-ip - GWLB 아이피 지정


Static Rouing 설정

- Default Routing 을 geneve 설정으로 생성된 awsgeneve 인터페이스로 잡아준다.


Policy 설정

- Port2 번을 통해 Geneve 통신을 하지만 실질적인 통신은 geneve 인터페이스를 사용하므로 srcintf, dstintf 를 geneve 인터페이스인 awsgeneve로 잡아서 Policy 설정을 합니다.


4. 결과 확인


포트별 트래픽 확인


- Port 2 GENEVE(UDP 6081 포트로 통신)


- awsgeneve (실 트래픽으로 통신)


정책별 테스트


- HTTP(80) 허용시


Fortigate Log


EC2 인스턴스 TCP Dump


- HTTP(80) 차단, ICMP 허용시


Fortigate(FW) Log 확인


EC2 인스턴스 TCP Dump(ICMP)

TCPDUMP(Port 80) - inboud traffic 없음


Fortigate TCP DUMP

- ICMP 허용(응답)

- HTTP 차단(미응답)


감사합니다.