메시 VPN은 조용히 모든 것을 편하게 만들어 주는 도구입니다. 노트북, 집 서버, 휴대폰, VPS가 어디에 있든 사설 주소로 서로를 봅니다. 호스팅형 메시 VPN의 문제는 조정 서버입니다. 한 회사가 여러분이 가진 모든 기기의 지도를 쥐고 있습니다. Headscale은 그 제어 서버를 대체하는 오픈소스입니다. 작은 VPS에서 실행하고 평소 쓰던 클라이언트 앱을 그대로 쓰면, 지도는 여러분의 것이 됩니다.
구성 요소가 맞물리는 방식
- Headscale(여러분의 VPS)이 주소를 나눠 주고, 공개 키를 배포하고, ACL을 적용합니다.
- 클라이언트는 여러분의 서버를 가리키는 표준 Tailscale 앱입니다.
- 트래픽은 WireGuard로 기기에서 기기로 흐릅니다. 제어 서버는 절대 그것을 나르지 않습니다.
이 마지막 점 때문에 아주 작은 요금제로 충분합니다. VPS는 작은 조정 요청에만 응답합니다.
필요한 것
- Nano-IP(월 $8): 2 vCPU와 RAM 1 GB는 Headscale이 쓰는 양보다 훨씬 많습니다.
- 전용 IPv4와 도메인, 예:
hs.example.com. 기기는 HTTPS로 제어 서버와 통신하므로 VPS가 들어오는 443을 받아야 합니다. NAT 요금제로는 안 됩니다(자세히).
설치(Debian 12 / Ubuntu 24.04)
GitHub의 Headscale 릴리스 페이지에서 최신 .deb를 받고, 버전을 최신 것으로 바꾸세요.
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
/etc/headscale/config.yaml을 편집합니다. 중요한 것은 다음 두 줄입니다.
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
HTTPS를 위해 앞단에 Caddy를 둡니다.
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
사용자와 기기 추가하기
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
오래된 릴리스는 --user에 ID 대신 사용자 이름을 받습니다. headscale preauthkeys create --help로 여러분의 버전이 무엇을 기대하는지 확인하세요.
Linux 기기에서는 다음과 같이 합니다.
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
휴대폰과 데스크톱에서는 Tailscale 앱 설정에서 사용자 지정 제어 서버를 지정할 수 있습니다. VPS에서 headscale nodes list를 실행하면 기기가 보여야 합니다.
릴레이와 NAT 통과
대부분의 기기는 직접 연결됩니다. 두 기기가 연결하지 못할 때(엄격한 모바일망, 이중 NAT)는 트래픽이 DERP 릴레이를 거칩니다. 기본 상태의 Headscale은 암호화된 패킷만 보는 Tailscale의 공개 릴레이를 씁니다. 경로에 외부의 것을 전혀 두고 싶지 않다면 config.yaml에서 내장 릴레이를 켜고(derp.server.enabled: true) UDP 3478을 여세요. 그러면 중계 트래픽은 VPS 대역폭에서 차감됩니다.
솔직한 한계
공식 웹 대시보드가 없습니다. 사용자, 키, 라우트는 모두 CLI 명령입니다(두 번 해 보면 익숙해집니다). 호스팅형 서비스의 신기능은 Headscale에 늦게 나타나거나 아예 나타나지 않습니다. 그리고 이제 제어 서버는 여러분의 책임입니다. 서버가 멈춰도 기존 연결은 계속 동작하지만, 새 기기는 참여할 수 없고 키도 갱신되지 않습니다. 백업하세요. 전체 상태는 /var/lib/headscale에 있습니다.
홈랩, 가족, 또는 기기 지도를 제3자 서버에서 가져오고 싶은 작은 팀에게, 이것은 $8짜리 VPS의 가장 좋은 쓰임새 중 하나입니다.
관련
- WireGuard VPN 셀프 호스팅: 터널 하나면 충분하다면 순수 WireGuard
- VPN용 VPS
- Home Assistant 원격 접속용 VPS
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.