목적
- 여러 개의 서브 도메인 주소로 NAS 서비스 이용
- 포트 번호 입력 없음
- 포트 번호 노출 없음
- 공유기 포트 포워딩 1개로 가능(uPnP 기능 사용)
- 여러 개의 웹서버에 포트번호 변경 없이 도메인만으로 연결 가능
방법
공유기의 포트 포워딩 1개 설정
공유기 사용 시 사용하려는 포트를 포워딩 설정한다. HTTPS 포트만 있으면 된다.
HTTPS = 443
위 포트를 NAS IP에 포워딩한다.
ASUS RT 공유기 사용자라면 아래 게시물을 참고한다.
Wi-fi 6 무선공유기 ASUS RT-AX3000, 설정하기
DDNS 도메인 할당
Synology DDNS 서비스에서 무료 도메인을 할당받는다. SSL은 자동 발급된다.
(개인 도메인은 별도로 인증서를 발급 받아야 한다)
1개의 DDNS 주소로 여러개의 서브도메인을 만들어서 사용할 수 있다.
a.userid.domain.me, b.userid.domain.me, ...
임의 포트에 역방향 프락시 설정
도커, 웹사이트 등 사용자가 설치한 서비스별로 서브도메인을 연결할 때는 내부 포트를 직접 설정한다.
DSM 제어판 - 로그인 포털 - 고급 - 역방향 프록시 설정
역방향 프록시 규칙 생성 후 나타나는 창에서 다음과 같이 입력
소스 프로토콜은 HTTPS로 설정하고, 대상 프로토콜은 HTTP 고정.
HTTPS는 포트를 443으로 입력해야 한다.
이런 식으로 내부 포트별로 역방향 프락시를 만들어 준다.
응용프로그램에 역방향 프록시 설정
DSM, 파일, 오디오, 포토 등의 NAS의 응용프로그램 서비스 포트 번호는 기본값을 사용하면 된다.
공유기에서 443 포트만 포워딩을 했기 때문에 5000, 8000등의 알려진 포트를 기본으로 사용해도 WAN에서 직접 접속할 수 없다.
DSM, 파일, 포토, 비디오 등, 응용 프로그램의 역방향 프락시는 로그인 포털 - 응용 프로그램에서 설정 가능.
사용자 지정된 포트는 비워둔다.
사용자 지정된 도메인에는 사용하고 싶은 서브도메인을 포함하여 입력한다.
HSTS 활성화에 ✅체크한다.
접속 오류가 발생하는 경우
- 라우터에서 NAS로 443 포트 포워딩이 되어 있지 않을 때
(HTTP 연결은 80 포트)
사용
브라우저 주소 입력에 a.mydomain.me 처럼 설정한 서브 도메인을 포함한 주소를 입력하면 설정된 내부 포트로 자동 연결 된다. 서비스에 필요한 추가 포트는 공유기가 자동으로 연결해 준다.
접속 과정
- (사용자) 브라우저에 https://a.mydomain.me/123 URL 주소 입력
- (DNS) 도메인 주소에 연결된 도메인 호스팅 서버에 연결
- (도메인 호스팅) 도메인의 A 레코드 주소로 접속
- (공유기) 192.168.xxx.xxx:443 NAS IP로 포워딩
- (NAS) 호스트 이름이 역방향 프락시에 설정되어 있으면 대상 포트로 변경
- (NAS) URL에 대한 결과를 사용자에게 전송
- 생략
- (NAS) 서비스에 필요한 추가 포트를 공유기에 개방 요청함
- (공유기) 요청된 포트를 개방 후 해당 클라이언트에 포트포워딩 해줌 (uPnP 기능)
역방향 프락시에서 대상 설정을 HTTP로 해도 되는 이유는
프록시 서버가 내부망(NAS)에 있기 때문이다. 외부로부터의 접속은 HTTPS가 적용되므로 보안이 유지된다.
시놀로지와 같은 DDNS는 외부 DNS 서버를 거쳐야 하므로 HTTPS 보안이 적용된다.
IP 주소로 접속하는 것은 직접 접속이므로 HTTPS 보안이 필요 없다.
내부망에서 도메인으로 NAS에 접속하면 외부망을 거치게 되므로 HTTPS가 적용된다.
Docker 컨테이너 같은 내부 통신은 DNS가 아닌 localhost, 127.0.0.1, TCP/IP 통신을 사용하기 때문에 HTTPS가 적용되지 않는다.
위 설정 방법은 시놀로지 제조사 매뉴얼 기준이다. NAS 관련 카페에는 잘못된 정보, 잘못된 설정 방법이 많이 알려져 있으므로 주의한다.
Proxy 외래어 표기법: ⭕프락시, ❌프록시, 쁘락찌