OPNsense 오픈소스 방화벽: 패킷 필터링·VLAN 및 IDS 구성

💡 핵심 요약 (Executive Summary)

본 가이드는 OPNsense 오픈소스 방화벽 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents

Installation

Management

개념적 정의
IP 대역 정의
NAT 시스템
  • WireGuard to WAN
Reference & Guidelines (NOTE)

$$
\text{Client} \xleftrightarrow{[L3]tunnel/snat} \text{VPN Interface (Original Src)} \xrightarrow{[1]blocked} \text{WAN Interface (Dst)} \xrightarrow{[2]passed} \text{Internet}
$$

  • WireGuard to LAN
Reference & Guidelines (NOTE)

$$
\text{Client} \xleftrightarrow{[L3]tunnel/snat} \text{VPN Interface (Original Src)} \xrightarrow{[L3]decrypt/foward} \text{Ghost Address (Original Dst)} \xrightarrow{[L4]dnat} \text{LAN Interface (Redirection)}
$$

  • WireGuard to LAN with HAProxy (for TLS Termination)
Reference & Guidelines (NOTE)

$$
\text{Client} \xleftrightarrow{[L3]tunnel/snat} \text{VPN Interface (Original Src)} \xrightarrow{[L3]decrypt/foward} \text{VIP Interface (Original Dst)} \xleftrightarrow{[L4]socket} \text{HAProxy Plugin} \xrightarrow{[L4/L7]dnat} \text{LAN Interface (Redirection)}
$$

Common
SSH Setting
Reference & Guidelines (NOTE)

시스템 → 설정

  • 포트포워딩 추가
Reference & Guidelines (NOTE)

구성

  • 인터페이스: WAN
  • 프로토콜: TCP
  • 목적지: WAN 주소
  • 목적지 포트 범위: 8120 \~ 8120
  • 대상 IP 리디렉션: 단일호스트 또는 네트워크 – 127.0.0.1/32
  • 대상 포트 리디렉션: 8120

  • 테스트

bash
ssh -p8120 [email protected]
DNS 재바인딩 검사
  • DDNS, 사설 DNS, NAT설정으로 IP접근 등 다양한 방식으로 대시보드에 접근하기 위해서 재바인딩 검사 체크 해제
IPv6 설정
Reference & Guidelines (NOTE)

국내에서는 ISP에서 IPv6 DHCP를 할당해주지 않고 있어서 켜두어도 동작하지는 않음.

  • WAN 게이트웨이 DHCP6 활성화되어있으나, IP주소 할당받고있지 않음.

  • 초기구성 LAN Interface의 IPv6 구성유형: 추적인터페이스 = WAN

  • DHCP 서비스 측에서 LAN 인터페이스에 대한 IPv6 구성

    • DHCP Server
Masquerading for VPN to WAN
Reference & Guidelines (NOTE)

Required:

  • 인터페이스
Reference & Guidelines (NOTE)

“마스커레이딩이란?”

  • 사용 배경
  • WireGuard 클라이언트가 8.8.8.8로 ping을 보낼 때, 패킷의 출발지 IP 주소는 클라이언트의 WireGuard 내부 IP 주소(예: 10.0.X.X)입니다.
  • 패킷이 8.8.8.8에 도달하면, 8.8.8.8은 응답 패킷을 출발지 IP 주소인 10.0.X.X로 돌려보내려고 합니다.
  • 하지만 인터넷 상의 라우터들은 사설 IP 주소인 10.0.X.X로 가는 경로를 모르므로 응답 패킷을 버리게 됩니다.
  • 적용 결과
  • 마스커레이딩은 OPNsense 서버의 WireGuard 인터페이스를 나가는 모든 패킷의 출발지 IP 주소를 OPNsense 서버의 공인/외부 IP 주소로 임시적으로 “변조” (또는 숨김)합니다.
  • OPNsense는 이 변환을 기록하고 있다가, 8.8.8.8로부터 응답 패킷을 받으면, 이 응답 패킷의 도착지 IP 주소를 다시 원래 클라이언트의 WireGuard 내부 IP 주소(10.0.X.X)로 되돌려놓고 터널을 통해 클라이언트에게 전달합니다.
  • 이렇게 클라이언트의 사설 IP 주소를 서버의 공인 IP 주소 뒤에 숨기는 행위를 “마스커레이딩”이라고 합니다.
  • Masquerading은 출발지(Source) 주소 변조. 즉, SNAT의 일종입니다.

  • (default) 방화벽 > NAT > 아웃바운드: 아웃바운드 NAT 규칙 자동 생성, 하이브리드 아웃바운드 NAT 규칙 생성 선택시 자동으로 활성화된 모든 인터페이스들에 대한 Masquerading 규칙이 생성됨

  • (Highlite) 방화벽 > 규칙: VPN1 인터페이스의 인바운드규칙 추가

    • 아래의 [1]blocked 구간을 허용하기 위한 통과(pass)규칙

      – WireGuard to WAN

      > 💡
      $$
      \text{Client} \xleftrightarrow{[L3]tunnel/snat} \text{VPN Interface (Original Src)} \xrightarrow{[1]blocked} \text{WAN Interface (Dst)} \xrightarrow{[2]passed} \text{Internet}
      $$

    • 방화벽 > 규칙
인터페이스
인터페이스 > 할당
  • 설명에 표시할 이름 입력 후 추가
인터페이스 > [인터페이스 Alias]
  • WAN
  • IPv4 구성 유형: DHCP
  • IPv6 구성 유형: DHCPv6
  • LAN
  • IPv4 구성 유형: 정적 IPv4
  • IPv6 구성 유형: 추적 인터페이스 or 없음
  • IPv4 주소: (다른 LAN DHCP대역과 겹치지 않도록 설정)
    • ex)
    • 192.168.1.1/24
    • 192.168.2.1/24
    • 192.168.3.1/24
  • DHCP 할당하기:

    – TUN (tunnel)
    – IPv4 구성 유형: 없음
    – IPv6 구성 유형: 없음

인터페이스 > 기기 > 브리지
Reference & Guidelines (NOTE)

브리지란 2개 이상의 L2장비 (NIC)를 하나의 인터페이스로 취급하는 것.

물리포트가 부족한 경우에 인터페이스를 추상화하여 물리포트를 늘릴 수 있다. (= L2 스위치)

  • ex:

    – LAN1: 192.168.1.1/24 → Bridge0: 192.168.1.1/24
    – LAN2: 192.168.2.1/24 → Bridge0: 192.168.1.1/24
    – LAN3: 192.168.3.1/24 → Bridge0: 192.168.1.1/24

  • 브리지 등록

  • 브리지 할당

  • 인터페이스 구성: 정적 IPv4 할당 (단, 충돌은 피해야 하므로 기존 인터페이스 구성 정리한 후에)

인터페이스 > 기기 > VLAN
Reference & Guidelines (NOTE)

VLAN은 주로 하위 네트워크(LAN)를 위한 가상 인터페이스 추가.

$$
\text{VLAN Interfaces} \xrightarrow{‘802.1Q’Tagging} \text{LAN} \xrightarrow{Trunk} \text{AP} \xrightarrow{Segmentation} \text{Clients}
$$

  • 하위 네트워크에서는 VLAN 태깅(802.1Q)을 이용해 인터페이스를 구분함
  • 실제 수신한 LAN1에서 여러 서브넷 사용 ex:
  • LAN1: 192.168.1.1/24
  • LAN1_VLAN10: 192.168.10.1/24
  • LAN1_VLAN20: 192.168.20.1/24

  • VLAN 정의

    인터페이스명 상위 인터페이스 VLAN ID 대역 할당 용도 및 설명
    LAN1 – – 192.168.1.0/24 네트워크 장비 관리
    vlan01.010 LAN1 10 192.168.10.0/24 물리 Hosts (Harvester)
    vlan01.020 LAN1 20 192.168.20.0/24 무선 클라이언트 (WiFi)
    vlan01.021 LAN1 21 192.168.21.0/24 무선 클라이언트 (해외 VPN)
    vlan01.030 LAN1 30 192.168.30.0/24 내부 서비스 (VPN Only)
    vlan01.040 LAN1 40 192.168.40.0/24 외부 서비스 (Cloudflare Tunnel)
    vlan01.041 LAN1 41 192.168.41.0/24 외부 서비스 (Cloudflare Proxy)
  • VLAN 생성

  • 장치: 미 입력시 자동생성
  • 상위: Host LAN
  • VLAN 태그: 2 ~ 4094

  • VLAN 할당

  • 인터페이스 구성: 정적 IPv4 할당

  • DHCP 범위 설정

Reference & Guidelines (NOTE)

LAN1을 VLAN으로 나누었으나, AP장비 AX2004M 에서 VLAN 태깅(802.1Q)을 인식하지 못함.

openwrt OS 사용시 이 문제 해결 가능.

MACVLAN이란?
Reference & Guidelines (NOTE)

MACVLAN은 주로 상위 네트워크(WAN)을 위한 가상 인터페이스 추가.

$$
\text{ISP DHCP Server} \xrightarrow{Leasing} \text{WAN}\xleftarrow{vMAC} \text{MACVLAN Interfaces}
$$

  • 상위 네트워크에서는 MAC Address만 가지고 인터페이스를 구분하므로 수신 WAN 포트 하나에 2개이상의 MAC Address를 가지도록 함
  • OPNSense는 기본적으로 지원하지 않으나, WAN port구성이 여유로우므로 ISP모뎀 포트만 여유롭다면 굳이 필요하진 않다. (라우터장비는 일반적으로 수신 WAN 포트 1개)
인터페이스 > 기기 > VXLAN
Reference & Guidelines (NOTE)

VXLAN이란 L3 터널링으로 L2 네트워크를 구축하는 것. (L2 over L3)

주로 원격지와의 통신에서 L2레벨의 결합이 필요할때 사용된다.

  • ex:
  • 클라우드 인프라와 On-prem 서버를 k8s 클러스터링 등
인터페이스 > 가상 IP (VIP) > 설정
  • 편의성과 필요성을 고려할때 두 종류의 가상 네트워크가 필요하다.
Reference & Guidelines (NOTE)

DNAT 구성시 외부에서의 접근은 Ghost IP로 잘 동작하지만, VIP가 없으면 내부에서 외부로의 호출이 원할하지 못함. 결국 VIP 선언 필요함

Ghost Address 대역: OPNSense 어디에도 존재하지 않는 인터페이스 (따로 정의 하지 않아도 되어서 편하다)

  • 방화벽 > NAT > 포트포워딩 기능을 사용할때에는 실제 인터페이스가 없어도 목적지로 선언하면 리디렉션 할 수 있으므로 VIP를 사용할 필요가 없다.

VIP 대역: OPNSense에서 인식할 수 있는 가상의 인터페이스.

  • Plugin 등에서는 Socket Connection 을 위해 존재가 필요함.

  • 정의된 대역의 가상주소로 DNS 매핑한다.

  • 아래의 서브넷은 실재로 존재하지 않으며, 편의를 위해 정의해놓고 선언하면 추후 유지보수에 편하다.

  • OPNSense DNAT – VIP Net: 192.168.118.0/24
  • HAProxy DNAT – VIP Net: 192.168.119.0/24
Reference & Guidelines (NOTE)

– 192.168.119.3/24의 의미
– NetMask: 255.255.255.0
– 소속네트워크 범위: 192.168.119.0
– 호스트 IP: 192.168.119.3

방화벽
방화벽 > NAT > 포트포워딩
Reference & Guidelines (NOTE)

– 목적지 포트가 :443이 아닐경우 https로 자동 Redirect되지 않는다.
– 해당 문제는 HAProxy or nginx plugin에서 Redirection 처리 가능
– 퍼블릭 도메인용 SSL 인증서 적용하고싶을 경우 ACME Client 플러그인으로 Let’s Encrypt사용이 가능

  • 기본 사용법:
  • WAN 인터페이스 선택
  • 목적지: WAN 주소
  • Redirection 주소: 애플리케이션 엔드포인트 서브넷 (단일 서버의 경우 /32 로 설정)
  • Rule: WAN 방화벽 규칙에 자동으로 매핑

  • 서비스 포트 보안 적용:

방화벽 > 규칙
  • 특수 목적을 제외하고서는 추가된 모든 Optional Interface는 자신을 출발지로 하는 Inbound에 대하여 전체 허용해둔다.
방화벽 > Aliase > GeoIP Setup
Reference & Guidelines (NOTE)

\~ opnsense team \~

저희 경험상 IPinfo는 훨씬 더 크고 자세한 데이터 세트를 제공합니다. 목록에서 다른 국가를 사용하는 경우 방화벽 ‣ 설정 ‣ 고급: 방화벽 최대 테이블 항목 수를 더 높이는 것을 잊지 마세요 . 이 글을 쓰는 시점을 기준으로 목록의 총 항목 수는 약 700만 개입니다.

Add-ons
Common
  • DDNS Client

  • Dynamic Routing (FRR)

  • TFTP Server

  • os-tftp
  • WOL
  • os-wol
  • SMTP Server
Backup Option
  • git-backup plugin
VPN Server & Client
  • pre-installed
  • OpenVPN
  • IPSec
DHCP Server
  • dhcp plugin
  • (default)
    • LAN1인터페이스는 기본적으로 설정되어있음.
L7 (Application) Management
  • DNS
  • (default)
  • TLS

    • private TLS:

    • public TLS:

    • TLS Termination

  • LoadBalancer

Observability
  • Logging
  • os-beats
  • Monitoring
  • os-node_exporter

Restore a Backup

Reference & Guidelines (NOTE)

LAN1 같은거 설정 잘못건드리면 완전히 대시보드에 접근할 수 없게될 수있다.

나처럼 브릿지 설정같은거 하지 말자

  • 당황하지 말고 포터블 모니터와 키보드를 가지고 장비로 간다.
  • 다음처럼 13) Restore a backup 선택하여 최근 기록중 적절한 백업본을 찾아 복구

CLI

  • WireGuard

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *