우리나라에서 MikroTik을 사용하는 비율이 계속해서 증가하고 있는 것 같습니다. 통상적으로 수천만 원에 달하는 시스코 라우터보다도 성능이 좋으면서 기능은 다양하고, 가격 또한 저렴하기 때문일 거라고 추측해봅니다. 하지만 MikroTik의 성능이 좋다는 것은 TileGx 프로세서를 쓰고 있는 CCR에서나 할 수 있는 이야기인 것 같습니다. 그 외 ARM 등의 프로세서를 쓰는 모델에서는 성능을 최대한 적게 사용하기 위해 노력해야 합니다. MikroTik에서 같은 방화벽 정책을 설정한다고 할 때 여러 방법을 사용할 수 있고, 이러한 여러 방법간에 성능 차이가 있기 때문에 성능을 적게 사용하기 위해서는 이런 차이와, 차이가 발생하는 이유를 알아야 할 필요가 있습니다. 그래서 오늘은 MikroTik에서 네 개나 있는 방화벽 간의 구조적 차이점을 소개하겠습니다.


이 글을 읽기 전…

Transparent L2라고 불리는 Bridge 기반 네트워크, NAT라고 불리는 통상적인 SNAT 네트워크 등의 구성과 같이 MikroTik에서 구성할 수 있는 환경은 다양합니다. 이 글에서는 Bridge 기반 네트워크를 기준으로 각 방화벽의 차이를 설명합니다. 이 점을 참고하여 다른 네트워크 환경을 구성하고 있는 케이스의 네트워크 관리자의 경우에는 선택적으로 필요한 개념만 배워가는 것이 좋습니다.


눈에 띄는 차이점

아마도 MikroTik을 접해 본 사람이라면 Winbox에서 수많은 메뉴를 열어보았을 것입니다. 만약 안 해보셨다면 지금 둘러보시는 것을 추천하고 싶습니다. 메뉴가 많아서 모든 메뉴를 둘러보셨을 거라고는 생각하지 않습니다만 IP/Firewall은 대부분의 사람들이 열어보았을 것입니다. 이 메뉴를 열어보면 외관이 동일한 방화벽 탭이 네 개나 있습니다.

네 개나 되는 탭에는 정말 차이가 하나도 없을까요? 정답은 아닙니다.(누군가가 각각의 탭에 차이가 없다고 말한다면 이 글을 공유해주세요.) 규칙 추가 버튼을 눌러보면 차이가 있다는 것을 단 번에 알아챌 수 있습니다.

(HiDPI)MikroTik Winbox에 Filter Rules와 RAW의 새로운 규칙 창을 각각 열어 둔 사진

보기에 편하도록 두 개의 탭에서 규칙 추가 창을 열었습니다. 위 사진을 보면 규칙에 추가할 수 있는 조건의 다양성이 다르다는 것을 알 수 있습니다.


패킷 처리 과정에 의한 차이

각 탭에 해당하는 방화벽은 라우터가 패킷을 처리하는 과정에서 처리되는 때가 다릅니다. 아래 세 사진을 참고해보세요.

Overall Packetflow Diagram

Bridging Diagram

Packet Flow Chains

이미지 출처: MikroTik

요약하자면 다음과 같습니다.

  1. 패킷이 RAW 방화벽의 PREROUTING Chain을 지나갑니다.
  2. Connection Tracking을 시행합니다. — Connection Tracking 이란: 모든 연결을 보기 쉽게 정렬하고 세션이 현재 어떤 과정에 있는지 등을 보여줍니다. 이 과정이 없으면 세션에 대한 추적이 불가하므로 NAT를 사용할 수 없습니다.
  3. 패킷이 Mangle의 PREROUTING Chain, NAT의 DST-NAT Chain을 각각 순서대로 지나갑니다.
  4. Mangle, Filter의 FORWARD Chain을 각각 순서대로 지나갑니다.
  5. Accounting을 시행합니다. — Accounting 이란: 트래픽을 집계하는 역할을 합니다.
  6. Mangle의 POSTROUTING, NAT의 SRC-NAT Chain, Simple Queues를 순서대로 지나갑니다. — Simple Queues란: 패킷이 들어온 순서대로 순차적으로 나가는(Queue 데이터 구조) 형태의 기능입니다. 속도 제한, 네트워크 품질 보장(QoS) 등의 목적으로 사용됩니다.

더 쉽게 요약하면 다음과 같습니다.

각 방화벽 탭의 규칙 추가 창에서 조건의 차이를 다시 살펴보세요. 조건의 차이를 이해할 수 있다면 위 설명을 충분히 이해했다고 말할 수 있습니다.

이해가 어렵다면 아래 추가 설명을 참고해보세요. 이해했다면 추가 설명을 건너뛰어도 됩니다.

추가 설명

추가 설명에서는 빠른 이해를 돕기 위해 두 가지 조건을 예로 들어 설명해보겠습니다.


방화벽별 장단점과 제안 사항

몇몇 사람들이 “왜 방화벽을 네 개씩이나 구분한 것인가요? 그냥 Filter Rules를 사용하면 되는 거 아닌가요?”라고 질문할 것입니다. 이 질문의 답은 “규칙에 적절한 방화벽 탭을 이용해야 한다.”입니다.

Connection Tracking은 성능을 많이 사용합니다. 그렇기 때문에 Connection Tracking에 의해 추측된 패킷의 추가적인 정보를 조건으로 필요로 하지 않는 규칙이라면 전부 RAW(PREROUTING)에 배치하는 것이 성능에 있어 더 유리합니다.

정말 궁금하다면 RAW(PREROUTING)에서 패킷을 Drop 하는 구성, Filter(FORWARD 또는 Input)에서 패킷을 Drop 하는 구성을 만든 다음 각각의 구성에 tcpdump로 다량의 패킷을 보내서 성능 차이를 확인해보세요.

반대로 보면 Connection Tracking에 의해 추측된 패킷의 추가적인 정보가 필요하다면 RAW(PREROUTING)를 사용하면 안 됩니다. 규칙에 조건이 부족해서 방화벽이 의도와 다르게 작동될 수도 있습니다.


마치며…

글을 쓰고 나니 정확한 정보만을 직접적으로 전달하기에는 조금 부족한 글이라고 생각됩니다. 사실 그럴 목적이었다면 MikroTik Wiki의 Packet Flow 문서를 읽어보는 것을 권장하고 싶습니다. 쉽게 이해할 수 있게 수업처럼 풀어서 작성한 글인 점을 참고해주십시오. 아울러 부족한 점이나, 추가 설명이 필요한 부분이 있다면 댓글로 피드백 남겨주시면 빠르게 수정하고 답변드리겠습니다.