유료 VPN을 사는 대신, GCP 뭄바이에 내 VM을 잠깐 만들어 인도 IP로 나가고 끝나면 지우는 방법입니다. 꺼져 있으면 0원, 켜져 있으면 시간당 약 23원, 2시간 뒤엔 구글이 알아서 삭제합니다.
이 페이지는 사람이 그대로 따라 하거나, LLM에게 통째로 전달해 구축을 시킬 수 있게 쓰였습니다. 모든 명령은 범용 형태이며, 자리표시자(<...>)만 본인 값으로 바꾸면 됩니다.
이 페이지를 복사해 LLM에게 붙여넣고 이렇게 말하세요:
"이 가이드대로 GCP 뭄바이 Tailscale exit node를 구축하고 싶어. 내 환경은 (맥/윈도우, GCP 프로젝트 보유 여부)이야. 단계별로 명령을 알려주고, 각 단계의 확인 방법까지 짚어줘."
| 준비물 | 어디서 | 비용 |
|---|---|---|
| GCP 프로젝트 (빌링 연결) + Compute Engine API | console.cloud.google.com | 켜두는 것 자체는 무료 |
gcloud CLI 로그인 | cloud.google.com/sdk/docs/install | 무료 |
| Tailscale 계정 + 내 기기에 앱 설치 | tailscale.com | 무료 (개인 플랜) |
| Tailscale 인증키 (Reusable + Ephemeral) | 관리 콘솔 → Settings → Keys → Generate auth key | 무료, 최대 90일 수명 |
export GCP_PROJECT='<빌링-연결된-프로젝트-ID>'
export GCP_ZONE='asia-south1-a' # 뭄바이
export INSTANCE='mumbai-exit'
아래 내용을 startup.sh로 저장합니다. 인증키는 스크립트에 박지 않고 메타데이터로 전달합니다.
#!/bin/bash exec > /var/log/exit-node-setup.log 2>&1 # IP 포워딩 (exit node 필수) cat > /etc/sysctl.d/99-tailscale.conf <<EOF net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 EOF sysctl -p /etc/sysctl.d/99-tailscale.conf # Tailscale 설치 curl -fsSL https://tailscale.com/install.sh | sh # NIC 튜닝 (직결 성능) NIC=$(ip -o route get 8.8.8.8 | awk '{print $5}') ethtool -K "$NIC" rx-udp-gro-forwarding on rx-gro-list off # 메타데이터에서 인증키 읽기 AUTHKEY=$(curl -fsS -H "Metadata-Flavor: Google" \ http://metadata.google.internal/computeMetadata/v1/instance/attributes/ts-authkey) tailscale up \ --auth-key="$AUTHKEY" \ --advertise-exit-node \ --hostname=mumbai-exit \ --ssh \ --accept-dns=false tailscale status
gcloud compute instances create "$INSTANCE" \ --project="$GCP_PROJECT" \ --zone="$GCP_ZONE" \ --machine-type=e2-micro \ --provisioning-model=STANDARD \ --image-family=debian-12 \ --image-project=debian-cloud \ --boot-disk-size=10GB \ --boot-disk-type=pd-standard \ --boot-disk-auto-delete \ --network-tier=STANDARD \ --can-ip-forward \ --max-run-duration=2h \ --instance-termination-action=DELETE \ --metadata-from-file="startup-script=./startup.sh,ts-authkey=<인증키-파일-경로>" \ --no-service-account \ --no-scopes
핵심 스위치 두 개: --max-run-duration=2h + --instance-termination-action=DELETE — 2시간 뒤 구글이 VM을 강제 삭제합니다. 이게 과금 안전망입니다.
mumbai-exit가 뜨면 성공. 안 뜨면 gcloud compute ssh로 들어가 /var/log/exit-node-setup.log를 읽습니다.Tailscale 관리 콘솔(login.tailscale.com) → Machines → mumbai-exit → ⋯ → Edit route settings → "Use as exit node" ON → Save. VM이 광고만 한 상태에서는 라우팅이 안 되고, 이 승인이 마지막 스위치입니다.
tailscale exit-node list에 mumbai-exit가 보이면 완료.맥/윈도우/폰의 Tailscale 앱 → Exit Node → mumbai-exit 선택. 목록에 안 보이면 앱을 완전히 껐다 켭니다.
curl ifconfig.me가 인도 IP를 찍고, 브라우저에서 IP 지역 확인 사이트가 Mumbai/India를 가리켜야 합니다. 이게 아니면 VPN이 켜진 게 아닙니다.gcloud compute instances delete "$INSTANCE" \
--project="$GCP_PROJECT" --zone="$GCP_ZONE" --quiet
# 잔여물 확인 — 둘 다 빈 배열 [] 이어야 함
gcloud compute instances list --project="$GCP_PROJECT" --format=json \
| jq --arg n "$INSTANCE" '[.[] | select(.name == $n)]'
gcloud compute disks list --project="$GCP_PROJECT" --format=json \
| jq --arg n "$INSTANCE" '[.[] | select(.name == $n)]'
gcloud compute instances stop은 2시간 자동삭제 타이머를 리셋합니다. GCP 과금은 "켜짐"이 아니라 "존재"를 따라갑니다. 정리는 언제나 삭제입니다. 고정 IP 예약도 금지 — VM과 분리된 예약 IP는 계속 과금됩니다.| 항목 | 시간당 | 비고 |
|---|---|---|
| 외부 IPv4 (임시) | ₩7.26 | 시간당 최대 항목 |
| 컴퓨트 e2-micro (0.25 vCPU) | ₩9.51 | |
| 메모리 1 GiB | ₩5.10 | |
| 디스크 10 GiB 표준 | ~₩1 | |
| 트래픽 (소량 조회 용도) | ₩0 | 무료 구간 내 |
| 합계 | ≈ ₩23/시간 | 1회 최대 ₩46 (2시간 상한) |
실측 예시: 712초 사용 + 60MB 전송 = 약 ₩4.5. 대용량 다운로드 용도로는 맞지 않고, 지역 확인·가입·결제 화면 열람 같은 소량 작업용입니다.
Tailscale은 exit node 광고 자동 승인(autoApprovers)을 지원하지만 이 구성에서는 끕니다. 자동 승인을 켜면 재사용 인증키를 얻은 사람이 관리자 검토 없이 내 네트워크에 출구 노드를 등록할 수 있습니다. 어차피 VM을 새로 만들 때마다 1회 클릭이면 되므로, 편의보다 통제를 택하는 게 합리적입니다.
| 증상 | 원인 | 조치 |
|---|---|---|
| VM은 떴는데 콘솔에 노드가 없음 | 인증키 오류 / 시작 스크립트 실패 | VM 안의 setup 로그 확인 |
| 노드는 떴는데 선택 불가 | 출구 노드 승인 전 | 콘솔에서 "Use as exit node" ON |
| 앱 목록에 노드가 안 보임 | 앱 캐시 | Tailscale 앱 완전 종료 후 재실행 |
| IP가 인도가 아님 | 리존 착오 / 출구 미선택 | zone 확인 → 출구 선택 → IP 재확인 순 |
| 느림 (DERP 경유) | UDP 직결 경로 막힘 | 기능상 정상. 느리면 GCP 방화벽에 인바운드 UDP 41641 허용 검토 |
| 2시간 뒤 사라짐 | 설계된 안전망 | 다시 만들면 됨 (3번부터) |
| 인증키가 갑자기 안 먹음 | 키 90일 만료 | 콘솔에서 키 재발급 |
이 구성은 로그인·결제가 없는 공개 페이지의 지역 확인을 위한 도구입니다. 접근 통제·결제 현지화·서비스 약관을 우회하는 장치로 쓰는 것은 각 서비스의 약관 문제이며, 이 가이드는 그 용도를 권장하지 않습니다. GCP와 Tailscale 무료 범위 내에서, 쓴 만큼만 내고, 다 쓰면 지우는 것이 이 설계의 전부입니다.