Tailscale 사용법

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 서버 설정 없이 분산된 머신들을 하나의 사설망으로 연결하는 가장 간단한 방법 중 하나다. 홈 서버/라즈베리파이 접근, 원격 개발 환경 구성, 소규모 팀 네트워크 공유에 실용적이다.

참고 링크:

답글 남기기