QNAP NAS에서 WireGuard로 원격 접속 구성하기
QNAP NAS에서 Container Station을 활용해 WireGuard 서버를 설치·운영하는 과정을 초보자 관점에서 단계별로 정리한 설치 및 설정
목차
개요
이 글에서는 QNAP NAS에서 WireGuard를 설치하고 서버를 운영하는 과정을 초보자도 이해하기 쉽도록 정리한다. Container Station을 이용한 방법을 중심으로 키 생성, 컨테이너 실행, 방화벽 및 포트포워딩, 클라이언트 구성까지 실무에서 바로 적용 가능한 절차를 제공한다.
사전 준비
필요 조건
- QNAP NAS에 Container Station 설치
- 관리자 권한으로 NAS 접근 가능
- 공인 IP 또는 라우터에서 포트포워딩 설정 가능
- 기본적인 터미널 명령어 사용 가능(키 생성 등)
권장 사항
- NAS 운영체제(QTS) 최신 보안 패치 적용
- 컨테이너 볼륨을 NAS 내부의 고정 경로에 매핑하여 설정 파일 유지
- 관리용 계정과 서비스 계정을 분리하여 사용
WireGuard 설치 흐름
전체 절차는 다음과 같다. 각 단계는 차례대로 진행하면 되며, 중간에 설정값을 기록해 둔다.
- 키 생성(서버/클라이언트)
- 컨테이너용 디렉터리 준비
- Container Station에서 WireGuard 컨테이너 실행
- 라우터에서 포트포워딩 설정
- 클라이언트 구성 및 연결 확인
1. 키 생성
로컬 PC 또는 NAS 터미널에서 키를 생성한다. Linux/macOS 또는 WSL에서 다음 명령어를 사용한다.
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
생성된 파일의 내용은 각각 비공개 키(private)와 공개 키(public)이다. 비공개 키는 안전하게 보관한다.
2. 컨테이너용 디렉터리 준비
NAS에 설정 파일과 Persistent 데이터를 저장할 디렉터리를 만든다. 예: /share/Container/wireguard
mkdir -p /share/Container/wireguard/config
chmod 700 /share/Container/wireguard/config
생성한 디렉터리에 server.conf(또는 컨테이너가 요구하는 형식)을 저장할 수 있다. 하지만 대부분의 공식 이미지나 linuxserver 이미지에서는 환경변수로 키를 주입하거나 매핑된 디렉터리를 사용한다.
3. Container Station에서 컨테이너 실행
Container Station의 GUI를 사용해 이미지를 검색하고 배포할 수 있다. 예시로 linuxserver/wireguard 이미지를 사용한 실행 명령은 다음과 같다. Container Station의 고급 설정에서 동일한 환경변수와 볼륨 매핑을 적용하면 된다.
docker run -d --name=wireguard \
--cap-add=NET_ADMIN --cap-add=SYS_MODULE \
-e PUID=1000 -e PGID=1000 \
-e TZ=Asia/Seoul \
-e SERVERURL=your.public.ip.or.dyndns \
-e SERVERPORT=51820 \
-e PEERS=1 \
-v /share/Container/wireguard/config:/config \
-p 51820:51820/udp \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--restart unless-stopped linuxserver/wireguard
주의: SERVERURL은 공인 IP 또는 DDNS 주소로 설정한다. Container Station에서 포트와 볼륨을 정확히 매핑해야 한다.
4. 컨테이너 초기 설정
컨테이너가 첫 실행 시 자동으로 설정 파일과 클라이언트 구성을 생성한다. 생성된 파일은 /share/Container/wireguard/config 내부에 위치한다. 컨테이너 로그를 확인하여 서버 공용키와 클라이언트 QR 코드 또는 .conf 파일 경로를 확인한다.
5. 라우터 포트포워딩 및 방화벽
외부에서 접속하려면 라우터에서 UDP 포트(기본 51820)를 NAS IP로 포워딩해야 한다. 포트포워딩 설정 예시는 라우터 제조사에 따라 다르므로, 내부 IP(예: 192.168.1.50)를 고정한 뒤 포트포워딩 규칙을 추가한다.
- 포트 프로토콜: UDP
- 외부 포트: 51820
- 내부 IP: NAS의 고정 내부 IP
- 내부 포트: 51820
NAS 자체 방화벽이 활성화되어 있으면 해당 포트 허용 규칙을 추가한다.
6. 클라이언트 구성
컨테이너가 생성한 클라이언트 .conf 파일을 가져와 모바일 또는 PC에 추가한다. 수동으로 구성할 때 예시는 다음과 같다.
[Interface]
PrivateKey = 클라이언트_비공개_키
Address = 10.13.13.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = 서버_공개키
Endpoint = your.public.ip.or.dyndns:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Address는 서버에서 사용 중인 서브넷과 충돌하지 않도록 설정한다. AllowedIPs는 터널을 통해 라우팅할 트래픽 범위를 지정한다.
7. 연결 확인 및 트러블슈팅
클라이언트에서 연결 시도 후 다음을 확인한다.
- 컨테이너 로그에 에러 메시지 존재 여부
- 서버의 WireGuard 인터페이스가 활성화되었는지 확인(wg show)
- 라우터에서 포트포워딩이 올바르게 동작하는지 외부 포트 스캐너로 점검
- NAS와 클라이언트 양쪽 방화벽 규칙 확인
문제가 있으면 컨테이너 로그와 wg 상태를 우선 점검한 뒤, 키 교환(공개키/비공개키 매칭)과 Endpoint 주소를 확인한다.
보안 및 운영 팁
- 비공개 키는 절대 공유하지 않는다.
- 클라이언트 수가 늘어나면 Peers를 관리하여 필요한 키만 허용한다.
- 정기적으로 컨테이너 이미지와 NAS 펌웨어를 업데이트한다.
- 로그와 구성파일은 주기적으로 백업한다.
마무리
Container Station을 이용하면 QNAP NAS에서 WireGuard를 비교적 간단히 운영할 수 있다. 핵심은 키 관리, 포트 포워딩, 그리고 구성파일의 정확성이다. 위 절차를 따라 설정하면 안전한 원격 접속 환경을 구축할 수 있다.