First thoughts of pfSense+

First thoughts of pfSense+
Key Value
pfSense+ 23.01

기성 공유기를 firewall + switch + 무선 AP로 분리할 때 가장 고민했던 부분 중 하나는 firewall을 OPNsense와 pfSense 중 어느 것을 사용할 것인가 였다. 최종적으로 OPNsense를 선택하였는데, 이유는 그 당시 조사해 본 결과 기능상 둘은 거의 비슷하지만 OPNsense가 Wireguard를 더 잘 지원하는 것처럼 보였고, 결정적으로 OPNsense가 오픈소스였기 때문이었다.

하지만 지난 몇 달 동안 OPNsense를 사용하며 매우 만족하였지만, 마이너한 이슈를 경험하였다. 그러면서 pfSense의 개발/상업적인 프로세스에 대해 알게 되고, 또 pfSense의 BSD 커널 contribution에 대해 알게 되면서 pfSense를 support 해주고 싶었다. 그러던 어느 날 기존에 잘 사용하던 OPNsense를 pfSense로 재설치하였고, 몇 주간 사용해 본 결과 pfSense에 매우 만족하고 있다.

pfSense와 OPNsense에 대한 경험과 사용기에 대해 자료가 없기에 여기에 간단히 개인적인 느낌을 기록해 놓는다.

pfSense CE vs pfSense+

이 토픽에 대해서는 여러 소스가 있기에 자세한 내용은 생략한다. 간단하게 pfSense CE는 오픈소스이고, pfSense+는 CE 버전에 기능 추가한 상업용 fork 버전이다.

하지만 개발 방향은 pfSense+를 먼저 개발하고, 그중 core 부분은 CE버전으로 오픈하는 형태로 진행되고 있다. 그렇기에 CE 버전과 plus 버전의 갭은 점점 벌어질 것으로 예상하고 있다.

Plus 버전의 라이센스는 기업을 타겟으로 하기에 개인이 사용하기에는 부담스럽지만, pfSense+는 개인 사용자에게는 무료 라이센스로 제공되고 있다.

설치 방법

pfSense+는 설치 파일이 제공되지 않는다. 설치를 위해서는 CE 버전을 설치한 후 CE 버전에서 Plus 버전으로 업그레이드해야 한다.

하지만 현재 (2023/5) CE 최신 버전인 2.6은 내가 사용하는 mini PC의 최신 인텔 NIC인 i226V를 지원하지 않는다 (BSD 커널에서 NIC 미지원). 그래서 CE 2.6을 설치할 수 없기에 Plus 버전을 설치할 수 없었다. 그리고 이 문제는 CE 2.7에서 해결될 예정이었다.

CE 2.7이 계속 늦어지는 가운데, 다행히 CE 2.7 23/2/15 snapshot에서 pfSense+ 23.01 업그레이드가 지원된다는 소식을 pfSense 포럼에서 보았고, 결과는 다행히 잘 설치되었다.

pfSense+ 23.01

pfSense+를 사용하면서 느낀 점은 pfSense의 완성도가 OPNsense보다 조금 더 높다는 것이다. 완성도는 아마 상업용 라이센스와 연관되었기 때문이다.

사용하면서 중요하다고 느낀 점을 요약하면 다음과 같다.

pfSense+ (23.01) OPNsense (23.1)
기능 Firewall 동일 동일
기능 Wireguard 지원 (kernel space) 지원 (kernel space)
기능 DNS 기반 광고 차단 pfBlockerNG를 통한 더 뛰어난 block list 관리 및 자세한 리포팅 제공 Unbound를 통한 block list 관리. OPNsense를 통한 간단한 리포팅 제공
기능 Firewall GeoIP 설정 GUI에서 maxmind ID/password 기입하면 완료. 주기적 자동 업데이트도 동작. GUI에서 maxmind ID/password 기입하면 완료. 하지만 주기적 자동 업데이트 기능 미동작 (버그 추정)
기능 ntopng의 GeoIP 설정 GUI에서 maxmind ID/password 기입하면 완료 ssh로 들어가서 maxmind 설정 파일 수동 생성 필요
기능 System Information Widget 보다 자세한 정보 표기 간단한 정보 표기
기능 pfBlockerNG Widget block list로 차단된 사이트 정보 자세히 표기 동일 기능 없음 (차단된 사이트 정보 알기 어려움)
안정성 업데이트 상대적으로 적은 업데이트. 아직까지는 업데이트로 인한 문제 없었음 상당히 자주 발생하는 업데이트. 업데이트는 좋으나 기존 업데이트로 생긴 버그 픽스하는 업데이트가 생각보다 많았음.
안정성 ntopng 문제없이 24/7 실행되고 있음 일주일정도 실행하면 ntopng가 정지되어 있었음. Crash 등으로 서비스 중지되는 것으로 보임
Integration 시스템 시스템과 개별 package간 integration이 더 잘되서 동작함, e.g., 하나의 System DNS 설정 시스템과 package간 따로 동작하는 부분이 있음, e.g., 분산된 System DNS 설정

pfSense+는 BSD 커널 contributor라고 한다. 또한 Wireguard kernel 모듈도 여기서 개발하였다. 이렇게 개발된 BSD 커널은 OPNsense 등 여러 곳에서 사용되고 있다. BSD 커널 개발을 위해 개발자를 hire하고 이 비용은 상업 pfSense+ 라이센스에 포함되어 있다.

몇 주간 pfSense+를 사용해 본 결과 매우 만족스럽다. 아직 안 건드려 본 기능이 많기에 계속 사용해 보며 기능을 살펴봐야겠다.