QNAP NAS 서버에 Wireguard VPN 서버를 설치하고 접속하는 방법

QNAP NAS에 WireGuard VPN 서버를 설치하고 사용하는 방법에 대해 다룹니다.
QNAPWireGuardVPN망분리보안
avatar
2025.04.14
·
16 min read

기존에 귀찮아서 내부망/외부망을 별도로 구분하지 않고 QTS 관리자 페이지를 외부에 노출시키는 위험한 방식을 사용하고 있었고, 슬슬 보안을 강화해야겠다고 생각했으며, 내부망에서만 접근 가능하도록 설정해야 할 서비스 몇가지를 준비하며 가장 필요했던 VPN 서버를 가동하기로 했다."

이 글에서는 QNAP NAS를 Wireguard 서비스를 이용해 VPN을 구성하고, 외부 클라이언트에서 내부 네트워크 대역 (172.30.1.0/24)에 안전하게 접속할 수 있도록 구성한 과정을 가이드라인으로 작성했습니다.

아래 유튜브 영상은 제가 해당 글을 작성하면서 큰 도움을 받은 자료입니다.

글보다 영상이 편하시다면, 아래 영상을 참조하시면 됩니다.

VPN 서버로 WireGuard를 선택하게 된 이유

5126

코드 간결성, 취약점 발생 최소화

타 VPN 서비스 대비 간결한 코드 (약 4000줄 정도로 이루어짐), 이러한 구성은 버그 발생을 최소화하고 이는 취약점 발생 확률을 최소화합니다. 즉 VPN 서비스에서 취약점이 발견 될 경우 저의 모든 네트워크 대역을 침투할 수 있는 취약한 구성이기에, 취약점 발생 확률이 가장 적은 서비스를 선택해야했습니다.

OS 커널단에서 실행되는 서비스, 즉 굉장히 빠른 서비스를 제공함

QNAP NAS는 당연히 저전력 서버인만큼 최소한의 한정적인 자원 내에서 원할하게 네트워크 트래픽을 처리 할 수 있는 서비스를 선택해야했습니다.

WireGuard는 커널단에서 돌아가기때문에 이런 제 니즈를 충족하기에 적합하다고 생각했습니다. 일전에 OpenVPN을 사용했던 적이 있었는데, 느리다는 느낌을 받지는 못했지만 레퍼런스상 OpenVPN 대비 3~4배 가량 빠르다고 합니다.

일단 무엇보다 설정을 디테일하게 만질 수 있고 UI 인터페이스가 현대적이라는 느낌이 들어서 만족스러웠습니다.

구성 개요

5127
  • VPN 서버: QNAP NAS (Wireguard 구동)

  • VPN 클라이언트: 외부 PC, 랩탑, 모바일 등

  • 내부 네트워크: QNAP이 위치한 사설망 (172.30.1.0/24)

주요 목적:

1. WireGuard 서버 구성

QVPN 서버 기본 설정

먼저 QNAP NAS에서 WireGuard VPN 서비스를 활성화 하기 위해서는 QNAP App Center에서 QVPN Service 패키지를 설치하고 실행해야 합니다.

5122

QVPN Service > VPN 서버 > WireGuard에서 "키쌍 생성" 버튼을 클릭하면 NAS에 고유한 개인키와 공개키를 발급받을 수 있습니다.

서버 이름: 설정에 영향을 주지 않습니다. 원하는 서버 이름을 사용하시면 됩니다.

개인키 및 공개키: 키쌍 생성 버튼을 통해 자동으로 설정됩니다.

IP 주소: 기본적으로 설정된 IP 주소를 사용하는것을 추천합니다.

수신 대기 포트: 추후에 VPN을 외부에서 접속하기 위해 포트포워딩을 해줘야합니다. 이 부분 역시 보안상 굉장히 민감한 상황이 아니라면 기본 포트를 사용해도 됩니다.

네트워크 인터페이스: VPN 서버의 아웃바운드 네트워크를 선택합니다. 서버 상황에 따라 자동으로 설정되도록 설정되어있으니 그대로 사용하셔도 됩니다.

DNS 서버: 말그대로 DNS 서버를 설정합니다. 저는 클라우드 플레어의 DNS인 1.1.1.1 을 사용하고 있습니다. 원하시는 DNS를 찾아 선택하시면 되고, 구글의 DNS인 8.8.8.8 을 사용하셔도 됩니다.

2. WireGuard 서버 피어 설정

2.1 WireGuard 클라이언트를 PC 혹은 Mac에 설치 후 클라이언트 추가 버튼을 통해 다음 인터페이스에 접근합니다.

5123

위 화면에서 우리는 Name 필드 바로 아래에 "공개키" 영역을 확인할 수 있습니다. 우선 저의 경우 랜덤 생성된 공개키가 qW9K7NbBHzdo+ArnwSfxsfRHmSO4TwpJDPK1vAx8oEk= 입니다. (이는 매번 랜덤한 값이 생성되기 때문에 본인의 공개키를 사용하셔야 합니다.)

2.2 공개키 값을 복사하고 다시 QVPN Service로 돌아가서 "피어 추가"를 진행합니다.

5124

피어 이름은 원하시는대로 설정하시고, 방급 복사해두었던 공개 키를 넣습니다.

다른 가이드에서는 고급 설정을 건드리기도 하는데, 대부분의 경우 혼란만 생기고 수정할 필요가 없습니다. 우리는 다른 값을 건드리지 말고 "적용" 버튼을 눌러서 새로운 피어를 추가합니다.

2.3 이제 다시 WireGuard 클라이언트로 돌아와서 수정중이던 터널 설정을 다음과 같이 수정합니다.

[Interface]
PrivateKey = XXXXXX... # 랜덤 생성된 고유키, 설정 파일을 생성했을 때 있던 그대로 유지
Address = 198.18.7.2/32 # 피어 추가 페이지의 허용된 IP 항목
DNS = 1.1.1.1 # 서버 설정에서 입력했던 DNS

[Peer]
PublicKey = <서버 설정에서 생성된 공개키>
AllowedIPs = 0.0.0.0/0, 198.18.7.1/32, 172.30.1.0/24
Endpoint = <본인 서버의 공인아이피:51820> # 51820은 포트를 의미하며 기본 포트, 포트번호를 수정했을 경우 이부분도 수정해야함
PersistentKeepalive = 10 #세션 유지 시간, 피어 추가에서 수정하지 않았으면 기본값 10 그대로 사용

위 설정파일에서 대부분은 주석 처리된 설명을 참조하여 수정하면 됩니다.

다만 깊게 살펴봐야할 부분은 AllowedIPs 입니다. 기본적으로 허용해야 할 네트워크 대역은 0.0.0.0/0 이며, 콤마로 추가해준 다른 부분들은 VPN에서 접속 클라이언트들에게 분배해주는 네트워크 대역인 198.18.7.1/32 이며, 그 다음에 오는 172.30.1.0/24 부분은 본인의 내부망 네트워크 대역대를 사용해야합니다.

즉 본인이 단순히 VPN을 Proxy 용도로만 사용하겠다면, 0.0.0.0/0AllowedIPs에 추가해도 되지만, 내부망에 접근하여 라우터 설정이나, 특정한 서비스에 직접적 접근을 하기 위해서는 VPN 대역과 내부망 대역을 추가해야합니다.

단순 프록시 용도 X, 내부망에 직접적 접근을 하겠다면

다음 설정 방법을 따르면 내부망에 접근 가능하도록 설정할 수 있습니다.

보통 본인의 네트워크 대역대는 사용하고 있는 벤더나 용도에 따라서 달라질 수 있습니다.

대역대

설명

192.168.0.0/16

가장 일반적 (예: 192.168.0.1)

10.0.0.0/8

일부 기업/고급 설정용

172.16.0.0/12

비교적 드물게 사용

아마도 이 글을 읽으시는 분들 중 대다수는 이미 본인의 네트워크 대역대를 알고 계실 가능성이 높습니다. 그래도 우선 본인의 네트워크 대역대를 확인하는 방법을 알아보도록 하겠습니다.

Windows

CMD를 실행하고 다음 명령을 실행합니다.

ipconfig

여러 정보들이 나오는데, 다음과 같은 정보가 함께 출력될것입니다.

이더넷 어댑터 이더넷:

   IPv4 주소 . . . . . . . . . : 192.168.0.23
   서브넷 마스크 . . . . . . . : 255.255.255.0
   기본 게이트웨이 . . . . . . : 192.168.0.1

이 경우 네트워크 대역대는 192.168.0.1 ~ 192.168.0.254 입니다.

Linux 또는 Mac

터미널을 실행하고 다음 명령을 실행합니다.

ipconfig getifaddr en0    # Wi-Fi 사용 시
ipconfig getifaddr en1    # Ethernet 사용 시

다음과 같은 정보가 출력될것입니다.

$ ipconfig getifaddr en0
192.168.219.15

$ ipconfig getoption en0 subnet_mask
255.255.255.0

위 정보들을 바탕으로 본인의 네트워크 전체 대역을 마지막 값으로 넣어주면 됩니다.

자 이제 VPN 서버 설정과 클라이언트 설정은 끝났습니다. 이제 VPN 클라이언트를 실행하면 정상적으로 패킷들이 NAS 서버를 거쳐서 지나가게 되었습니다.

다만 위에 상술했듯, 본인이 내부망에 직접적으로 제어하기까지를 원하시는 분들은 다음 챕터를 따라가시면 됩니다. (단순 프록시 용도로만 사용하실 예정이라면 여기까지만 보시면 됩니다.)

3. 내부망 접근을 하기 위한 추가 가이드라인

VPN을 통해 들어온 트래픽이 NAS를 거쳐 내부망으로 전달되기 위해서는, NAS에서 IP 포워딩을 활성화 해야 합니다.

3.1 NAS IP 포워딩 설정하기

만약 SSH 사용 설정이 안되어있으시다면 활성화 하시고, 이 말이 무슨 말인지 모르시겠다면, 검색을 하셔서 찾아보신 뒤 다음 챕터를 따라가시기 바랍니다.'

먼저 QNAP NAS의 쉘에 SSH로 접속을 하고 다음 명령을 실행합니다.

sudo echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

3.2 NAT (Masquerade) 설정

VPN 클라이언트가 내부 네트워크 장비와 통신할 수 있도록 하기 위해, NAT 규칙을 추가해줍시다.

sudo iptables -t nat -A POSTROUTING -s 198.18.7.0/24 -o eth0 -j MASQUERADE
  • VPN 대역(198.18.7.0/24)에서 내부망으로 나가는 패킷의 출발지 IP를 NAS의 eth0 IP로 변환합니다.

  • 내부 장비들이 클라이언트의 IP를 알지 못하므로, MASQUERADE를 통해 응답이 가능하도록 설정합니다.

※ eth0은 NAS의 내부 네트워크 인터페이스이며, 환경에 따라 br0 등일 수 있습니다. ip a 명령어로 확인 가능합니다.'

위 단계까지 정상적으로 완료 하셨다면, 아마도 내부 라우터 관리자 페이지등에 접속이 가능할겁니다.

다만 제가 직접 겪은 문제가 하나 있는데 바로 Firewall (방화벽) 설정 문제입니다.
지금까지 설정했던것에 문제가 없으면 NAS에서 실행되고 있는 내부 서비스들에 직접적 접근이 가능해야하는데, SSH를 비롯하여 QTS 웹 인터페이스 등 NAS에서 실행되고 있는 서비스들에 접근이 불가능했습니다.

3.3 QuFirewall 규칙 추가

원인은 제가 사용하고 있던 QNAP NAS의 방화벽 애플리케이션인 QuFirewall 때문이었습니다. (만약 QuFirewall이 아닌 다른 방화벽 애플리케이션을 사용중이시라면 해당 애플리케이션의 규칙을 수정해주세요)

5128

QuFirewall을 실행하고 사용중인 방화벽 프로파일에 다음과 같은 규칙을 추가합니다.

5129

소스를 IP, IP 서브넷으로 설정하고 IP 주소를 QVPN의 IP로 입력합니다. 또한 서브넷 마스크를 255.255.255.0 (/24) 로 설정하고 적용 버튼을 클릭하여 규칙을 추가합니다.

또한 해당 규칙을 우선 순위 목록에서 가장 1번째로 설정하여 다른 규칙보다 먼저 우선시되도록 수정합니다.

위 과정까지 마쳤다면 이제 정상적으로 내부망에 접근이 가능해집니다.







- 컬렉션 아티클