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 차단(미응답)
감사합니다.