opnsense로 NordVPN 연결

NordVPN은 WireGuard 프로토콜을 이용하여 NordLynx 만들었다. 이말은 WireGuard을 사용할수 있다는 말이다.
그치만 좀 더 편하게 사용하기 위해서는 집에 있는 라우터인 OPNsense 를 사용하여 특정 영역 아이피로 갈경우 특정 나라의 VPN을 자동으로 사용할수 있다는 점이다.
OPNsense에 WireGuard 설치해야하지만 다행히 WireGuard를 플러그인을 지원한다.

그럼으로 준비해야하는건 NordVPN의 private KEY와 OPNsense 라우터 세팅만 하면된다.
- privateKey 얻기
아래 사이트에 들어가 access-token을 얻습니다. 저같은 경우는 30일 만료가 만료안함을 선택하였습니다.
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"
이 토큰값을 잘 보관합니다.
그 후 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에 입력을 해줄겁니다.
아래의 처럼
Tnneal address에 10.5.0.2/16을 넣고 private key에는 아까 API로 얻은 키 값을 넣습니다.

다음은 Peer값입니다. Peer 값은 위에 메모에 있는걸 그대로 입력해주면됩니다.
opnsense -> VPN -> WireGuard -> Peer에 추가 해둡니다.

이로써 기본적인 WireGuard의 기본적인건 끝났습니다.
이제 구글이나 특정 사이트에 접속하면 VPN 접속하게 만들어야합니다.
Firewall -> Aliases -> Add 에 눌러 Content를 눌러 아래를 눌러 저는 다음처럼 세팅하였습니다.

Content : https://www.gstatic.com/ipranges/goog.json
Path expression : .prefixes[] | .ipv4Prefix // .ipv6Prefix인터페이스 추가
Interfaces: Assignments 이동

WireGuard 인스턴스 를 선택하고 + 버튼을 클릭하여 새 인터페이스로 추가합니다.

게이트 웨이
System: Gateways: Configuration에 가서 추가

방화벽
Firewall: Rules: LAN 추가
