Mesh VPN to jedno z tych narzędzi, które po cichu ułatwiają wszystko: laptop, domowy serwer, telefon i VPS-y widzą się nawzajem pod prywatnymi adresami, gdziekolwiek są. Problem z hostowanymi sieciami mesh to serwer koordynujący: jakaś firma trzyma mapę wszystkich twoich urządzeń. Headscale to open-source'owy zamiennik tego serwera sterującego. Uruchom go na małym VPS-ie, dalej używaj zwykłych aplikacji klienckich, a mapa jest twoja.
Jak to się składa
- Headscale (na twoim VPS-ie) rozdaje adresy, rozsyła klucze publiczne i egzekwuje twoje ACL.
- Klienci to standardowe aplikacje Tailscale skierowane na twój serwer.
- Ruch płynie od urządzenia do urządzenia przez WireGuard. Serwer sterujący nigdy go nie przenosi.
Ten ostatni punkt tłumaczy, dlaczego wystarczy malutki plan: VPS odpowiada tylko na drobne żądania koordynacyjne.
Czego potrzebujesz
- Nano-IP ($8/mies.): 2 vCPU i 1 GB RAM to znacznie więcej, niż zużywa Headscale.
- Dedykowanego IPv4 i domeny, np.
hs.example.com. Urządzenia rozmawiają z serwerem sterującym przez HTTPS, więc VPS musi przyjmować przychodzący ruch na 443; plany NAT tego nie robią (szczegóły).
Instalacja (Debian 12 / Ubuntu 24.04)
Pobierz aktualny .deb ze strony wydań Headscale na GitHubie, podmieniając wersję na najnowszą:
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
Edytuj /etc/headscale/config.yaml; dwie linie, które mają znaczenie:
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
Postaw Caddy z przodu dla HTTPS:
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
Dodaj użytkownika i urządzenie
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
Starsze wydania oczekują w --user nazwy użytkownika zamiast ID; headscale preauthkeys create --help powie ci, czego oczekuje twoja wersja.
Na urządzeniu z Linuksem:
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
Na telefonach i komputerach aplikacja Tailscale pozwala ustawić własny serwer sterujący w ustawieniach. Uruchom headscale nodes list na VPS-ie, a twoje urządzenie powinno się tam pojawić.
Przekaźniki i przechodzenie przez NAT
Większość urządzeń łączy się bezpośrednio. Gdy dwóm się to nie udaje (restrykcyjne sieci komórkowe, podwójny NAT), ruch idzie przez przekaźnik DERP. Domyślnie Headscale używa publicznych przekaźników Tailscale, które widzą tylko zaszyfrowane pakiety. Jeśli nie chcesz niczego zewnętrznego na ścieżce, włącz wbudowany przekaźnik w config.yaml (derp.server.enabled: true) i otwórz UDP 3478. Przekazywany ruch liczy się wtedy do transferu twojego VPS-a.
Uczciwe ograniczenia
Nie ma oficjalnego panelu WWW: użytkownicy, klucze i trasy to polecenia CLI (nic strasznego, gdy zrobisz to dwa razy). Nowsze funkcje hostowanej usługi pojawiają się w Headscale później, o ile w ogóle. A serwer sterujący jest teraz twoją odpowiedzialnością: gdy nie działa, istniejące połączenia dalej działają, ale nowe urządzenia nie mogą dołączyć, a klucze się nie odświeżają. Rób kopie: cały stan to /var/lib/headscale.
Dla domowego labu, rodziny albo małego zespołu, który chce zabrać mapę swoich urządzeń z cudzych serwerów, to jedno z najlepszych zastosowań VPS-a za $8.
Powiązane
- Własny VPN WireGuard: czysty WireGuard, jeśli potrzebujesz tylko jednego tunelu
- VPS dla VPN
- VPS do zdalnego dostępu do Home Assistant
Komentarze
Brak komentarzy. Bądź pierwszy.