본 가이드는 OPNsense 오픈소스 방화벽 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
📑 Table of Contents
Installation
Management
개념적 정의
IP 대역 정의
NAT 시스템
- 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}
$$
- WireGuard to LAN
$$
\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)
$$
\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
시스템 → 설정
- 포트포워딩 추가
구성
- 인터페이스:
WAN - 프로토콜:
TCP - 목적지:
WAN 주소 - 목적지 포트 범위:
8120\~8120 - 대상 IP 리디렉션:
단일호스트 또는 네트워크–127.0.0.1/32 -
대상 포트 리디렉션:
8120 -
테스트
ssh -p8120 [email protected]
DNS 재바인딩 검사
- DDNS, 사설 DNS, NAT설정으로 IP접근 등 다양한 방식으로 대시보드에 접근하기 위해서 재바인딩 검사 체크 해제
IPv6 설정
국내에서는 ISP에서 IPv6 DHCP를 할당해주지 않고 있어서 켜두어도 동작하지는 않음.
-
WAN 게이트웨이 DHCP6 활성화되어있으나, IP주소 할당받고있지 않음.
-
초기구성 LAN Interface의 IPv6 구성유형: 추적인터페이스 = WAN
-
DHCP 서비스 측에서 LAN 인터페이스에 대한 IPv6 구성
- DHCP Server
Masquerading for VPN to WAN
Required:
- 인터페이스
“마스커레이딩이란?”
- 사용 배경
- 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/24192.168.2.1/24192.168.3.1/24
-
DHCP 할당하기:
– TUN (tunnel)
– IPv4 구성 유형:없음
– IPv6 구성 유형:없음
인터페이스 > 기기 > 브리지
브리지란 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
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 범위 설정
LAN1을 VLAN으로 나누었으나, AP장비 AX2004M 에서 VLAN 태깅(802.1Q)을 인식하지 못함.
openwrt OS 사용시 이 문제 해결 가능.
MACVLAN이란?
MACVLAN은 주로 상위 네트워크(WAN)을 위한 가상 인터페이스 추가.
$$
\text{ISP DHCP Server} \xrightarrow{Leasing} \text{WAN}\xleftarrow{vMAC} \text{MACVLAN Interfaces}
$$
- 상위 네트워크에서는
MAC Address만 가지고 인터페이스를 구분하므로 수신WAN포트 하나에 2개이상의MAC Address를 가지도록 함 - OPNSense는 기본적으로 지원하지 않으나,
WANport구성이 여유로우므로 ISP모뎀 포트만 여유롭다면 굳이 필요하진 않다. (라우터장비는 일반적으로 수신WAN포트 1개)
인터페이스 > 기기 > VXLAN
VXLAN이란 L3 터널링으로 L2 네트워크를 구축하는 것. (L2 over L3)
주로 원격지와의 통신에서 L2레벨의 결합이 필요할때 사용된다.
- ex:
- 클라우드 인프라와 On-prem 서버를 k8s 클러스터링 등
인터페이스 > 가상 IP (VIP) > 설정
- 편의성과 필요성을 고려할때 두 종류의 가상 네트워크가 필요하다.
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
– 192.168.119.3/24의 의미
– NetMask: 255.255.255.0
– 소속네트워크 범위: 192.168.119.0
– 호스트 IP: 192.168.119.3
방화벽
방화벽 > NAT > 포트포워딩
– 목적지 포트가 :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
\~ opnsense team \~
저희 경험상 IPinfo는 훨씬 더 크고 자세한 데이터 세트를 제공합니다. 목록에서 다른 국가를 사용하는 경우 방화벽 ‣ 설정 ‣ 고급: 방화벽 최대 테이블 항목 수를 더 높이는 것을 잊지 마세요 . 이 글을 쓰는 시점을 기준으로 목록의 총 항목 수는 약 700만 개입니다.
- IPinfo GeoIP
- IPinfo GeoIP’s Setup — OPNsense documentation
-
steps
- 계정 생성: Create your IPinfo account | IPinfo.io
- 라이센스 키 찾기: ipinfo.io
-
내 대시보드에서 API Token을 복제
-
OPNSense의 GeoIP 설정: Url에 다음을 삽입 후 적용
https://ipinfo.io/data/ipinfo_lite.csv.gz?token=
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
-
private TLS:
-
LoadBalancer
Observability
- Logging
os-beats- Monitoring
os-node_exporter
Restore a Backup
LAN1 같은거 설정 잘못건드리면 완전히 대시보드에 접근할 수 없게될 수있다.
나처럼 브릿지 설정같은거 하지 말자
- 당황하지 말고 포터블 모니터와 키보드를 가지고 장비로 간다.
- 다음처럼
13) Restore a backup선택하여 최근 기록중 적절한 백업본을 찾아 복구
CLI
-
WireGuard
Leave a Reply