시놀로지 NAS 개인 도메인 외부 접속 설정 — DDNS + CNAME, 안 쓰는 포트 정리

집에 있는 시놀로지 NAS에 밖에서 접속할 때 my-nas.synology.me 같은 DDNS 주소 대신 개인 도메인(nas.example.com)을 쓰도록 바꿨습니다. 루트 도메인 example.com은 이 블로그 서버로 쓰고 있어서, NAS는 하위 도메인 + CNAME으로 붙였습니다. 하는 김에 공유기 포트포워딩을 점검해 보니 11개나 열려 있었고, 실제로 쓰는 포트를 확인해 4개만 남기고 정리했습니다. 실제 설정 화면 기준으로 정리합니다.

※ 보안을 위해 이 글의 실제 도메인과 계정명은 예시 값(nas.example.com, my-nas.synology.me, admin)으로 바꿨고, 캡처 속 도메인·DDNS 주소·서버 주소·포트 번호는 블러 처리해 가렸습니다.

도메인 DNS 레코드, 루트와 www는 A 레코드, nas와 photo는 my-nas.synology.me로 CNAME
루트·www는 블로그 서버(A), nas·photo는 시놀로지 DDNS 주소로 CNAME

결론

  • 시놀로지 DDNS(my-nas.synology.me)가 집 공인 IP를 따라가고, 도메인 쪽에는 nas → my-nas.synology.me CNAME 하나만 추가하면 됩니다.
  • 집 IP가 바뀌어도 DDNS만 갱신되면 되므로 도메인 DNS를 다시 고칠 필요가 없습니다.
  • DSM 인증서에 nas.example.com 인증서를 만들어 기본 인증서로 지정해야 브라우저 경고 없이 HTTPS로 접속됩니다.
  • 포트포워딩 11개 중 실제로 NAS가 받고 있던 포트는 80·443(웹)과 Immich 컨테이너 하나뿐이었습니다. 안 쓰는 포트를 지우고 80·443·5001(TCP), 1194(UDP)만 남겼습니다.

환경

항목내용
NASSynology NAS (DSM 7 계열, 화면 기준)
DDNSSynology DDNS — my-nas.synology.me
도메인example.com (DNS는 도메인 등록 업체에서 관리)
사용 주소nas.example.com (DSM), photo.example.com
외부 포트 (정리 후)80·443·5001/TCP, 1194/UDP

구성. 도메인 → DDNS → 집 공인 IP

접속 순서는 이렇습니다.

nas.example.com  --CNAME-->  my-nas.synology.me  --DDNS-->  집 공인 IP  --포트포워딩 5001-->  NAS
  • A 레코드로 집 IP를 직접 넣으면, 가정용 인터넷 IP가 바뀔 때마다 도메인 DNS를 손으로 고쳐야 합니다.
  • CNAME으로 DDNS 주소를 가리키면 IP 변경은 NAS가 DDNS에 알아서 갱신합니다.
  • 루트(@)와 www는 블로그 서버 A 레코드라서 그대로 두고, NAS는 하위 도메인만 씁니다.

설정 방법

1. 시놀로지 DDNS 등록

  1. 제어판 → 외부 액세스 → DDNS → 추가
  2. 서비스 공급자 Synology 선택 → 호스트 이름 입력(예: my-nas) → .synology.me 선택
  3. 저장 후 목록에서 상태: 정상, 외부 주소에 집 공인 IP가 보이는지 확인합니다.
Synology DDNS 목록, my-nas.synology.me 상태 정상
DDNS 상태 정상, 외부 주소(공인 IP)는 가림

2. 도메인 DNS에 CNAME 추가

  1. 도메인 등록 업체의 DNS 레코드 관리 화면으로 이동
  2. 유형 CNAME, 호스트 이름 nas, 값 my-nas.synology.me 입력 후 저장
  3. 다른 서비스도 같은 방식으로 추가합니다. 저는 photo도 같은 DDNS 주소로 CNAME을 걸었습니다.
[직접 확인] DNS 레코드는 루트(@)·www가 블로그 서버 A 레코드, nas·photo가 my-nas.synology.me CNAME이며 TTL은 모두 180초입니다. 루트를 블로그로 옮긴 뒤에도 NAS 주소는 하위 도메인이라 서로 겹치지 않습니다.

3. DSM 인증서 만들고 기본 인증서로 지정

  1. 제어판 → 보안 → 인증서 → 추가 → 새 인증서 추가
  2. 도메인 이름에 nas.example.com를 넣고 발급
  3. 발급된 인증서를 기본 인증서로 지정하거나, 설정에서 DSM 서비스에 nas.example.com 인증서를 연결합니다.
DSM 인증서 목록, nas.example.com가 기본 인증서
nas.example.com가 기본 인증서, photo.example.com도 따로 발급
[직접 확인] 인증서 목록에서 nas.example.com가 (기본 인증서)로 표시되고, photo.example.com 인증서도 따로 있습니다. 두 인증서 만료일은 2027-02-01입니다.
[참고 · 직접 확인하지 않음] DSM의 Let’s Encrypt 인증서는 발급·갱신 때 Let’s Encrypt 서버가 외부에서 80번 포트로 접속해 도메인을 확인하는 방식이라, 80번을 닫으면 갱신이 실패하는 것으로 알려져 있습니다. 그래서 포트를 정리할 때 80은 남겼습니다.

4. 공유기 포트포워딩 점검

공유기 포트포워딩 목록을 열어 보니 예전에 이것저것 테스트하면서 연 포트가 11개 남아 있었고, 대부분 프로토콜이 전부(TCP+UDP)로 되어 있었습니다.

정리 전 공유기 포트포워딩 11개
정리 전: 11개, 대부분 프로토콜 “전부” (내부 IP는 가림)

어떤 포트를 실제로 쓰는지는 NAS에 SSH로 접속해 확인했습니다. 방법은 아래 참고: 명령어로 확인하기에 있습니다. 확인 결과는 이렇습니다.

포트NAS에서 받는 프로그램조치
80, 443DSM 웹 서버(nginx) — Let’s Encrypt 갱신, 역방향 프록시남김, 프로토콜 TCP로 변경
2282Docker 컨테이너 immich_server (Immich 사진 백업)삭제 — photo.example.com 역방향 프록시(443)로 접속하므로 불필요
8080, 9000, 2222, 8081, 9091, 6009받는 프로그램 없음삭제
5001 / 1194DSM HTTPS / OpenVPN남김
  1. 공유기 관리 화면 → 포트포워딩에서 쓰지 않는 줄을 삭제
  2. 남기는 줄은 수정에서 프로토콜을 서비스에 맞게 지정 (웹·DSM은 TCP, OpenVPN은 UDP)
  3. 예전에 열어 둔 5000/TCP(HTTP)는 이미 삭제한 상태
정리 후 공유기 포트포워딩 443 80 5001 TCP, 1194 UDP
정리 후: 443·80·5001(TCP), 1194(UDP) 4개만 남김
[직접 확인] Immich는 DSM 역방향 프록시에 photo.example.com(443) → localhost:2282 규칙이 있어서, 외부 2282 포트포워딩을 지워도 photo.example.com로 접속됩니다.

5. 접속 확인

  1. 휴대폰 LTE/5G처럼 집 밖 네트워크에서 https://nas.example.com:5001 접속
  2. 주소창에 자물쇠가 뜨고 인증서 경고 없이 DSM 로그인 화면이 나오면 완료
[직접 확인] 평소에는 NAS의 OpenVPN으로 접속해서 쓰고, VPN 없이 파일만 잠깐 볼 때를 위해 DSM은 5001만 열어 두었습니다. 두 방식 모두 외부에서 정상 접속됩니다.

주의사항

  • 5000(HTTP)은 외부에 열지 마세요. 로그인 정보가 암호화되지 않은 채로 오갑니다.
  • 외부에 DSM을 연다면 제어판 → 보안 → 보호의 자동 차단, 관리자 계정 2단계 인증을 켜 두는 것이 좋습니다.
  • 포트포워딩 프로토콜을 전부로 두면 필요 없는 UDP까지 열립니다. 서비스에 맞게 TCP 또는 UDP 하나만 지정하세요.
  • Docker 컨테이너 포트를 외부에 직접 열기보다 역방향 프록시(443)로 받으면 HTTPS가 적용되고 열린 포트도 줄어듭니다.
  • CNAME 값에는 http://나 포트 번호를 넣지 않습니다. 주소(my-nas.synology.me)만 넣습니다.
  • 집 내부에서 nas.example.com로 접속이 안 되면 공유기의 NAT 루프백(헤어핀) 지원 여부 문제일 수 있습니다. 내부에서는 NAS 내부 IP로 접속하면 됩니다.

참고: 명령어로 확인하기

포트를 실제로 쓰는 프로그램 찾기 (NAS SSH)

제어판 → 터미널 및 SNMP → SSH 서비스 활성화 후 관리자 계정으로 NAS에 SSH 접속합니다. 확인이 끝나면 SSH는 다시 꺼 두는 것이 좋습니다.

nas.example.com – SecureCRT–□✕
nas.example.com
admin@NAS:~$
sudo netstat -tlnp | grep -E ':(8080|9000|2222|443|8081|80|9091|6009|2282) '
tcp        0      0 0.0.0.0:80        0.0.0.0:*    LISTEN    13168/nginx: master
tcp        0      0 0.0.0.0:443       0.0.0.0:*    LISTEN    13168/nginx: master
tcp        0      0 0.0.0.0:2282      0.0.0.0:*    LISTEN    19406/docker-proxy
tcp6       0      0 :::80             :::*         LISTEN    13168/nginx: master
tcp6       0      0 :::443            :::*         LISTEN    13168/nginx: master
tcp6       0      0 :::2282           :::*         LISTEN    19414/docker-proxy
Readyssh2VT100
  • 역할: 포트포워딩에 걸린 포트 중 NAS에서 실제로 대기(LISTEN) 중인 포트와 프로그램을 보여 줍니다.
  • 결과 해석: 80·443은 DSM 웹 서버(nginx), 2282는 Docker 컨테이너(docker-proxy)입니다. 목록에 안 나온 포트(8080, 9000, 2222, 8081, 9091, 6009)는 받는 프로그램이 없으니 포트포워딩을 지워도 됩니다.
  • 5001(DSM)과 1194(OpenVPN)는 쓰는 줄 알고 있어 이번 검색에서 뺐습니다. 필요하면 grep 목록에 추가하세요.
nas.example.com – SecureCRT–□✕
nas.example.com
admin@NAS:~$
sudo docker ps --format '{{.Names}}  {{.Image}}  {{.Ports}}' | grep 2282
immich_server  ghcr.io/immich-app/immich-server:release  0.0.0.0:2282->2283/tcp, :::2282->2283/tcp
Readyssh2VT100
  • 역할: docker-proxy가 잡고 있는 포트가 어느 컨테이너 것인지 찾습니다.
  • 결과 해석: 2282는 Immich 서버 컨테이너(내부 2283)였습니다. DSM 역방향 프록시가 photo.example.com로 받아 넘겨 주고 있어 외부 포트포워딩은 필요 없었습니다.

DNS·포트 연결 확인 (Windows PowerShell)

PS  Windows PowerShell–□✕
PS C:\>
nslookup nas.example.com
  • 역할: nas.example.com가 어떤 주소로 연결되는지 조회합니다.
  • 결과 해석: 별칭(Aliases)에 my-nas.synology.me가 보이고, 마지막 Address가 DDNS 화면의 외부 주소와 같으면 정상입니다.
  • Non-existent domain이 나오면 CNAME 레코드가 없거나 아직 반영 전입니다. TTL(여기서는 180초)만큼 기다린 뒤 다시 확인합니다.
PS  Windows PowerShell–□✕
PS C:\>
Test-NetConnection nas.example.com -Port 5001
  • 역할: 외부에서 5001 포트까지 실제로 연결되는지 확인합니다. 집 밖 네트워크에서 실행해야 의미가 있습니다.
  • 결과 해석: TcpTestSucceeded : True면 포트포워딩까지 정상, False면 공유기 포트포워딩이나 DSM 방화벽을 확인합니다.

정리

  1. 시놀로지 DDNS(my-nas.synology.me)를 등록해 집 공인 IP를 따라가게 한다.
  2. 도메인 DNS에 nas → my-nas.synology.me CNAME을 추가한다. 루트·www는 그대로 둔다.
  3. DSM 인증서에 nas.example.com를 발급해 기본 인증서로 지정한다.
  4. 공유기 포트포워딩을 netstat·docker ps로 점검해 안 쓰는 포트는 지우고, 남는 포트는 TCP/UDP를 정확히 지정한다 (여기서는 80·443·5001/TCP, 1194/UDP).
  5. 집 밖에서 https://nas.example.com:5001 로 접속해 확인한다.

설정했는데 접속이 안 된다면 댓글로 nslookup 결과(IP는 가리고)를 남겨 주세요. 확인해 보고 답변드리겠습니다.

댓글 남기기