Category (Click)
개발보드 덕질하기

[TrueNAS SCALE] 사설 VPN GUI 툴, WG Easy(WireGurad) 설치 및 문제해결

 차완기 - @12/3/2023, 5:13:00 PM

NAS 원격 접속

TrueNAS는 확장 프로그램 설치를 통해 WebDAV나 File Browser 등의 NAS 원격 접속 수단을 제공합니다.
저 역시 설치형 클라우드 사설 서버인 NextCloud를 외부 파일 공유 목적으로 사용하고는 하는데요, 이런 특별한 경우가 아닌 나머지 모든 파일은 SMB를 통해 로컬 상에서만 접근이 가능하도록 해두었습니다.
덕분에 외부에서 파일에 접근하기 위해서는 VPN을 사용해야 했는데요, TrueNAS 23.10에서 OpenVPN Server Service가 삭제되어 VPN 역할을 할 App(확장)을 직접 설치해야 했습니다.
App Discover에서 VPN을 검색했을 때 대략 3개의 앱이 나왔고, 저는 이 중 WG Easy를 사용하기로 했습니다. (이미 설치해 사용중이라 Installed라 나오네요)

WG Easy

WG Easy(WireGuard Easy)는 오픈소스 VPN 프로토콜인 WireGuard를 GUI상에서 쉽게 제어할 수 있도록 도와주는 도커 이미지입니다. WireGuard와 웹 UI가 세트로 묶여있는 형태로, 아주 간편하게 VPN 계정을 생성하고 접속할 수 있습니다.
설치 하고 포트만 뚫어주면 모든 게 끝날 줄 알았는데, 예상치 못하게 삽질을 하게 되어 설치 과정을 정리하게 되었습니다.

설치

다른 App의 설치과정과 동일하지만 앞서 설명한 삽질을 방지하기 위해 몇 가지 설정해야 할 게 있습니다.
TrueNAS-SCALE-23.10.0.1에서 wg-easy 1.0.12 버전을 기준으로 설명합니다.
현재 기준으로 2.0.0이 업데이트되었지만, 설치가 업데이트가 불가능한 문제가 있습니다. 만약 2.0.0으로 업데이트되어 해결된다면 수정하도록 하겠습니다.
아래 자료를 참고하였습니다.

Hostname or IP

WG-Easy ConfigurationHostname or IP를 공인 IP에 맞게 설정합니다.
또한 Clients DNS Server를 google의 DNS 서버인 8.8.8.8로 변경합니다.

Additional Environment Variables

네트워크 인터페이스 이름이 eth0으로 기본적으로 설정되어 있는 반면, TrueNAS는 다른 이름의 인터페이스를 사용하는 경우가 많아 트래픽을 받거나 보내지 못하는 문제가 있습니다.
이를 해결하기 위해 우선 NAS의 네트워크 인터페이스 이름을 확인합니다. Network 탭에서 확인할 수 있으며, 저의 경우 enp1s0로 되어있는 것을 확인할 수 있습니다.
이걸 메모해둔 후 WG-Easy Configuration 탭의 Additional Environment Variables에서 아래 내용을 추가해줍니다. 이때 빨간색 밑줄로 표시한 부분을 앞서 메모해둔 네트워크 인터페이스 이름으로 변경합니다.
Name
WG_POST_UP
Plain Text
복사
Value
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp1s0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
Plain Text
복사
여기까지 해두면 잘 작동하기는 하지만, 그 다음번 연결 시도가 실패하는 경우가 가끔 있습니다. 이걸 해결하기 위해 마찬가지로 아래 내용을 추가합니다.
Name
WG_PRE_UP
Plain Text
복사
Value
iptables -t nat -F; iptables -F;
Plain Text
복사
모두 설정하면 이런 느낌이 되겠죠.

Network Configuration

다음으로 포트를 설정합니다. 첫 번째 포트는 VPN 서비스를 위해 외부에 노출되는 포트이고, 두 번째 포트는 관리를 위한 웹 UI 포트입니다.
이상하게도 설치 과정에서는 두 설정 모두 Web Port로 나오면서 포트를 지정하더라도 저장되지 않는 문제가 있습니다. 우선은 기본값 그대로 둔 후 Install을 하고, Edit으로 들어와 포트를 수정해주어야 합니다.
WireGuard UDP Node Port for WG-Easy: 51820
WebUI Node Port for WG-Easy: 51821
또한 공유기 상에서 51820 포트를 UDP로 포트포워딩합니다.

WireGuard 세팅

여기까지 진행한 후 웹 UI로 들어오게 되면 이런 화면이 나옵니다.
Client를 추가한 후 스마트폰에 WireGuard 앱을 설치하고 QR코드를 스캔하면 로그인 과정 없이 VPN이 바로 등록됩니다.