Profile picture

[EVE-NG] Fortigate 방화벽 HA 구성 실습

JaehyoJJAng2024년 07월 10일

개요

최근 eve-ng에서 Fortinet 방화벽(Fortigate)을 활용해

Active-Passive 형태의 HA(High Availability) 구성을 완료하였습니다.


HA는 장비 하나가 고장 나더라도 다른 장비가 바로 역할을 넘겨받아 서비스가 끊기지 않도록 보장하는 기술인데요.

이번 글에서는 HA가 제대로 작동하는지 확인하는 방법과,

의도적으로 문제를 일으켜 장애 전환(Failover)이 잘 되는지 테스트한 과정을 자세히 공유하겠습니다.


환경 준비

  • 장비 이미지: Fortigate-FGT-v6-4
  • 모드: Active - Passive

실습 구성도

image

  • DownLink: lan: PORT3
  • Monitor interface: wan1: PORT1
  • HA Interface: ha: PORT2
  • Priority 값은 Active: 150, Passive: 100으로 지정

관리 인터페이스 설정

1. 콘솔 접근

각 방화벽의 콘솔에 접속


2. IP 주소 설정

# PORT 1 Static으로 변경
config system interface
  set mode static
  set ip <IP 지정>
  set allowaccess ssh ping http https
  next
end

config router static
  edit 1
  set dst 0.0.0.0/0
  set gateway <게이트웨이 지정>
  set device port1
  next
end

방화벽 이중화 설정 (GUI)

Active & Passive

1. System -> HA로 이동
image


2. HA 모드를 활성화하고, 모드를 Active-Passive로 선택
image


3. Heartbeat 인터페이스 포트 지정 및 우선순위 설정 (Passive는 Priority 값을 Active보다 낮춰서 주기)
image


방화벽 이중화 설정 (CLI)

Active

config system ha
    set group-name "HA-GROUP"
    set mode a-p
    set password *****
    set session-pickup enable
    set ha-uptime-diff-margin 1
    set override disable
    set priority 150
    set monitor "wan" "lan"

Passive

config system ha
    set group-name "HA-GROUP"
    set mode a-p
    set password *****
    set session-pickup enable
    set ha-uptime-diff-margin 1
    set override disable
    set priority 100
    set monitor "wan" "lan"

HA 협상 로직

HA 협상 로직은 다음 그림을 참고.
![image]

  • 1. override 값이 disable이면 다음과 같은 순위로 Master를 결정함
    • Monitor interface 수가 많은 장비 -> HA Cluster Uptime이 더 큰 장비 -> Device Priority 값이 더 큰 장비 -> S/N 값이 더 큰 장비
  • 2. override 값이 enable이면 다음과 같은 순위로 Master를 결정함
    • Monitor interface 수가 많은 장비 -> Device Priority 값이 더 큰 장비 -> HA Cluster Uptime이 더 큰 장비 -> S/N 값이 더 큰 장비

Failback을 최소화 할 수 있는 조건

  • 가정1. Active가 복구 되고 override 값이 enable일 경우
    • Monitor interface 다음의 우선 순위 값인 Priority 값에 의해 무조건 Failback 발생
  • 가정2. Active가 복구 되고 override 값이 disable일 경우
    • HA Uptime 순위에 따라 ha-uptime-diff-margin <seconds> 값에 의해 이내 복구 시 Failback 발생
    • 값 복구 이후 복구 시에는 Failback 발생하지 않음

Failback을 최소화 할 수 있는 조건은 다음과 같다.

  • override disable
  • ha-uptime-diff-margin 1
    • 1초 이후 복구 되면 failback 발생하지 않음!

Management interface Reservation

HA를 구성하게 되면 Active, Passive 장비의 인터페이스 설정이 동기화 되는데,

이 때 Passive 장비로의 접근은 더 이상 불가능하게 된다.

하지만, Management interface Reservation 설정을 통해 동기화 되는 포트를 제외할 수 있고 IP 설정을 통해 각각의 장비로 접근이 가능하다.
image


HA 구성, 잘 됐는지 확인하기

HA 설정을 마쳤다면 먼저 Primary(주 장비)와 Secondary(보조 장비)가 제대로 연결되고 동기화되었는지 확인해야 한다.

Fortigate에서는 CLI와 GUI를 통해 이를 점검할 수 있는데 한 번 알아보자.


CLI로 확인하기

EVE-NG에서 Fortigate 콘솔에 접속한 뒤 몇 가지 명령어를 입력해보자.


  • get system ha status: 이 명령어로 HA 상태를 한눈에 볼 수 있다. 출력에서 중요한 부분은:
    • Mode: Active-Passive로 설정됐는지.
    • Master/Slave: Primary와 Secondary 장비가 제대로 역할 분담했는지.
    • In Sync: 두 장비 설정이 동기화됐는지.

내가 확인한 출력은 대략 이런 모습이었다.

HA Health Status: OK
Mode: HA Active-Passive
Master: FGVM01XXXXXX (Primary)
Slave: FGVM02XXXXXX (Secondary)

  • diagnose sys ha checksum show: 설정이 동기화됐는지 확인하는 또 다른 방법이다. Primary와 Secondary의 체크섬 값이 같으면 문제없다는 뜻!
  • diagnose sys ha status: Heartbeat 장비 간 통신 채널이 잘 작동하는지 체크하자. Heartbeat 인터페이스 상태가 "up"이면 정상!

GUI로 확인하기

웹 브라우저로 Fortigate 관리 IP에 접속한 뒤 System > HA 메뉴로 들어가면 상태를 시각적으로 볼 수 있다.

Master와 Slave가 명확히 표시되고, 동기화 상태도 확인할 수 있어 편리하다!


추가로 점검할 것들

  • Heartbeat 인터페이스가 EVE-NG 토폴로지에서 제대로 연결됐는지.
  • 두 장비의 펌웨어 버전이 같은지.
  • Primary의 우선순위(priority)가 Secondary보다 높게 설정됐는지.

장애를 만들어 Failover 테스트하기

HA의 핵심은 장애가 생겼을 때 Secondary가 빠르게 Primary 역할을 넘겨받는 거다.

이를 확인하려고 몇 가지 실험을 해봤다. 한번 살펴보자.


테스트 준비

  • 트래픽 생성: EVE-NG에 클라이언트 PC를 추가하고 외부로 ping 8.8.8.8 -t를 실행해 지속적인 트래픽을 만들었습니다.
  • 로그 활성화: Failover 시 무슨 일이 일어나는지 보기 위해 diagnose debug enablediagnose debug application hasync -1을 입력했습니다.

실험 1: Primary 전원 끄기

  • 방법: EVE-NG에서 Primary 노드를 강제로 "Stop" 시켰습니다.
  • 결과: Secondary가 바로 Master로 승격됐고, ping이 몇 초 끊겼다가 다시 이어졌어요. 세션 유지 설정(session-pickup)이 돼 있으면 더 빨리 복구되더라고요.

실험 2: Heartbeat 끊기

  • 방법: Primary의 Heartbeat 인터페이스(port3)를 비활성화했습니다.
config system interface
edit port3
set status down
end
  • 결과: Heartbeat 통신이 끊기자 Secondary가 Primary로 전환됐고, Primary는 클러스터에서 제외됐습니다.

실험 3: 모니터링 인터페이스 장애

  • 방법: HA에서 모니터링 인터페이스(port1)를 설정한 뒤 비활성화했습니다.
config system ha
set monitor port1
end
config system interface
edit port1
set status down
end
  • 결과: 모니터링 인터페이스가 다운되자 Failover가 발생하며 Secondary가 Master로 바뀌었어요.

복구 테스트

Primary를 다시 켜거나 장애를 복구하면 어떻게 될까요? override 설정에 따라 다릅니다.

  • override enable이면 Primary가 다시 Master로 복귀.
  • 비활성화면 Secondary가 Master로 유지됩니다.
    Tag -

Loading script...