본문 바로가기
FortiGate/System

Conserve mode를 피하기 위한 메모리 확보 방법

by 에티버스이비티 2022. 12. 30.

FortiGate는 메모리 사용률이 높아지면, FortiGate 스스로 자신을 보호하기 위해 Conserve mode에 들어가게 된다.

Conserve mode에 들어가게 되면 FortiGate는 스스로 메모리를 낮추기위해, 새로운 세션을 연결을 차단하거나 연결을 허용하더라도 AV, IPS 등 보안 기능이 동작하지 않을 수 있다.

 

만약 자주 Conserve mode에 진입하게 되면, 트래픽이나 세션이 갑자기 많아진 이유나 현재 장비의 모델이 낮은것은 아닌지 이유를 파악하고 대처해야 한다.

 

AV나 IPS 등 보안 기능을 해제하여 메모리를 낮출 수도 있지만, 본 포스팅에서는 보안 기능은 유지하고 공유메모리를 사용률을 낮추어  Conserve 모드에 진입하는 것을 피하는 방법이다.

 

아래 값은 예제일 뿐 현장 환경에 맞추어 설정 해야 한다.

 

1) TCP 세션에 대한 특정 값 및 UDP Session TTL 조정

              # config system global

                       set tcp-halfclose-timer 30     default is 120 sec

                       set tcp-timewait-timer 0        default is 1 sec

                       set udp-idle-timer 60            default is 180 sec

               end

halfclose의 경우 TCP syn이 지나가고 세션을 생성하고, ack을 올때 까지 대기시간이다. 위 설정의 경우 30초 동안  ack이 오지 않으면 세션을 clear하여 메모리를 확보한다. 비정상적인 상황에서 세션의 수를 줄여 세션테이블에 사용되는 메모리를 줄일 수 있다.

 

2) Session TTL을 조절하여 세션 테이블의 메모리 량을 줄일 수 있다. 시스템 전체의 세션 TTL을 조정하거나 특정 Servcie, Application, port, policy에 대한 세부적인 조정도가능하다.

 

  전체 session의 idle에 대한 TTL은 아래와 같이 조정 가능하다.

              # config system session-ttl

                      set default 300         <---- the default value is 3600

                end

위 설정의 경우 전체 세션에 대한 TTL 조정이다.

 

아래의 예는 DNS에 대한 전체적인 Session TTL 조정이다.

             # config system session-ttl

                       config port
                             edit 0
                                  set protocol 17
                                  set timeout 10
                                  set end-port 53
                                  set start-port 53
                        end
                    end

특정 ① application 별, ② port 별, ③ policy별로 조정 가능하며, 우선 순위는 ① ② ③ 순서에 마지막으로 위 전체 시스템(config system session-ttl) 설정 순서이다.

특정 port에 대한 TTL 조정
특정 Policy에 대한 TTL 조정

 

3) Cache 메모리는 줄이는 방법이다. 이 방법은 메모리 사용률은 줄이지만, cache hit율이 낮아져서 외부로 query가 많아지게 된다.

          # config system dns

                  set dns-cache-limit 600           the default value is 5000

           end

 

          # config system fortiguard

                  set webfilter-cache-ttl 600        the default value is 3600

                  set antispam-cache-ttl 600       the default value is 1800

         end

 

위 설정을 조정 할 때는 영향을 잘 고려해서 조정 해야 한다. 만약 전체 시스템을 TTL을 300으로 줄이는 경우 특정 서버로의 연결이 자주 끊어진다는 불만이 생길수 있다.

이런 경우 특정 서버로의 정책을 따로 만들어서 해당 정책의 세션 TTL만 늘려주는 등의 조치가 필요하다.

 

또는 특정 port에 대한 세션이 많은 경우 해당 port에 대한 TTL만 조정 할 수도 있다. 

 

댓글