본 시리즈는 SonicWall에서 OPNsense로 메인 방화벽을 교체하며 직접 구축한 기록을 정리한 것입니다. 첫 편은 하드웨어 선정부터 USB 설치, 그리고 Web UI에 처음 접속하기 직전(콘솔에서 관리 IP를 잡는 단계)까지를 다룹니다. 플러그인·VLAN·VPN 같은 설정 이야기는 다음 편부터 이어집니다.
OPNsense란?
OPNsense는 FreeBSD 기반의 오픈소스 방화벽·라우터 운영체제입니다. 네덜란드의 네트워크 장비 업체 Deciso가 주도하며, 2015년 pfSense를 포크해서 출발했습니다(둘 다 더 거슬러 올라가면 m0n0wall에 뿌리를 둡니다). 핵심 패킷 필터는 FreeBSD의 pf를 그대로 쓰지만, 그 위의 웹 인터페이스·플러그인 구조·업데이트 정책은 독자적으로 발전해 왔습니다.
상용 UTM/방화벽 어플라이언스가 라이선스로 묶어 파는 기능들 — 스테이트풀 방화벽, NAT, VLAN, 다중 WAN, VPN(OpenVPN·WireGuard·IPsec), IDS/IPS(Suricata), 트래픽 셰이핑, 캡티브 포털, 리버스 프록시, DHCP/DNS 서버 등 — 을 추가 결제 없이 한 박스에 통합할 수 있다는 게 가장 큰 매력입니다. 소프트웨어 자체는 무료이며, 원하면 Deciso나 파트너가 파는 전용 하드웨어를 살 수도 있습니다.
어디에 많이 쓰이나
OPNsense는 사용처가 꽤 넓습니다.
- 홈랩/가정용 게이트웨이 — 통신사 공유기를 대체해 VLAN·광고 차단·VPN을 직접 운영하는 용도. 미니 PC(멀티 NIC)에 올려 쓰는 경우가 많습니다.
- 소규모~중견 기업(SMB)의 메인 방화벽 — 사무실 인터넷 게이트웨이, 망 분리(부서/서버/관리망 VLAN), 사이트 간 IPsec, 원격근무 VPN. 이번 구축이 바로 이 케이스입니다.
- 엣지 라우터/리버스 프록시 — 외부 노출 서비스를 443 한 점으로 통제하고 인증서를 자동 관리하는 게이트웨이.
- 가상화 환경의 라우터 VM — Proxmox·VMware·Hyper-V 위에 라우터/방화벽으로 올려 쓰는 구성.
요약하면, 일반 가정용 공유기로는 부족한 딥 패킷 인스펙션, VLAN 분리, 사이트 간 VPN 같은 엔터프라이즈급 기능이 필요한 거의 모든 규모에서 쓰입니다.
장점
- 모던하고 직관적인 웹 UI — 좌측 접이식 메뉴, 검색, 실시간 그래프. 설정 항목을 찾기 쉽다는 평이 많습니다.
- 빠르고 예측 가능한 업데이트 — 1·7월 연 2회 메이저 릴리스 + 2주 간격 패치, 주간 보안 업데이트. “몇 년 묵혔다 한 번에 대규모 업그레이드” 상황이 드뭅니다.
- 통합된 보안 기능 — Suricata 기반 IDS/IPS, GeoIP, ACME(Let’s Encrypt) 인증서, 다양한 VPN을 내장/플러그인으로 제공.
- 벤더 종속이 적은 오픈소스 — 핵심 기능이 갑자기 유료(폐쇄) 라인으로 옮겨갈 걱정이 적습니다. (이 점이 pfSense에서 넘어오는 흔한 이유로 꼽힙니다.)
- 저렴한 도입 비용 — 소프트웨어 무료. 오래된 서버/데스크톱에 멀티 NIC만 더해도 충분히 굴러갑니다.
단점·주의점
- 초기 학습 곡선 — “제대로” 설정하려면 네트워크 지식이 필요합니다. 잘못 만지면 망 전체가 끊길 수 있어, 방화벽 룰·인터페이스 작업은 신중해야 합니다.
- 업데이트가 곧 네트워크 중단 — 방화벽 업데이트는 재부팅을 동반할 수 있어 운영 중 회선이 끊깁니다. 점검 시간을 잡아 백업 후 진행해야 합니다. (이번 구축에서도 strongswan·Suricata 메이저 업그레이드가 재부팅을 동반했습니다.)
- FreeBSD 하드웨어 호환성 — NIC·스토리지 드라이버가 FreeBSD에서 잡혀야 합니다. (뒤에서 다룰 Intel
igbNIC, SATA, ZFS 이슈가 여기서 나옵니다.) - pfSense와 설정 호환 안 됨 — 두 프로젝트의 코드베이스가 갈라져서, pfSense 백업 XML을 그대로 가져올 수 없습니다. 이전 시 룰을 새로 만들어야 합니다.
- 플러그인 = 업그레이드 리스크 — 코어 업데이트 때 일부 플러그인이 일시적으로 깨질 수 있습니다. 가능하면 내장 기능을 우선 쓰는 게 안전합니다.
참고로 OPNsense의 가장 흔한 비교 대상은 pfSense입니다. 둘 다 FreeBSD +
pf기반이라 기능은 대동소이하며, OPNsense는 모던 UI·잦은 업데이트·오픈소스 투명성, pfSense는 더 긴 업력·Netgate의 상용 지원이 강점으로 꼽힙니다. 기본적인 WAN-LAN 라우팅과 사이트 간 VPN 정도라면 어느 쪽을 골라도 무방합니다.
들어가며
OPNsense는 FreeBSD 기반의 오픈소스 방화벽입니다. 설치 자체는 어렵지 않지만, “FreeBSD 기반”이라는 점 때문에 하드웨어 선택과 디스크/RAID 구성 단계에서 함정이 몇 개 있습니다. 실제로 이 부분에서 커널 패닉과 재설치를 반복하며 가장 많이 헤맸습니다. 그래서 이 글은 단순 매뉴얼이 아니라, 막혔던 지점과 그 해결을 함께 적었습니다.
이 글의 범위는 다음과 같습니다.
- 하드웨어 요건 (NIC, 스토리지, RAID)
- 설치 USB 만들기
- USB 부팅 → 설치 마법사 (ZFS Mirror 기준)
- 설치 후 콘솔에서 관리 IP 잡기 → Web UI 접속 직전까지
1. 하드웨어 요건
이번에 사용한 장비
| 구성 | 모델 |
|---|---|
| 서버보드 | Intel S1200RP |
| 섀시/PSU | Intel R1304 계열 1U 서버 (PSU: R1304RPOSHBN, 1000W 리던던트) |
| NIC | 온보드 Intel I350(쿼드 포트) + I210 |
| 스토리지 | SATA HDD 2개 (ZFS Mirror) |
방화벽은 CPU·메모리 요구가 높지 않습니다. 중요한 건 NIC와 스토리지 인터페이스입니다. 이 두 가지가 FreeBSD 호환성과 직결됩니다.
NIC는 Intel igb 계열로
OPNsense에서 Intel 기가비트 NIC는 igb 드라이버로 잡힙니다. 이 장비에서는 온보드 포트들이 igb0~igb5로 인식됐습니다.
여기서 알아둘 점이 하나 있습니다. OPNsense의 인터페이스 설정은 드라이버명(igb0, igb5 등)에 묶입니다. 나중에 백업(config.xml)을 다른 장비로 복원할 때 새 장비의 NIC 드라이버가 다르면(igc, em, ix 등) 인터페이스 매핑이 깨져 네트워크가 안 붙습니다. 그래서 처음부터 Intel igb 계열 멀티포트 NIC로 통일해두면 향후 장비 교체·이중화 때도 설정을 거의 그대로 가져갈 수 있습니다. 방화벽 용도라면 멀티포트 Intel NIC가 사실상 정답입니다.
스토리지: SAS vs SATA 함정
엔터프라이즈 디스크를 쓰려다 한 번 막혔습니다. Seagate Constellation ES.3 같은 모델은 같은 라인업에 SAS 버전과 SATA 버전이 따로 있습니다.
- ST1000NM0023 → SAS
- ST1000NM0033 → SATA
Intel S1200RP 보드의 온보드 스토리지 컨트롤러는 칩셋(C222/C224/C226 계열) 기반의 SATA 전용입니다. SAS 디스크는 물리적·전기적으로 온보드 SATA 포트에 꽂히지 않습니다. SAS를 쓰려면 LSI 9211-8i(IT 모드) 같은 별도 SAS HBA를 PCIe에 추가해야 합니다(FreeBSD는 mps/mpr 드라이버로 LSI HBA를 잘 잡습니다).
방화벽은 디스크 부하가 낮으므로, 굳이 SAS로 갈 필요 없이 온보드 SATA에 바로 꽂히는 SATA 디스크가 깔끔합니다. 디스크 라벨의 모델 번호로 인터페이스를 꼭 확인하세요.
RAID는 Fake RAID 말고 ZFS Mirror (★중요)
설치 단계에서 가장 크게 헤맨 지점입니다. 결론부터: Intel 온보드 RAID를 쓰지 말고, OPNsense 설치 시 ZFS Mirror를 쓰세요.
Intel 보드의 온보드 RAID(Intel ESRT2 / LSI)는 이른바 Fake RAID(소프트웨어 RAID)입니다. Windows에서는 드라이버로 동작하지만, FreeBSD(OPNsense)는 이를 네이티브로 인식하지 못합니다. 그 결과 BIOS에서 RAID 1로 묶어도 설치 화면에서는 디스크가 각각 따로 보입니다. 실제로 1TB 디스크 2개가 ada0, ada1로 따로 잡혔습니다.
여기서 무리하게 진행하면(BIOS RAID 모드 + Initialize 후 재설치) 커널 패닉, 부트로더 손상, 결국 PXE 부팅 무한 반복까지 이어집니다. 저는 이 과정을 다 겪고 나서야 ZFS로 정리했습니다.
올바른 방법은 이렇습니다.
- BIOS에서 SATA 모드를 AHCI로 되돌린다 (RAID 모드 끄기)
- OPNsense 설치 시 Install (ZFS) → Pool Type: mirror 선택
- 두 디스크를 미러로 묶는다
FreeBSD 환경에서 ZFS Mirror가 Fake RAID보다 모든 면에서 낫습니다.
| 비교 | ESRT2 하드웨어 RAID | ZFS Mirror |
|---|---|---|
| FreeBSD 지원 | 제한적 | 네이티브 |
| 데이터 무결성 체크섬 | 없음 | 있음 |
| 복구 난이도 | 어려움 | 쉬움 |
| 모니터링 | BIOS 재부팅 필요 | OS에서 실시간 |
| OPNsense 권장 | 아니오 | 예 |
참고: ZFS Mirror에는 같은 용량의 디스크 2개가 필요합니다. 제조 시기가 크게 차이 나는 중고 디스크를 섞을 경우 한쪽이 먼저 죽을 수 있으니, 설치 전후로
smartctl로 SMART 상태(통전 시간, 불량 섹터)를 확인해두면 좋습니다.
2. 설치 USB 만들기
다른 PC에서 OPNsense 공식 다운로드 페이지(https://opnsense.org/download/)에서 이미지를 받습니다.
- Architecture: amd64
- Image type:
vga(USB 설치용) —.img.bz2형식 - 파일 예:
OPNsense-25.7-vga-amd64.img.bz2
USB로 굽는 방법:
- balenaEtcher (권장): “Flash from file”로
.img.bz2를 그대로 선택 → USB 타깃 선택 → Flash. 압축 해제 없이 바로 가능합니다. - Rufus (Windows): DD 이미지 모드로 쓰기
- macOS/Linux:
dd명령
USB는 최소 4GB면 충분합니다.
참고로 OPNsense 이미지 타입에는
vga,serial,nano,dvd등이 있습니다. 모니터 + 키보드로 설치할 거면vga가 맞습니다. (과거에nano(임베디드/플래시용) 이미지인 줄 모르고 설정을 다 했다가 다시 설치한 적이 있었는데, 일반 서버 설치에는vga를 쓰는 게 맞습니다.)
3. USB 부팅 → 설치 마법사
3-1. USB로 부팅
- 장비에 USB를 꽂고 전원을 켭니다.
- Intel 로고가 뜨면 F6(Boot Menu)를 눌러 USB를 선택합니다. (또는 BIOS에서 부팅 순서를 USB 우선으로)
- OPNsense가 Live 환경으로 부팅됩니다. USB로 부팅한다고 자동 설치되지 않습니다. Live로 뜬 뒤 수동으로 설치를 시작해야 합니다.
3-2. installer 계정으로 로그인
Live 환경에서 로그인 프롬프트가 뜨면:
login: installer
password: opnsense
⚠️ 계정 혼동 주의 — 가장 헷갈리는 부분입니다.
USB Live 환경(설치 미디어):
installer/opnsense→ 설치 마법사 실행용
이미 디스크에 설치된 OPNsense:root/ (설치 시 정한 비밀번호) → 관리용
installer계정은 USB Live 환경에서만 동작합니다. 만약installer로 로그인이 안 되고root로 들어가진다면, USB가 아니라 하드디스크에 이미 설치된 OPNsense가 부팅된 것입니다. 이때는 F6에서 USB를 다시 선택하거나 부팅 순서를 확인하세요.
3-3. 설치 마법사 진행 (ZFS Mirror)
installer로 로그인하면 설치 마법사가 시작됩니다. 조작은 화살표(이동), 스페이스바(선택), Tab(버튼 이동), Enter(확정)입니다.
① Keymap (키보드 레이아웃)
>>> Continue with default keymap이 선택된 상태로 Enter. 기본 US 배열이며, 한국 키보드도 영문 입력 기준으로 동일합니다.
② 설치 방식 선택
Install (UFS)
Install (ZFS) ← 이걸 선택
Import configuration
Password
Shell
ZFS Mirror로 갈 것이므로 Install (ZFS) 선택.
UFS vs ZFS: 정상적인 하드웨어 RAID를 쓰는 환경이라면 UFS도 선택지지만, 이번처럼 Fake RAID를 포기하고 OS 레벨 미러링을 쓰는 경우 ZFS가 정답입니다. ZFS는 체크섬 기반 무결성 검사와 쉬운 복구라는 장점도 함께 가져갑니다.
③ Pool Type
mirror 선택. (디스크 1개만 쓸 거면 stripe지만, 여기서는 미러)
④ 디스크 선택
미러로 묶을 디스크 ada0, ada1을 스페이스바로 각각 선택합니다.
⚠️ USB(예:
da0, SanDisk ~14GB)는 절대 선택하지 마세요. 설치 디스크와 헷갈리기 쉽습니다. 용량으로 구분하세요(HDD는 ~930GB, USB는 ~14GB).
⑤ 최종 확인 — 데이터 삭제 경고
Last Chance! Are you sure you want to destroy
the current contents of the following disks:
ada0 ada1
YES 선택 → Enter. 이 순간 두 디스크의 모든 데이터가 삭제됩니다. (기존에 잡혀 있던 Fake RAID 메타데이터도 함께 정리됩니다.)
⑥ 설치 진행 (자동)
ZFS Pool 생성(약 1~2분) → OPNsense 파일 복사(약 2~5분)가 자동으로 진행됩니다.
⑦ root 비밀번호 설정
Enter root password:
Re-enter root password:
새 비밀번호를 두 번 입력합니다. 입력해도 화면에 글자가 안 보이는 게 정상입니다. 이 비밀번호가 이후 Web UI 로그인에 쓰이니 반드시 기억하세요. (영문+숫자 조합, 최소 8자 권장)
⑧ 설치 완료 → 재부팅
Final Configuration
├── Exit
├── Shell
└── Reboot ← 선택
Reboot 선택. 재부팅이 시작되면 즉시 USB를 뽑으세요. 안 그러면 USB로 다시 부팅되어 설치 마법사가 또 뜹니다.
4. 설치 후 콘솔에서 관리 IP 잡기
재부팅하면 디스크에 설치된 OPNsense가 부팅되고 콘솔 메뉴가 나타납니다. 기본 상태는 보통 이렇습니다.
- LAN (
igb0): 192.168.1.1/24 (기본값) - WAN: 미할당
이 기본 LAN IP를 관리망 대역으로 바꿔야 Web UI에 접속할 수 있습니다. (이 글에서는 예시로 10.0.91.1/24를 씁니다. 환경에 맞게 바꾸세요.)
콘솔 메뉴에서 2) Set interface IP address를 선택하고 다음과 같이 진행합니다.
Enter the number of the interface to configure: 1 (LAN)
Configure IPv4 address LAN interface via DHCP? [Y/n] n
Enter the new LAN IPv4 address: 10.0.91.1
Enter the new LAN IPv4 subnet bit count: 24
For a LAN, press <ENTER> for none (upstream gateway): (Enter)
Configure IPv6 address LAN interface via DHCP6? [Y/n] n
Enter the new LAN IPv6 address: (Enter)
Do you want to enable the DHCP server on LAN? [y/N] N
Do you want to revert to HTTP as the web GUI protocol? N
Generate a new self-signed web GUI certificate? [y/N] N
Restore web GUI access defaults? [y/N] y
핵심 포인트:
- LAN에는 upstream gateway가 없으므로 그 항목은 Enter로 비웁니다.
- DHCP 서버는 N — 이미 망에 DHCP가 있거나 관리망에 굳이 DHCP를 띄울 필요가 없다면 끕니다.
- Restore web GUI access defaults는 y — Web UI 접근 룰을 기본값으로 되돌려 접속이 막히지 않게 합니다. (잠금 사고 방지)
물리 연결과 Web UI 접속
- 관리 PC(또는 상위 스위치)를 OPNsense의 LAN 포트(
igb0)에 연결합니다. - 관리 PC에 같은 대역(예:
10.0.91.x)의 IP를 두거나, 같은 L2 망에 둡니다. - 브라우저에서
https://10.0.91.1으로 접속합니다. - 로그인:
root/ 설치 시 설정한 비밀번호
여기까지가 이번 편의 범위입니다. 자체 서명 인증서라 브라우저 보안 경고가 한 번 뜨는데, 정상이니 통과하면 됩니다. 로그인하면 초기 설정 마법사(Wizard)가 시작됩니다.
막혔을 때: 자주 만나는 증상과 대처
설치하면서 실제로 만난 상황들입니다.
커널 패닉(화면 가득 트레이스 출력 후 멈춤). Tracing command ..., trap 0, rip = 0 ... 같은 메시지가 뜨고 멈췄다면 재부팅이 아니라 크래시입니다. Fake RAID를 무리하게 쓰거나 SATA 모드를 바꾼 직후 파일시스템이 꼬였을 때 발생했습니다. 전원 강제 종료 후 ZFS로 깨끗하게 재설치하는 게 가장 빠릅니다.
부팅이 안 되고 PXE 네트워크 부팅을 반복함. Intel(R) Boot Agent, PXE-E61: Media test failure 같은 메시지가 돌고 있다면, 디스크에서 부팅 가능한 OS를 못 찾아 네트워크 부팅으로 빠진 상태입니다. 부트로더/파일시스템 손상이므로 USB로 재설치합니다.
installer로 로그인이 안 됨. 앞서 설명대로, 이미 디스크에 설치된 상태로 부팅된 경우입니다. root로 들어가지면 설치는 이미 되어 있는 것이고, 새로 설치하려면 F6에서 USB를 다시 골라야 합니다.
설치 화면에서 디스크가 RAID로 안 묶이고 따로 보임. Intel Fake RAID 문제입니다. BIOS를 AHCI로 바꾸고 ZFS Mirror로 설치하세요(위 1장 참고).
마치며
1편에서는 OPNsense의 하드웨어 선택과 USB 설치, 그리고 콘솔에서 관리 IP를 잡아 Web UI 접속 직전까지를 다뤘습니다. 요점은 셋입니다.
- NIC는 Intel
igb계열, 스토리지는 온보드 SATA로 맞추면 FreeBSD 호환성 고민이 사라집니다. - Intel Fake RAID는 쓰지 말고 ZFS Mirror로 묶으세요. 이게 커널 패닉·재설치 지옥을 피하는 길입니다.
- 설치 후 콘솔 2번으로 LAN IP만 바꾸면 바로 Web UI에 들어갈 수 있습니다.
다음 편에서는 Web UI 초기 설정 마법사, 인터페이스/VLAN 할당, 그리고 기본 방화벽 룰을 다룹니다. 이어서 ACME(인증서), Caddy(리버스 프록시), Suricata(IDS/IPS) 같은 플러그인 설정으로 넘어갑니다.