OPNsense로 NordVPN 연결

NordVPN은 WireGuard 프로토콜을 기반으로 NordLynx를 제공합니다.
즉, NordLynx를 통해 WireGuard를 사용할 수 있으며, OPNsense 라우터와 결합하면 특정 IP 또는 사이트 접속 시 자동으로 VPN을 사용하는 환경을 구성할 수 있습니다.
이 글에서는 NordVPN API로 Private Key 얻기부터 OPNsense WireGuard 설정, 특정 사이트 VPN 자동 연결까지 단계별로 설명합니다.
1. 준비물
- OPNsense 라우터 (WireGuard 플러그인 설치 필요)
- NordVPN 계정
- Shell 환경 (Linux, macOS, WSL 등)
- jq (JSON 파싱 도구, Linux/macOS 기본 설치 가능)
2. NordVPN Private Key 발급
아래 사이트에 들어가 access-token을 얻습니다. 저같은 경우는 만료없음을 선택했습니다.
https://my.nordaccount.com/dashboard/nordvpn/access-tokens/

엑세스 토큰을 얻었다면 아래의 쉘 명령어에서 accessToken을 변경하여 private key를 얻습니다.
#!/bin/bash
# Access token 설정
accessToken="<copy-your-token>"
echo "Getting the Private key..."
# NordVPN API 요청 (curl 사용)
response=$(curl -s -u "token:${accessToken}" "https://api.nordvpn.com/v1/users/services/credentials")
# private key 추출 (jq 사용)
privateKey=$(echo "$response" | jq -r '.nordlynx_private_key')
# 결과 출력
echo "Private Key:"
echo "$privateKey"
- 출력된 Private Key는 안전하게 보관합니다.
- 이 키는 OPNsense WireGuard 설정에서 필요합니다.
3. NordVPN 서버 구성 파일 다운로드
- NordVPN 구성 파일 제공 사이트
- 원하는 서버 선택 (예: 일본
jp429) - 다운로드 후 파일 내용 확인:
그 후 https://nord-configs.selfhoster.nl/ 에 들어가 원하는 프로필을 다운받으면 됩니다.

제가 받은것 일본 429서버이며 아래와 같습니다.
[Interface]
PrivateKey=
Address=10.5.0.2/16
DNS=103.86.96.100
[Peer]
PublicKey=SAio0Z0suFlRfmydzPdcn6MamqS7Mq4pSOm2YmJkLSs=
AllowedIPs=0.0.0.0/0,::/0
Endpoint=jp429.nordvpn.com:51820
PersistentKeepalive=25이 값들은 추후 opnsense에 입력을 해줄겁니다.
4-2. WireGuard 인터페이스 추가
VPN → WireGuard → Local클릭 →+ Add- Interface 설정:
- Tunnel Address: 10.5.0.2/16 (프로필 InterFace의 Address)
- Private Key: NordVPN API로 발급받은 Private Key

4-3. Peer 설정 추가
VPN → WireGuard → Peers클릭 →+ Add- NordVPN Peer 정보 입력:
- PublicKey:
SAio0Z0suFlRfmydzPdcn6MamqS7Mq4pSOm2YmJkLSs= - AllowedIPs:
0.0.0.0/0,::/0 - Endpoint:
jp429.nordvpn.com:51820 - PersistentKeepalive:
25
- PublicKey:

4-4. 인터페이스 할당
Interfaces → Assignments→ WireGuard 인스턴스 선택 →+Add- 새 인터페이스로 추가 → 활성화

4-5. 게이트웨이 설정

System → Gateways → Configuration→+Add- 인터페이스로 방금 생성한 WireGuard 인터페이스 선택
이로써 기본적인 WireGuard의 기본적인건 끝났습니다.
이제 구글이나 특정 사이트에 접속하면 VPN 접속하게 만들어야합니다.
5. 특정 사이트 접속 시 VPN 사용
5-1. 사이트 IP 범위 Aliases 생성
Firewall → Aliases → Add- 이름 설정:
GoogleIPs - Content type:
URL - Content:
https://www.gstatic.com/ipranges/goog.json - Path expression:
.prefixes[] | .ipv4Prefix // .ipv6Prefix
→ 이 방법으로 구글 IP 자동 업데이트 가능

Content : https://www.gstatic.com/ipranges/goog.json
Path expression : .prefixes[] | .ipv4Prefix // .ipv6Prefix5-2. LAN 방화벽 규칙 설정
Firewall → Rules → LAN- 새 규칙 추가:
- Source:
LAN subnet - Destination:
Alias→GoogleIPs - Gateway: 방금 만든 WireGuard 게이트웨이
- Source:
- 규칙 위치: 일반적으로 기존 LAN allow 위쪽에 배치
이제 LAN 내부에서 구글 서비스 접속 시 NordVPN으로 자동 연결됩니다.
개인적으로 NordVPN을 사용 중인데, 지금 샵백에서 캐시백 이벤트가 진행되고 있어 조금이나마 비용을 절약할 수 있습니다.
관심 있으신 분은 확인해 보세요: NordVPN 이벤트 페이지