WireGuard VPN으로 외부에서 사무실 서버 접속하기
사무실에 서버를 두고 있다면, 외부에서 접속해야 할 일이 반드시 생깁니다. 포트포워딩으로 SSH를 열어두는 건 보안상 위험하고, 클라우드 VPN은 비용이 나가죠.OPNsense에 WireGuard를 설정해서, 노트북과 스마트폰에서 사무실 내부 서버에 안전하게 접속하는 방법을 공유합니다.
4,000줄
WireGuard 코드량
~1ms
핸드셰이크 지연
500Mbps+
처리량 (N100)
UDP
프로토콜
1왜 VPN이 필요한가
외부에서 사무실 서버에 접속하는 방법은 여러 가지가 있지만, 대부분 보안이나 편의성 면에서 문제가 있습니다.
| 접속 방법 | 보안 | 편의성 | 문제점 |
|---|---|---|---|
| 포트포워딩 | 낮음 | 높음 | SSH 포트가 외부에 노출, 브루트포스 공격 대상 |
| 클라우드 VPN | 높음 | 높음 | 월 과금, 트래픽이 외부 서버 경유 |
| 원격 데스크톱 | 보통 | 보통 | 서버 CLI 환경에서 불필요한 GUI 오버헤드 |
| 자체 VPN (WireGuard) | 높음 | 높음 | 초기 설정만 하면 비용 없이 안전한 접속 |
VPN의 핵심 가치
VPN을 연결하면 외부에 있어도 마치 사무실 내부 네트워크에 연결된 것처럼 동작합니다. 서버의 내부 IP로 직접 접속할 수 있고, 모든 통신은 암호화됩니다. 원격에서 서버에 접속할 때 SSH 키 인증을 함께 사용하면 보안을 더욱 강화할 수 있습니다.
2WireGuard vs OpenVPN 비교
VPN 프로토콜 선택지는 사실상 WireGuard와 OpenVPN 둘입니다. 결론부터 말하면, 2026년 기준으로 WireGuard가 거의 모든 면에서 우위입니다.
| 항목 | WireGuard | OpenVPN |
|---|---|---|
| 코드량 | ~4,000줄 | ~100,000줄 |
| 프로토콜 | UDP | UDP/TCP |
| 속도 | 매우 빠름 | 보통 |
| 연결 시간 | ~100ms | ~10초 |
| 배터리 소모 | 적음 | 많음 |
| 설정 복잡도 | 키 페어만 | 인증서 + CA 관리 |
| 커널 통합 | Linux 커널 내장 | 유저스페이스 |
OpenVPN이 유리한 경우
TCP 443 포트를 이용한 방화벽 우회가 필요하거나, 클라이언트 인증서 기반의 세밀한 접근 제어가 필요한 경우에는 OpenVPN이 더 나을 수 있습니다. 하지만 일반적인 사무실 원격접속 용도라면 WireGuard가 적합합니다.
3OPNsense WireGuard 서버 설정
OPNsense 24.x부터 WireGuard가 기본 포함되어 있습니다. 별도의 플러그인 설치 없이 웹 인터페이스에서 바로 설정할 수 있습니다.
Step 1: 서버 인스턴스 생성
# OPNsense 웹 인터페이스 # VPN > WireGuard > Instances [+] 새 인스턴스 추가 Name: wg0 Listen Port: 51820 Tunnel Address: 10.x.30.1/24 # VPN 서브넷 게이트웨이 # 키 페어는 자동 생성됨 (Generate 버튼) # 저장 후 인스턴스 활성화
Step 2: 방화벽 룰 추가
# WAN 인터페이스에 WireGuard 포트 허용 # Firewall > Rules > WAN Action: Pass Protocol: UDP Destination Port: 51820 Description: Allow WireGuard VPN # WireGuard 인터페이스에서 내부 접속 허용 # Firewall > Rules > WireGuard (wg0) Action: Pass Source: 10.x.30.0/24 (VPN 서브넷) Destination: 10.x.10.0/24 (서버 서브넷) Port: 22, 443 # SSH와 HTTPS만 허용 Description: VPN to Server access
Step 3: 피어(클라이언트) 등록
# VPN > WireGuard > Peers [+] 새 피어 추가 Name: laptop-user1 Public Key: (클라이언트에서 생성한 공개키) Allowed IPs: 10.x.30.10/32 # 이 클라이언트에 할당할 IP Tunnel Address: (비워둠) # 각 기기마다 피어를 추가 # laptop-user1: 10.x.30.10 # phone-user1: 10.x.30.11 # laptop-user2: 10.x.30.12
4클라이언트 설정 — 노트북/모바일
노트북 (Linux/macOS/Windows)
# 키 페어 생성 (Linux/macOS) wg genkey | tee privatekey | wg pubkey > publickey # 설정 파일 생성: /etc/wireguard/wg0.conf [Interface] PrivateKey = <클라이언트 개인키> Address = 10.x.30.10/32 DNS = 1.1.1.1 [Peer] PublicKey = <OPNsense 서버 공개키> Endpoint = office.example.com:51820 AllowedIPs = 10.x.10.0/24, 10.x.30.0/24 PersistentKeepalive = 25 # 연결 sudo wg-quick up wg0 # 연결 해제 sudo wg-quick down wg0 # 연결 상태 확인 sudo wg show
모바일 (iOS/Android)
모바일에서는 WireGuard 공식 앱을 사용합니다. 설정 파일을 QR 코드로 변환하면 카메라로 스캔하는 것만으로 설정이 완료됩니다.
# QR 코드 생성 (서버에서) # qrencode 패키지 설치 필요 qrencode -t ansiutf8 < /etc/wireguard/phone-user1.conf # 또는 PNG 파일로 저장 qrencode -o phone-vpn.png < /etc/wireguard/phone-user1.conf # 모바일 앱에서 [+] > QR코드로 스캔
AllowedIPs 설정 주의
AllowedIPs = 0.0.0.0/0으로 설정하면 모든 트래픽이 VPN을 경유합니다(풀 터널). 사무실 서버에만 접속하려면 서버 서브넷 IP만 지정하세요(스플릿 터널). 일반 인터넷은 기기의 원래 경로로 나갑니다.
5키 관리와 접속자 추가
WireGuard는 SSH처럼 공개키/개인키 쌍으로 인증합니다. 새 사용자가 추가되면 키를 생성하고 서버에 피어를 등록하면 됩니다.
1인 1키 원칙
하나의 키 페어를 여러 기기에 공유하지 않습니다. 기기마다 별도 키를 생성하면 분실/퇴사 시 해당 키만 삭제할 수 있습니다.
개인키는 절대 공유 금지
개인키는 생성한 기기에만 보관합니다. 서버에는 공개키만 등록하세요. 개인키가 유출되면 즉시 새 키 페어를 생성해야 합니다.
접속자 삭제는 피어 제거
퇴사자나 분실 기기의 접속을 차단하려면 OPNsense에서 해당 피어를 삭제하면 됩니다. 즉시 효력이 발생합니다.
# 새 사용자 추가 절차 요약 # 1. 사용자 기기에서 키 생성 wg genkey | tee user2-private.key | wg pubkey > user2-public.key # 2. 공개키를 관리자에게 전달 (개인키는 본인만 보관) # 3. OPNsense에서 피어 추가 # VPN > WireGuard > Peers > [+] # Name: laptop-user2 # Public Key: (전달받은 공개키) # Allowed IPs: 10.x.30.12/32 # 4. 사용자에게 설정 파일 전달 # Endpoint, 서버 공개키, 할당 IP 정보 포함
6보안 강화 설정
WireGuard 자체의 암호화는 강력하지만, 운영 측면에서 추가로 챙길 보안 항목들이 있습니다.
| 항목 | 설정 | 이유 |
|---|---|---|
| 포트 변경 | 51820 대신 비표준 포트 | 포트 스캐닝 회피 |
| 접속 IP 제한 | VPN에서 서버 서브넷만 허용 | 최소 권한 원칙 |
| 키 정기 교체 | 6개월마다 키 페어 재생성 | 장기 키 노출 방지 |
| 로그 모니터링 | OPNsense 방화벽 로그 확인 | 비정상 접속 시도 탐지 |
| DDNS 사용 | 고정 IP 없으면 DDNS 설정 | 유동 IP 환경에서 안정적 접속 |
Pre-shared Key 추가 권장
WireGuard는 피어 간 Pre-shared Key(PSK)를 추가로 설정할 수 있습니다. 양자 컴퓨팅 대비용으로 권장되며, 설정도 간단합니다.wg genpsk 명령어로 생성하여 양쪽에 등록하면 됩니다.
7자주 발생하는 문제와 해결
연결은 되는데 내부 서버에 접속이 안 됩니다
OPNsense 방화벽 룰에서 WireGuard 인터페이스 → 서버 서브넷 허용 룰을 확인하세요. 룰 순서도 중요합니다. 허용 룰이 차단 룰보다 위에 있어야 합니다.
핸드셰이크가 실패합니다
서버와 클라이언트의 공개키가 정확히 매칭되는지 확인하세요. 키에 공백이나 줄바꿈이 포함되면 인증에 실패합니다. WAN 방화벽에서 UDP 포트가 허용되었는지도 확인하세요.
모바일에서 자주 끊깁니다
PersistentKeepalive = 25를 설정하세요. NAT 뒤에 있는 기기는 일정 시간 통신이 없으면 매핑이 해제되어 연결이 끊깁니다. 25초마다 킵얼라이브 패킷을 보내면 해결됩니다.
유동 IP 환경에서 접속이 안 됩니다
OPNsense에 DDNS(DuckDNS, Cloudflare DDNS 등)를 설정하고, 클라이언트 Endpoint를 도메인으로 지정하세요.
정리
WireGuard VPN 구축 체크리스트
- OPNsense WireGuard 인스턴스 생성 — 포트, 서브넷, 키 페어 설정
- WAN 방화벽에 WireGuard UDP 포트 허용 룰 추가
- VPN 인터페이스에서 서버 서브넷 접속 허용 룰 추가
- 기기별 키 페어 생성 — 1인 1키 원칙 준수
- 클라이언트 설정 파일 배포 — 모바일은 QR 코드 활용
- AllowedIPs로 스플릿/풀 터널 선택
- PersistentKeepalive 설정으로 NAT 환경 대응
- 정기적인 키 교체와 퇴사자 피어 삭제 관리
WireGuard는 설정이 간단하고 성능이 뛰어나서, 소규모 팀의 원격접속 용도로 적합합니다. N100 미니PC에서도 500Mbps 이상의 VPN 처리량을 보여주며, 모바일 환경에서의 배터리 효율도 OpenVPN 대비 확연히 좋습니다.
본 글은 OPNsense 24.x 환경에서의 구축 경험을 기반으로 작성되었습니다. IP 주소, 포트 번호, 도메인 등은 예시이며 실제 환경에 맞게 변경해야 합니다. WireGuard 버전과 OPNsense 버전에 따라 설정 방법이 다를 수 있습니다. 본 콘텐츠의 비상업적 공유는 자유이나, 상업적 이용 시 문의 페이지를 통해 연락 바랍니다.
안전한 원격 근무 환경이 필요하신가요?
Treeru는 WireGuard VPN 설계부터 구축, 사용자 관리까지 원스톱으로 지원합니다. 어디서든 사무실처럼 안전하게 일할 수 있는 환경을 만들어 드립니다.
VPN 구축 상담댓글
(4개)로그인하면 댓글을 작성할 수 있습니다.
OPNsense에서 WireGuard 플러그인이 기본 포함된 이후로 설정이 훨씬 쉬워졌습니다. 방화벽 룰까지 한 화면에서 관리하는 게 편합니다.
아이폰에서 QR코드로 바로 설정되는 게 인상적이었습니다. 카페에서 작업할 때 항상 VPN 켜두는데, 배터리 소모도 OpenVPN보다 확실히 적습니다.
직원 5명 정도인 소규모 팀에서 이 정도 VPN이면 충분합니다. 매달 클라우드 VPN 비용 내던 걸 이제 자체 구축으로 전환했습니다.
관련 글
© 2026 TreeRU. All rights reserved.
본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.