Tailscale은 WireGuard 기반의 메시(mesh) VPN 도구다. 기존 VPN과 달리 중앙 게이트웨이 서버 없이 각 노드가 서로 직접 연결되는 P2P 구조라 속도가 빠르고 설정이 단순하다. 홈 서버, 라즈베리파이, 클라우드 인스턴스, 개발 머신 등을 NAT와 방화벽을 넘어 하나의 사설 네트워크로 묶을 때 특히 유용하다.
핵심 특징:
- WireGuard 암호화 기반 — 별도 설정 없이도 강력한 보안
- NAT traversal 자동 처리 — 공인 IP 없이도 노드 간 직접 통신
- 100개 노드까지 무료 (개인 사용)
- Linux, macOS, Windows, iOS, Android 지원
- MagicDNS — 노드 이름으로 접근 가능 (
ssh user@hostname)
설치 및 설정
Linux (Ubuntu/Debian)
curl -fsSL https://tailscale.com/install.sh | sh
또는 수동으로:
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg \
| sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list \
| sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt update && sudo apt install tailscale
시작 및 로그인
sudo tailscale up
터미널에 출력되는 URL을 브라우저에서 열어 Google/GitHub 계정으로 로그인하면 노드가 등록된다. 헤드리스 서버에서 로그인할 때는 관리 콘솔(admin.tailscale.com)에서 Auth Key를 발급받아 사용한다:
sudo tailscale up --authkey=tskey-auth-xxxxxx
Windows
tailscale.com/download/windows에서 설치 파일을 받아 실행한다. 설치 후 시스템 트레이에 Tailscale 아이콘이 생기며, 클릭 → Log in으로 계정 연결하면 바로 Tailnet에 합류된다.


GUI 외에 PowerShell에서 명령어로도 제어 가능하다:
# 상태 확인
tailscale status
# 로그인 (브라우저 열림)
tailscale up
# Exit Node 사용
tailscale up --exit-node=100.64.x.x
WSL2 환경에서는 Windows 호스트의 Tailscale이 자동으로 WSL2 내부에서도 동작한다. WSL2 터미널에서 tailscale status를 실행하면 동일한 Tailnet이 보인다.
핵심 사용법
상태 확인
# 연결된 노드 목록과 IP 확인
tailscale status
# 내 Tailscale IP 확인
tailscale ip -4
다른 노드에 SSH 접속
# IP로 접속
ssh user@100.64.x.x
# MagicDNS 활성화 시 노드 이름으로 접속
ssh user@my-raspi
파일 전송 (Taildrop)
# 파일 전송
tailscale file cp ./report.pdf my-laptop:
# 수신 측에서 수신 대기
tailscale file get ~/Downloads/
서브넷 라우터
홈 네트워크(192.168.1.0/24)에 있는 기기들을 Tailscale 외부에서 접근하려면 해당 노드를 서브넷 라우터로 설정한다:
# 라우터로 동작할 노드에서
sudo tailscale up --advertise-routes=192.168.1.0/24
# 클라이언트에서 라우트 활성화
sudo tailscale up --accept-routes
Exit Node 설정
특정 노드를 통해 인터넷 트래픽 전체를 라우팅한다 (기존 VPN처럼 사용):
# Exit Node로 지정할 노드에서
sudo tailscale up --advertise-exit-node
# 클라이언트에서 Exit Node 사용
sudo tailscale up --exit-node=100.64.x.x
실전 활용 예시
시나리오 1: 라즈베리파이 원격 접속
집에 있는 라즈베리파이에 외부에서 SSH 접속할 때 포트포워딩 없이 Tailscale IP로 바로 접근한다. 공유기 설정을 건드릴 필요가 없다.
ssh pi@100.64.0.5
# 또는 MagicDNS 사용 시
ssh pi@raspberrypi
시나리오 2: 개발 서버 팀원과 공유
로컬에서 띄운 개발 서버를 팀원에게 공유할 때 Tailscale IP를 알려주면 된다. 같은 Tailnet에 속해 있으면 바로 접근 가능하다.
python3 -m http.server 8080 --bind 100.64.x.x
시나리오 3: VSCode Remote SSH
~/.ssh/config에 Tailscale 노드를 등록해 두면 VSCode에서 원격 개발 환경을 바로 열 수 있다:
Host my-devserver
HostName 100.64.x.x
User noble
IdentityFile ~/.ssh/id_ed25519
주의사항 및 팁
- 커널 모듈 vs userspace: Linux에서 기본적으로 커널 WireGuard 모듈을 사용하지만, 없으면 userspace 모드로 동작한다.
tailscale status에서 확인 가능하다. - IP 포워딩 활성화: 서브넷 라우터나 Exit Node를 사용하려면 반드시 IP 포워딩을 켜야 한다.
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf - ACL(접근 제어): 관리 콘솔 → Access Controls에서 JSON 기반 정책으로 노드 간 접근을 세밀하게 제어할 수 있다. 기본값은 전체 허용이다.
- systemd 서비스 자동 시작: 설치 시 자동으로 등록되지만 확인이 필요하면:
sudo systemctl enable --now tailscaled - Funnel: 유료 기능으로, Tailscale 네트워크 외부(인터넷)에서 노드의 특정 포트에 접근 가능하게 한다. ngrok 대안으로 사용할 수 있다.
마치며
Tailscale은 복잡한 VPN 서버 설정 없이 분산된 머신들을 하나의 사설망으로 연결하는 가장 간단한 방법 중 하나다. 홈 서버/라즈베리파이 접근, 원격 개발 환경 구성, 소규모 팀 네트워크 공유에 실용적이다.
참고 링크: