;

Tailscale로 집 서버를 안전하게 외부 접속하는 방법 본문

Mobile

Tailscale로 집 서버를 안전하게 외부 접속하는 방법

WindowsHyun 2026. 7. 5. 21:41
반응형

개요

본 포스트는 Tailscale로 집 서버를 안전하게 외부 접속하는 기본 설정 방법을 설명합니다.

앞선 Hermes Mobile 글에서는 휴대폰에서 기존 Hermes에 붙는 흐름을 다뤘습니다. 그런데 집 밖에서 쓰려면 먼저 외부 접속 경로가 필요합니다. 이때 포트포워딩부터 여는 것보다 Tailscale로 사설망을 먼저 만드는 쪽이 실패도 적고 노출 범위도 작습니다.

핵심은 휴대폰과 집 서버를 같은 개인 VPN 안에 넣는 것입니다.

전체 구성 흐름

구성은 복잡하지 않습니다. 서버와 휴대폰 양쪽에 Tailscale을 설치하고 같은 계정으로 로그인한 뒤, 휴대폰에서 서버의 Tailscale 주소로 접속합니다.

  • 집 서버: Hermes, 대시보드, API 같은 실제 서비스가 실행되는 장비.
  • Tailscale: 서버와 휴대폰을 같은 tailnet으로 묶는 개인 VPN.
  • 휴대폰: 외부 LTE나 다른 Wi-Fi에서도 Tailscale 경로로 서버에 접속.
  • 접속 주소: 내부 공유기 IP 대신 100.x.y.z 주소나 MagicDNS 이름 사용.

공유기 포트포워딩을 먼저 열지 않아도 됩니다.

적용 대상

이 글은 아래 상황에 맞습니다.

  • 집 서버에 Hermes, n8n, Home Assistant 같은 도구를 띄워둔 상태.
  • 같은 Wi-Fi에서는 접속되지만 밖에서는 접속이 안 되는 상태.
  • 공유기 포트포워딩 없이 휴대폰에서 안전하게 붙고 싶은 상태.
  • 이후 Hermes Mobile 외부 연결 글에서 Tailscale을 1순위로 쓰려는 상태.

반대로 공개 웹서비스처럼 누구나 접근해야 하는 서비스라면 Cloudflare Tunnel이나 별도 인증 프록시가 더 맞을 수 있습니다.

1. Tailscale 계정 만들기

먼저 공식 다운로드 페이지로 이동합니다.

Tailscale은 Google, GitHub, Microsoft 같은 SSO 계정으로 tailnet을 만듭니다. 개인 Gmail 계정 기준으로도 개인용 플랜을 시작할 수 있고, 같은 계정으로 로그인한 장비들이 하나의 개인 네트워크 안에 들어갑니다.

처음에는 서버 1대와 휴대폰 1대만 넣고 테스트하시면 됩니다.

2. 집 서버에 Tailscale 설치

Linux 서버라면 공식 설치 명령은 아래처럼 단순합니다.

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

sudo tailscale up을 실행하면 로그인 URL이 나오고, 브라우저에서 같은 계정으로 승인하면 서버가 tailnet에 들어갑니다.

설치 후 서버의 Tailscale IPv4 주소를 확인합니다.

tailscale ip -4

출력은 보통 아래처럼 100.x.y.z 형태입니다.

100.64.12.34

이 주소는 서버가 집, 회사, 카페 어느 네트워크에 있든 Tailscale 안에서는 안정적으로 쓰기 좋습니다.

3. Windows 서버 설정

Windows에서 Hermes를 돌리는 경우는 Windows용 설치 파일을 받습니다.

설치 후 작업표시줄의 Tailscale 아이콘에서 같은 계정으로 로그인합니다. 로그인되면 Admin Console의 Machines 화면이나 Tailscale 앱에서 Windows 장비의 100.x.y.z 주소를 확인할 수 있습니다.

Windows 방화벽이 막고 있으면 Tailscale로 들어와도 서비스 포트가 안 열릴 수 있습니다. 제 경우 외부 접속 실패 원인은 Tailscale 자체보다 Windows 방화벽 또는 서비스 바인딩 주소일 가능성이 높았습니다.

4. 휴대폰에 Tailscale 설치

Android나 iPhone에도 Tailscale 앱을 설치하고 같은 계정으로 로그인합니다.

휴대폰 앱에서 VPN을 켜면 휴대폰도 같은 tailnet 안에 들어갑니다. 그다음 모바일 브라우저에서 서버 주소를 먼저 열어봅니다.

http://100.64.12.34:9119

Hermes Mobile 같은 앱에 넣을 주소도 같은 방식입니다. 단, 서비스가 HTTP로 열려 있는지 HTTPS로 열려 있는지, 포트가 무엇인지는 서버 설정을 따라가야 합니다.

5. MagicDNS로 이름 붙이기

숫자 IP가 불편하면 MagicDNS를 씁니다. Tailscale은 장비 이름으로 접속할 수 있게 MagicDNS를 제공하고, 기본으로 켜져 있는 경우가 많습니다.

예를 들어 서버 이름이 home-server라면 아래처럼 접근할 수 있습니다.

http://home-server:9119

휴대폰에서 이름 접속이 안 되면 먼저 숫자 IP로 확인합니다. 숫자 IP가 되고 이름만 안 되면 MagicDNS 문제이고, 숫자 IP도 안 되면 서비스 포트나 방화벽 문제입니다.

6. Hermes 같은 로컬 서비스 연결

Hermes 대시보드나 API가 127.0.0.1에만 묶여 있으면 Tailscale 주소로 접근해도 실패합니다. 외부 장비에서 들어오려면 서비스가 전체 인터페이스나 Tailscale 인터페이스에서 받을 수 있어야 합니다.

예시는 아래처럼 잡습니다.

hermes dashboard --host 0.0.0.0

Docker라면 컨테이너 포트가 호스트에 공개되어 있어야 합니다.

docker run -p 9119:9119 example/hermes

WSL에서 돌릴 때는 더 주의해야 합니다. Windows에 Tailscale을 설치했는데 실제 서비스가 WSL 안에서만 열린 상태면, Windows의 Tailscale IP로 바로 안 붙을 수 있습니다. 이 경우는 WSL 안에 직접 Tailscale을 넣거나, Windows에서 WSL 포트를 받아주는 구성을 별도로 잡는 것이 안전합니다.

7. 보안 기본값

Tailscale을 쓴다고 앱 인증을 빼면 안 됩니다. Tailscale은 네트워크 입구를 줄여주지만, 서비스 자체 인증까지 대신하지는 않습니다.

기본값은 아래처럼 잡습니다.

dashboard:
  basic_auth:
    username: admin
    password: change-me

change-me는 그대로 쓰면 안 됩니다. 실제 운영에서는 긴 임의 문자열로 바꾸고, 가능하면 비밀번호 관리자에 저장합니다.

확인

아래 순서로 확인하면 원인 분리가 쉽습니다.

  • 서버에서 서비스가 떠 있는지 확인.
  • 서버에서 tailscale ip -4100.x.y.z 주소 확인.
  • 휴대폰 Tailscale 앱에서 VPN 켜기.
  • 휴대폰 브라우저에서 http://100.x.y.z:포트 열기.
  • 브라우저가 되면 Hermes Mobile 앱에 같은 주소 입력.

검증용 명령은 아래처럼 둡니다.

curl http://127.0.0.1:9119
curl http://100.64.12.34:9119

첫 줄만 되고 두 번째 줄이 안 되면 바인딩 주소나 방화벽 문제입니다. 둘 다 되는데 휴대폰만 안 되면 휴대폰 Tailscale VPN 상태를 먼저 보시면 됩니다.

주요 오류 및 해결 방안

  • 127.0.0.1로 넣은 경우: 휴대폰 자기 자신을 보는 주소라 서버에 붙지 않습니다. Tailscale 100.x.y.z 주소로 바꿉니다.
  • 같은 Wi-Fi에서는 되는데 LTE에서 안 되는 경우: Tailscale VPN이 휴대폰에서 꺼져 있거나, 서버가 tailnet에 로그인되어 있지 않을 수 있습니다.
  • 서버 IP는 보이는데 포트만 안 열리는 경우: 서비스가 127.0.0.1에만 묶였거나 OS 방화벽이 막는 경우가 많습니다.
  • WSL에서만 실패하는 경우: Windows와 WSL 네트워크가 분리된 상태일 수 있습니다. WSL 안에 Tailscale을 직접 설치하는 방법부터 검토합니다.
  • Docker에서만 실패하는 경우: 컨테이너 내부 포트와 호스트 공개 포트가 다를 수 있습니다. -p 호스트포트:컨테이너포트 값을 다시 확인합니다.
반응형
Comments