OPNsense 방화벽 기반 WireGuard VPN 서버 및 피어 구성

💡 핵심 요약 (Executive Summary)

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

📑 Table of Contents
Reference & Guidelines (NOTE)

System Required:

  • 외부망에서 VPN 인스턴스 엔드포인트를 안정적으로 요청하기 위해 필수

Server in OPNSense

인스턴스 생성 및 Enable
  • WG Instance / Peers
  • CIDR: 10.0.X.X/24
  • Instance: 10.0.X.X/24 (인스턴스 주소는 10.0.X.X, 피어주소는 순차적으로 할당됨)
인스턴스 생성
  • 터널 대역: ex) 10.0.X.X/24
Enable
피어 생성
Reference & Guidelines (NOTE)

peer는 클라이언트 갯수만큼 만드는 것이 좋습니다. (사용자:Peer = 1:1, Peer:Instance = 1:N)

수동으로 생성 (필요할 시에만)
  • 비밀키 및 공개키 생성
bash
mkdir wg-mgnt-peer1
  cd wg-mgnt-peer1/
  #wg genkey > privatekey
  #cat privatekey
  #cat privatekey | wg pubkey > publickey
  #cat publickey
  wg genkey | tee privatekey | wg pubkey > publickey
  • 실질적으로 저장되는 정보
  • 허용된 피어링 IP 범위
  • 공개키
  • 인스턴스 매핑
  • keepalive
  • 피어 구성에는 해당정보 저장 불필요
  • 엔드포인트 주소
  • 엔드포인트 포트
피어 생성기로 생성
Reference & Guidelines (NOTE)

모바일의 경우 해당화면내에서 QR로 등록

  • 엔드포인트는 인스턴스의 Listen Port
  • 이름 정의
  • 허용된 IP 정의: 인스턴스와 동일한 대역이 포함되어야 함. ex) 10.0.X.X/24
  • KeepAlive: 25
  • 주의사항:
  • 반드시 Client 등록과 같이 진행해야함.
  • 개인키는 이 화면이후 조회불가

  • 적용버튼 클릭

Client
Installation
Config
  • interface: 클라이언트 터널 설정(서버에 저장안됨. 클라이언트 Config 정의용)
  • Address: 터널이 사용할 IP범위
  • DNS: 클라이언트 측에서 사용할 사설 DNS
  • peer: peer와의 연결구성정보
  • AllowedIPs: VPN 터널링 범위
  • Endpoint: VPN 인스턴스 엔드포인트
  • Sample
bash
[Interface]
  PrivateKey = <secret>
  Address = 10.0.X.X/32
  DNS = 192.168.118.53

  [Peer]
  PublicKey = <secret>
  #AllowedIPs = 0.0.0.0/0
  AllowedIPs = 10.0.X.X/24, 118.37.2.0/24, 192.168.118.0/24
  Endpoint = <ddns>:41821
  PersistentKeepalive = 25
Mobile
  • WireGuard App에서 QR을 활용
PC
Reference & Guidelines (NOTE)

AllowedIPs의 이해

  • 클라이언트에서 요청하는 목적지 트래픽의 IP가 Allowed에 속해 있을때 터널을 사용한다.

    • All: 0.0.0.0/0

      – 모든 트래픽 터널링시에 DNS 쿼리하지 못할 수 있으므로 Interface에 DNS = 8.8.8.8, 1.1.1.1 선언해준다.

    • VPN대역 (필수): 10.0.X.X/24
    • WAN대역 (내 설정 확인): 118.37.2.0/24
  • peer 생성기쪽에 있는 config를 복사하여 Tunnel 구성

Issues
포트 포워딩 추가
  • WAN Interface: WireGuard Instance
  • 위와 같이 구성했다면 WAN 주소:41821 포워딩 필요
  • 참고

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

상태 확인
Feature: WAN 서비스 포트 보안 ( Dest WAN )
  • 인터페이스 추가

    • 참고:
    • 터널 인터페이스이므로, IPv4 구성유형 등을 없음으로 활성만 하기.
  • Client Setup

  • VPN 대역과 WAN 대역 허용
    • AllowedIP = 10.0.X.X/24, 118.37.2.0/24
  • VPN Interface: Service Port
Reference & Guidelines (NOTE)

WireGuard Instance 외의 모든 포트는 WAN에 노출하지 않는다.

  • AS-IS 포트포워딩 정책:
    • 인터페이스: WAN
    • 출발지: any
    • 목적지: WAN 주소
    • 대상 IP 리디렉션: 단일호스트 또는 네트워크
  • TO-BE 포트포워딩 정책 (Dest WAN):

    • 인터페이스: VPN1
    • 출발지: VPN1 net
    • 목적지: WAN 주소
    • 대상 IP 리디렉션: 단일호스트 또는 네트워크

    예시)

Feature: WAN 서비스 포트 보안 ( Dest New Subnet ) (DNS용)
Reference & Guidelines (NOTE)

새로운 NAT 대역을 임의로 정의한다.

  • 기존 192.168.1.0/24 를 사용하면 내부 wifi에서 접근시 dhcp 내부망을 우선적으로 잡아서 접근이 불가해진다.
  • 휴대폰의 경우 wifi 접속되어있어도 접속이 되던데 이문제로 시간을 꽤 허비했다. 아마 내부망 우선 접근이 불가해서 LTE를 사용한것으로 생각된다.
  • 내 경우 192.168.118.0/24 대역을 정의했다.

장점

  • IP를 나눌수 있어서 하찮은 포트들을 없앨 수 있다.
  • 사설 DNS 바인딩이 가능해진다.
  • SSL 구성이 가능해진다.

단점

  • WAN에 비해 귀찮다.

  • Client Setup

  • VPN 대역과 WAN 대역, 신규서브넷 허용
    • AllowedIP = 10.0.X.X/24, 118.37.2.0/24, 192.168.118.0/24
  • VPN Interface: Service Port
  • 포트포워딩 정책 (Dest new Subnet):

    • 인터페이스: VPN1
    • 출발지: VPN1 net
    • 목적지: 192.168.118.1 ~ 192.168.118.255 범위 내에서 자유롭게 구성 (단일 호스트)
    • 대상 IP 리디렉션: 단일호스트 또는 네트워크

    예시)

  • DNS Setup

  • SSL Setup

CLI

Comments

Leave a Reply

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