밖에서 내 NAS 접속하기: 포트포워딩과 DDNS

NAS 미니랩 네 번째(완결). 카페 노트북에서 집 NAS까지 가는 요청이 사설 IP와 NAT에 막히는 지점을 눈으로 보고, 포트포워딩으로 길을 내고 DDNS로 이름을 붙여 뚫어 봅니다.

카페에서 집 NAS의 사진이 급히 필요합니다. 집에서 잘 쓰던 주소 192.168.0.10을 치면… 아무것도 나오지 않습니다. 고장이 아니라 원리입니다.

아파트에 비유하면 이렇습니다. 인터넷이라는 도시에서 우리 집의 진짜 주소는 공유기가 가진 공인 IP 하나뿐입니다. 집 안의 NAS·PC·폰이 나눠 쓰는 192.168.x.x는 "안방", "작은방" 같은 호칭이라, 옆 동네에서 "안방으로 보내주세요"라고 하면 어디의 안방인지 알 수 없습니다.

공인 IP로 보내도 막히는 이유

주소를 공인 IP로 바꾸면 요청은 집 공유기까지 도착합니다. 그런데 공유기가 버립니다. "5001 포트로 온 이 요청, 안쪽의 누구에게 주라는 거지?"

라우팅 랩에서 본 NAT의 성질입니다. 공유기는 안에서 나간 연결의 응답만 기억해서 들여보내고, 밖에서 먼저 들어오는 연결은 기본적으로 차단합니다. 평소에는 이 성질이 집 안 기기를 지켜 주는 방패인데, 지금은 내 요청까지 막는 벽이 됩니다.

먼저 고를 방법: VPN 또는 제조사 릴레이

NAS 관리 화면이나 파일 공유 포트를 인터넷에 직접 노출하는 것은 공격 표면을 늘립니다. 실제 사용 목적이라면 먼저 VPN이나 제조사가 보안 업데이트와 인증을 지원하는 릴레이 방식을 검토하는 편이 안전합니다. 이 방식은 공개 포트를 최소화하고, 접속 전에 별도의 인증 경계를 하나 더 둘 수 있습니다.

아래 포트포워딩과 DDNS는 NAT를 통과하는 원리를 설명하기 위한 데모의 경로입니다. 직접 노출이 꼭 필요하다면 NAS 제조사의 보안 지침을 확인하고, 관리 포트와 파일 공유 포트를 그대로 공개하지 말아야 합니다.

직접 길을 낼 때의 두 요소

데모처럼 직접 연결하는 구성에는 두 요소가 필요합니다.

  • 포트포워딩 = 길 — 공유기에 "밖에서 5001 포트로 오면 192.168.0.10(NAS)의 5001로 전달하라"는 규칙을 등록합니다. 벽에 문을 하나만, 정확히 냅니다.
  • DDNS = 이름 — 집 공인 IP는 통신사 사정으로 바뀝니다. NAS가 "지금 우리 집 IP는 이거"라고 주기적으로 신고하면, mynas.ddns.net 같은 이름이 항상 최신 IP를 가리킵니다. IP 숫자를 외울 필요가 없어집니다.

두 가지가 갖춰지면 흐름은 한 줄입니다: HTTPS 이름(DDNS) → 공인 IP → 포워딩 규칙 → NAS. 데모의 성공 요청도 https://mynas.ddns.net:5001로 표시하며, 실제 구성에서는 인증서의 이름이 DDNS 주소와 일치해야 합니다. 다음 날 IP가 바뀌어도 이름은 그대로 통합니다.

문을 열었다면 노출 범위를 줄입니다

포트를 열었다는 건 인터넷 전체에 그 문이 보인다는 뜻이기도 합니다. HTTPS, 강한 비밀번호와 2단계 인증, 최신 펌웨어는 기본이고, 필요한 출발지와 포트만 허용합니다. 기본 관리자 계정은 비활성화하고 로그인 알림과 차단 기록도 확인합니다. 3편 백업 3-2-1에서 본 것처럼 외부 접속과 복구 가능한 백업은 한 세트로 생각해야 합니다.

포워딩을 했는데도 안 될 때

설정을 더 열기 전에 어디까지 도착하는지 순서대로 확인합니다.

  1. 집 안에서 NAS의 사설 IP와 서비스 포트가 실제로 열리는지 확인합니다.
  2. 공유기의 인터넷 주소와 외부 IP 확인 사이트의 주소가 같은지 봅니다.
  3. 둘이 다르면 통신사 장비의 CGNAT나 이중 NAT일 수 있어 내 공유기 규칙만으로는 외부 연결이 도착하지 않습니다.
  4. 주소가 같다면 포워딩 대상 IP가 NAS의 현재 고정 주소와 같은지 확인합니다.
  5. 휴대폰을 와이파이에서 셀룰러로 바꿔 진짜 외부망에서 시험합니다.

CGNAT 환경에서 해결하려고 관리 포트를 여러 개 열어보는 것은 도움이 되지 않습니다. 통신사에 공인 주소 제공 여부를 확인하거나, 바깥 서버로 먼저 연결하는 VPN·릴레이 구성을 검토해야 합니다.

공인 IP가 바뀌는 장면까지 보세요

아래 파란 버튼만 누르세요

카페 노트북에서 집 NAS까지, 요청은 도착할까요?

시나리오
요청응답차단
대기 중
카페노트북
바깥 세상인터넷
우리 집공유기
우리 집NAS

패킷이 출발하면 여기에 주소가 보여요.

설정 상태

  • 포트포워딩규칙 없음 — 밖→안 차단
  • DDNS 이름미등록 — IP 숫자를 외워야 함

아무 설정도 하지 않은 상태예요.

지나온 기록

접속을 시도하면 단계마다 기록이 쌓여요.

버튼은 하나예요. 접속 시도를 누르면 카페 노트북에서 우리 집 NAS까지 가는 길을 한 단계씩 따라가고, 자동 재생을 누르면 끝까지 알아서 진행돼요.

원리 세 가지만

밖에서 안 되던 접속이 되게 하는 것들

01공인 IP는 집에 하나뿐.

인터넷에서 보이는 건 공유기의 공인 IP 하나예요. 집 안 기기들은 사설 IP(192.168.x.x)를 나눠 쓰고, 그 번호는 밖에서 의미가 없어요.

02밖→안은 기본 차단.

NAT 공유기는 안에서 나간 연결의 응답만 들여보내요. 밖에서 먼저 오는 연결은 포워딩 규칙이라는 명시적인 길이 있어야 통과해요.

03이름이 IP를 따라가요.

집 공인 IP는 통신사 사정으로 바뀌어요. DDNS는 NAS가 신고하는 최신 IP에 이름을 붙여, 언제나 같은 주소로 접속하게 해요.

이름 (DDNS)공인 IP포워딩 규칙NAS
원리 위주로 단순화한 시뮬레이션입니다.

실제로는 통신사 장비가 한 번 더 NAT를 하는 이중 NAT·CGNAT 환경이면 포워딩만으로는 안 될 수 있고, 상용 NAS의 QuickConnect 같은 릴레이 서비스가 대안이 됩니다. 열린 포트는 인터넷 전체에서 보이므로 HTTPS·강한 비밀번호와 2단계 인증·최신 펌웨어를 갖추고 필요한 포트만 여세요. 가능하면 VPN이 더 안전합니다. 주소와 포트는 예시값입니다.

참고: RFC 1918 (Address Allocation for Private Internets)이 랩의 소개글 읽기 →

데모만 따로 보려면 전체 화면으로 열기.

조작은 버튼 하나입니다. 자동 재생을 누르면 끝까지 알아서 진행됩니다.

  1. 그냥 접속에서 사설 IP가 인터넷에서(⛔), 공인 IP가 공유기에서(⛔) 막히는 지점을 경로 보드에서 확인합니다.
  2. 길 내고 이름 붙이기로 바꿔 포워딩 규칙과 DDNS가 켜지는 순간을 설정 패널에서 보고, 아까 막혔던 바로 그 지점을 요청이 통과(✓)하는 것을 봅니다.
  3. 마지막에 공인 IP가 바뀌어도 이름이 그대로 통하는 장면, 즉 DDNS의 존재 이유를 확인합니다.

문을 열면 실제로 무슨 일이 생기는가

"포트를 열면 공격당한다"는 경고는 많이 듣지만 잘 안 와닿습니다. 그래서 이 블로그를 돌리는 서버의 접속 로그를 그대로 열어 봤습니다.

2026-08-08 오전, 약 11분 동안 한 곳에서 이런 요청이 들어왔습니다.

항목
요청 수591건 (분당 약 55건)
그중 설정 파일을 노린 것584건
시도한 서로 다른 경로584개 (겹치는 게 거의 없습니다)
출발지한 곳

무엇을 찾고 있었냐면, 개발자가 실수로 올려 두었을 법한 비밀번호 파일입니다. 시도한 경로 목록이 이런 식이었습니다.

/.env            /.env.backup      /.env.dev
/.env.local      /.docker/.env     /.c9/metadata/environment/.env
/.env.php        /_static/.env     /__tests__/test-become/.env
...584개

여기에 워드프레스 설치 화면(/wp-admin/install.php)을 찾는 요청도 섞여 있었습니다.

이 로그에서 가져갈 것 세 가지

첫째, 홍보한 적 없는 서버에도 옵니다. 이 도메인은 만든 지 한 달이고 검색에도 거의 안 걸립니다. 그런데도 스캐너는 찾아옵니다. 공인 IP와 열린 포트는 그 자체로 발견됩니다. "우리 집 NAS를 누가 알겠어"는 성립하지 않습니다.

둘째, 사람이 아니라 기계가 훑습니다. 11분에 591건, 그것도 전부 다른 경로입니다. 사람이 하나씩 시도하는 게 아니라 목록을 자동으로 돌리는 것입니다. 비밀번호가 약하면 사람이 잠들어 있는 새벽에 뚫립니다.

셋째, 다행히 전부 실패했습니다. 이 서버는 정적 파일만 서빙하고 설정 파일은 아예 그 폴더에 없습니다. 전부 404·리다이렉트로 돌아갔습니다. 요청이 도달했느냐와 얻어 갔느냐는 다른 문제입니다.

세 번째가 핵심입니다. 문을 열어야 한다면 문 뒤에 가져갈 게 없게 만들어야 합니다. NAS로 옮기면 이런 뜻이 됩니다.

  • 관리 화면(웹 UI·SSH)은 인터넷에 직접 열지 않습니다. 앞에서 다룬 VPN이나 제조사 릴레이를 먼저 고려하세요.
  • 꼭 열어야 하면 필요한 서비스 하나만, 기본 포트가 아닌 번호로, 가능하면 접속 가능한 IP를 제한해서 엽니다.
  • 기본 계정 이름(admin)을 바꾸고, 2단계 인증을 켜고, 로그인 실패가 반복되면 차단되도록 설정합니다.
  • 펌웨어를 최신으로 유지합니다. 위 스캐너가 노리는 것 대부분은 이미 알려진 취약점입니다.

문을 열기 전에

인터넷에서 보이는 것은 공유기의 공인 IP 하나뿐이고, 집 안의 사설 IP는 밖에서 닿지 않습니다. 그래서 밖에서 안으로 직접 들어오려면 포트포워딩이라는 길을 명시적으로 내야 하고, 공인 IP가 바뀌는 환경이라면 DDNS로 이름을 붙여야 합니다.

다만 위의 로그를 보고 나면 순서가 달라집니다. 길을 내는 방법을 아는 것과 그 길을 꼭 내야 하는 것은 다른 이야기입니다. VPN이나 제조사 릴레이로 되는 일이면 그쪽이 먼저입니다. 포트를 여는 건 그걸로 안 될 때입니다.

남는 경우들

데모는 원리 위주로 줄인 것으로, 통신사 장비가 NAT를 한 번 더 하는 이중 NAT·CGNAT 환경이면 포워딩만으로는 안 될 수 있습니다. 이때도 무리하게 여러 포트를 열기보다 VPN이나 제조사가 지원하는 릴레이를 검토합니다. 이 편으로 NAS 미니랩 4부작을 마칩니다. 1편 RAID · 2편 파일 공유 · 3편 백업 3-2-1.

확인한 자료

#NAS#포트포워딩#DDNS#학습도구#웹 도구

관련 글