OPNsense 는 FreeBSD 기반이라 일반 BSD 명령이 그대로 통하지만, 서비스 · 방화벽 · 설정은 전용 도구로 다뤄야 한다. GUI 에서 바꾼 내용이 설정 파일에 반영되는 구조이므로 /usr/local/etc 아래 설정 파일을 직접 고치면 다음 적용 때 덮어써진다.
# 서비스 제어
configctl service list
configctl service restart unbound
configctl service restart nginx
# 방화벽 규칙 재적용
configctl filter reload
# 전체 설정 재적용
configctl system reload
# 콘솔 메뉴 진입
opnsense-shell
플러그인 서비스는 pluginctl 로도 다룬다. OpenSSH 업데이트 후 SSH 세션이 맺히지 않는 상황처럼 GUI 접근만 남았을 때 쓰인다.
pluginctl -s openssh restart
pfctl -s info # 요약
pfctl -s rules # 적용 중인 규칙
pfctl -s state | head # 상태 테이블
pfctl -si # 통계
pfctl -ss | wc -l # 상태 수
pfctl -s tables # 테이블 목록
상태 테이블 수가 상한에 가까우면 새 연결이 거부된다. 하드웨어 사양 대비 상한이 적절한지 System → Settings → Firewall 의 최대 항목 수와 함께 본다.
규칙은 GUI 가 만든 /tmp/rules.debug 를 pf 가 읽는다. 직접 편집하지 않고 GUI 또는 configctl filter reload 를 쓴다.
ifconfig
netstat -rn
route -n get 8.8.8.8
tcpdump -ni igc0 port 51820
# OPNsense 로그는 순환 파일이라 전용 뷰어를 쓴다
clog /var/log/filter/latest.log
clog -f /var/log/system/latest.log
버전에 따라 로그 경로가 /var/log/<범주>/latest.log 형태다. tail 로 열리지 않으면 clog 를 쓴다.
설정은 /conf/config.xml 하나에 들어 있다. System → Configuration → Backups 에서 내려받는다.
복원으로 돌아오는 것과 그렇지 않은 것을 구분해야 한다.
| 항목 | 복원 |
|---|---|
| 인터페이스 · VLAN · 방화벽 규칙 · NAT | 된다 |
| DHCP · DNS · NTP 설정 | 된다 |
| 사용자 · 그룹 | 된다 |
| 인증서 · CA (내장 저장분) | 된다 |
| VPN 설정(OpenVPN · IPsec · WireGuard) | 대체로 되지만 인터페이스 바인딩이 어긋날 수 있다 |
| 플러그인 패키지 자체 | 안 된다. 설정만 들어 있고 설치는 따로 해야 한다 |
| DHCP 임대 · RRD 통계 · 로그 | 안 된다 |
가장 흔한 사고는 NIC 이름 변경이다. 다른 하드웨어나 다른 가상화 환경으로 복원하면 em0 이 igc0 으로 바뀌는 식이라 WAN · LAN 이 뒤바뀐다. 복원 순서를 다음처럼 잡으면 안전하다.
config.xml 을 올린다.configctl system reload 후 VPN · NAT · DNS 를 하나씩 확인한다.방화벽은 실패하면 원격 접근이 함께 끊기므로 사전 준비가 특히 중요하다.
config.xml 을 내려받아 다른 장비에 보관한다.업그레이드 직후에는 WAN · LAN 통신, NAT, DNS(Unbound), VPN 연결, IDS/IPS 인터페이스 바인딩을 순서대로 확인한다. 기능별 설정은 인터페이스에 묶여 있어 이름이 바뀌면 조용히 동작하지 않는다.