Synology NAS에 WireGuard 서버 구성 방법
Synology NAS에서 WireGuard 서버를 Docker 컨테이너로 배포하는 절차과 키 생성, 네트워크 구성, 포트 포워딩, 방화벽과 고정 IP 연동을 포함한 실무 중심의 설정
목차
개요
이 글은 Synology NAS에서 WireGuard 서버를 실행하는 실용적인 절차를 설명한다. 처음 접하는 사람도 이해할 수 있도록 키 생성, 컨테이너 배포, 네트워크 설정, 포트 포워딩, 방화벽 규칙 적용 과정을 단계별로 정리한다. Docker 기반 배포를 기본으로 설명하며, DSM 환경 특성에 맞춘 주의점도 함께 다룬다.
사전 준비
필수 항목
- Synology NAS(Docker 패키지 설치 가능)
- 관리자 권한 계정
- 공인 IP 또는 DDNS 서비스
- 라우터에서의 포트 포워딩 권한
권장 확인 사항
- DSM 버전과 Docker 호환성 확인
- NAS의 내부 IP를 고정하거나 DHCP 예약 설정
- 백업 가능한 구성 파일 저장소
설치 방법 개요
방법은 다음과 같다. 키 생성 → Docker 컨테이너 구성 → WireGuard 설정 파일 작성 → 라우터 포트 포워딩 및 방화벽 규칙 추가 → 클라이언트 구성 파일 배포. 각 단계에서 필요한 명령과 예제를 제시한다.
1. 키 생성
서버와 각 클라이언트의 키를 생성한다. 로컬 PC나 NAS의 터미널에서 생성 가능하다. 예제는 Linux 계열 쉘 기준이다.
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
생성된 키는 안전한 장소에 보관한다. 클라이언트마다 별도 키를 생성한다.
2. Docker 컨테이너 배포
linuxserver/wireguard 같은 검증된 이미지를 사용한다. Docker Compose 예시는 다음과 같다. NAS의 공유 폴더를 /volume1/docker/wireguard로 둔다.
version: '3.8'
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Seoul
volumes:
- /volume1/docker/wireguard/config:/config
ports:
- 51820:51820/udp
restart: unless-stopped
포트는 라우터에서 포워딩할 포트와 동일하게 설정한다. 기본은 UDP 51820이다.
3. 서버 설정 파일 작성
/config 폴더에 wg0.conf 형태로 설정을 만든다. 최소 구성 예시는 아래와 같다.
[Interface]
Address = 10.13.13.1/24
ListenPort = 51820
PrivateKey = 서버_비밀키
SaveConfig = true
# PostUp와 PostDown은 NAT 처리 예시
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = 클라이언트_공개키
AllowedIPs = 10.13.13.2/32
AllowedIPs는 클라이언트가 사용할 내부 IP를 정의한다. 필요하면 여러 Peer를 추가한다.
4. 네트워크 및 라우터 설정
NAS가 라우터에서 고정 IP를 갖도록 설정한다. 라우터에서 다음 항목을 적용한다.
- UDP 51820 포트 포워딩을 NAS의 고정 내부 IP로 설정
- 공인 IP가 변하는 경우 DDNS를 등록
포트는 환경에 맞춰 변경 가능하다. 포트 변경 시 클라이언트 설정에서도 동일하게 반영한다.
5. 방화벽 및 보안 설정
DSM 방화벽을 사용 중이면 WireGuard 포트를 허용한다. 컨테이너 내부에서 NAT를 사용하면 외부 네트워크 접근이 가능하므로 허용 목록을 최소화한다. 인증 키 관리와 구성 파일 권한에도 주의한다.
6. 클라이언트 구성 예
클라이언트의 기본 구성 예시는 아래와 같다. 공인 IP 대신 DDNS 도메인을 쓸 수 있다.
[Interface]
PrivateKey = 클라이언트_비밀키
Address = 10.13.13.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = 서버_공개키
Endpoint = your.ddns.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs를 0.0.0.0/0로 설정하면 원격에서 모든 트래픽이 WireGuard를 통해 라우팅된다. 내부 자원만 접근하려면 해당 서브넷만 허용한다.
7. 테스트 및 문제 해결
- 서버 로그 확인: 컨테이너 로그에서 초기 오류 확인
- 포트 열림 확인: 온라인 포트 체커로 UDP 포트 확인
- 클라이언트에서 ping으로 내부 IP 확인
- NAT 문제 시 PostUp/PostDown 명령을 NAS 환경에 맞게 조정
마무리
이 절차는 Synology NAS에서 안정적으로 WireGuard 서버를 운영하기 위한 실무적 접근을 담고 있다. 핵심은 키 관리와 네트워크 설정의 일관성이다. Docker를 활용하면 패키지 의존성 문제를 피할 수 있으며, 구성 파일 백업과 정기적인 점검으로 운영 안정성을 높일 수 있다.