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

Cover Image

NAS 원격 접속 #

TrueNAS는 확장 프로그램 설치를 통해 WebDAV나 File Browser 등의 NAS 원격 접속 수단을 제공합니다.

저 역시 설치형 클라우드 사설 서버인 NextCloud를 외부 파일 공유 목적으로 사용하고는 하는데요, 이런 특별한 경우가 아닌 나머지 모든 파일은 SMB를 통해 로컬 상에서만 접근이 가능하도록 해두었습니다.

스크린샷 2023-12-03 오후 4.03.36.webp

덕분에 외부에서 파일에 접근하기 위해서는 VPN을 사용해야 했는데요, TrueNAS 23.10에서 OpenVPN Server Service가 삭제되어 VPN 역할을 할 App(확장)을 직접 설치해야 했습니다.

Untitled

App Discover에서 VPN을 검색했을 때 대략 3개의 앱이 나왔고, 저는 이 중 WG Easy를 사용하기로 했습니다. (이미 설치해 사용중이라 Installed라 나오네요)

WG Easy #

screenshot.png

WG Easy(WireGuard Easy)는 오픈소스 VPN 프로토콜인 WireGuard를 GUI상에서 쉽게 제어할 수 있도록 도와주는 도커 이미지입니다. WireGuard와 웹 UI가 세트로 묶여있는 형태로, 아주 간편하게 VPN 계정을 생성하고 접속할 수 있습니다.

설치 하고 포트만 뚫어주면 모든 게 끝날 줄 알았는데, 예상치 못하게 삽질을 하게 되어 설치 과정을 정리하게 되었습니다.

설치 #

다른 App의 설치과정과 동일하지만 앞서 설명한 삽질을 방지하기 위해 몇 가지 설정해야 할 게 있습니다.

💡 TrueNAS-SCALE-23.10.0.1에서 wg-easy 1.0.12 버전을 기준으로 설명합니다.

Untitled

현재 기준으로 2.0.0이 업데이트되었지만, 설치가 업데이트가 불가능한 문제가 있습니다. 만약 2.0.0으로 업데이트되어 해결된다면 수정하도록 하겠습니다.

아래 자료를 참고하였습니다.

Simple guide to official wg-easy app installation on SCALE

Hostname or IP #

WG-Easy ConfigurationHostname or IP를 공인 IP에 맞게 설정합니다.

또한 Clients DNS Server를 google의 DNS 서버인 8.8.8.8로 변경합니다.

Additional Environment Variables #

네트워크 인터페이스 이름이 eth0으로 기본적으로 설정되어 있는 반면, TrueNAS는 다른 이름의 인터페이스를 사용하는 경우가 많아 트래픽을 받거나 보내지 못하는 문제가 있습니다.

스크린샷 2023-12-03 오후 4.45.33.webp

이를 해결하기 위해 우선 NAS의 네트워크 인터페이스 이름을 확인합니다. Network 탭에서 확인할 수 있으며, 저의 경우 enp1s0로 되어있는 것을 확인할 수 있습니다.

이걸 메모해둔 후 WG-Easy Configuration 탭의 Additional Environment Variables에서 아래 내용을 추가해줍니다. 이때 빨간색 밑줄로 표시한 부분을 앞서 메모해둔 네트워크 인터페이스 이름으로 변경합니다.

  • Name

    text
    WG_POST_UP
  • Value

    text
    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;

여기까지 해두면 잘 작동하기는 하지만, 그 다음번 연결 시도가 실패하는 경우가 가끔 있습니다. 이걸 해결하기 위해 마찬가지로 아래 내용을 추가합니다.

  • Name

    text
    WG_PRE_UP
  • Value

    text
    iptables -t nat -F; iptables -F;
Untitled

모두 설정하면 이런 느낌이 되겠죠.

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 세팅 #

Untitled

여기까지 진행한 후 웹 UI로 들어오게 되면 이런 화면이 나옵니다.

Untitled
Untitled

Client를 추가한 후 스마트폰에 WireGuard 앱을 설치하고 QR코드를 스캔하면 로그인 과정 없이 VPN이 바로 등록됩니다.

Untitled