Tailscale — Zero-Trust VPN Mesh
Tailscale je moderná VPN služba postavená nad protokolom WireGuard, ktorá rieši klasický problém firemných VPN jedným elegantným spôsobom: všetky vaše zariadenia (servery, notebooky, mobily, container pody) vytvoria peer-to-peer mesh, v ktorom každé komunikuje priamo s každým ďalším, šifrované koncom-koncom, a autorizované cez váš existujúci SSO (Google, GitHub, Microsoft, Okta).
Výsledok: žiaden VPN concentrator v DC, žiadne konfigurácie tunelov, žiadne IP blokovanie, žiadne GRE/IPsec. Jediný príkaz tailscale up a zariadenie je súčasťou vašej súkromnej siete — nech beží kdekoľvek.
Prečo Tailscale a nie klasické VPN?
Tradičná firemná VPN (OpenVPN, IPsec, L2TP) funguje ako hub-and-spoke:
[VPN concentrator]
/ | \
[laptop] [laptop] [laptop]
Všetka premávka ide cez centrálny concentrator, ktorý je:
- Single point of failure — keď padne, nikto sa nedostane nikam.
- Pomalý — packet ide remote → DC → remote, aj keď dva remote sú v tej istej kaviarni.
- Ťažký na konfiguráciu — certifikáty, routing, firewall rules, DNS.
- Neškáluje sa na mobile-first tímy — koncentrátor musí byť dimenzovaný na peak load.
Tailscale rieši problém tým, že control plane a data plane oddeľuje:
- Control plane (Tailscale servery) — rieši identity, key distribution, NAT traversal, ACL politiku. Nikdy nevidí vaše dáta.
- Data plane (WireGuard medzi peers) — šifrovaná peer-to-peer premávka priamo medzi zariadeniami.
[laptop A]◄─────wireguard tunel──────►[laptop B]
▲ ▲
│ (iba keys a ACL, ziadne data) │
└──────────►[Tailscale]◄───────────────┘
control plane
Výsledkom je mesh sieť s centralizovanou politikou, ale bez centralizovaného data flow.
WireGuard v skratke
Tailscale stojí na WireGuard — modernom VPN protokole od Jasona Donenfelda, ktorý je:
- Minimalistický — ~4000 riadkov kódu (oproti ~100k v OpenVPN).
- Rýchly — používa moderné krypto (ChaCha20, Curve25519, BLAKE2), beží v kernel space na Linuxe.
- Jednoduchý — každý peer má
private key+ zoznam[Peer]sekcií s pubkey a allowed IPs. - UDP-only — funguje cez NAT, s keepalive.
Konfigurácia čistého WireGuardu vyzerá takto:
[Interface]
PrivateKey = ...
Address = 10.0.0.1/24
[Peer]
PublicKey = ...
AllowedIPs = 10.0.0.2/32
Endpoint = peer2.example.com:51820
Pri dvoch peeroch je to jednoduché. Pri 100 peeroch začne byť otrasné udržiavať zoznamy kľúčov, IP alokácie a NAT traversal. Tailscale toto celé automatizuje.
Inštalácia a prvý tailscale up
# Linux
curl -fsSL https://tailscale.com/install.sh | sh
# macOS / Windows / iOS / Android — cez app store
# Pripojenie
sudo tailscale up
tailscale up otvorí URL, kde sa prihlásite cez váš SSO. Po prihlásení zariadenie získa:
- Unikátnu IP z rozsahu
100.64.0.0/10(CGNAT blok). - MagicDNS meno — napr.
my-laptop.tail-scale-id.ts.net. - Identitu v tailnete — viazanú na váš email/SSO.
Over:
tailscale status
tailscale ip
tailscale ping other-device
Odteraz môžete cez ssh user@other-device pristupovať k inému zariadeniu kdekoľvek na svete, bez port-forwardingu, bez public IP, bez manuálnych kľúčov.
Tailnet, identity a MagicDNS
Tailnet je váš súkromný priestor. Keď sa prihlásite cez user@company.com, všetky vaše zariadenia patria do tailnetu spoločnosti. Tailnet môže byť:
- Personal — jeden užívateľ, napr. pre vlastné servery.
- Organization — zdieľaný viacerými užívateľmi, s ACL politikou kto môže kde.
MagicDNS automaticky vytvára DNS mená pre zariadenia:
my-laptop.tail-scale-id.ts.net → 100.101.102.103
prod-server-1.tail-scale-id.ts.net → 100.101.102.104
Plus short names: my-laptop, prod-server-1 fungujú bez sufixu.
ACL súbor — politika kto kde
Tailnet má JSON/HuJSON ACL súbor (webadmin → Access Controls), ktorý definuje, ktoré zariadenia môžu s ktorými komunikovať:
{
"groups": {
"group:devs": ["alice@company.com", "bob@company.com"],
"group:sre": ["carol@company.com"],
},
"tagOwners": {
"tag:prod": ["group:sre"],
"tag:ci": ["autogroup:admin"],
},
"acls": [
// Devs vidia svoje stroje a dev servery
{
"action": "accept",
"src": ["group:devs"],
"dst": ["tag:dev:*"],
},
// SRE vidí aj production
{
"action": "accept",
"src": ["group:sre"],
"dst": ["tag:prod:*", "tag:dev:*"],
},
// CI runnery môžu pushovať do production registries
{
"action": "accept",
"src": ["tag:ci"],
"dst": ["tag:prod:5000"],
},
],
}
tag:prod sa priradí k serveru pri tailscale up --advertise-tags=tag:prod (s vyhradenou autorizáciou v ACL).
Subnet routers — sprístupnenie existujúcej siete
Keď máte existujúcu LAN (napr. 192.168.10.0/24) s printermi, NAS a starými servermi, nechcete na každé z nich inštalovať Tailscale. Riešenie: subnet router — jeden node, ktorý advertise-uje celú subnet do tailnetu:
# Na subnet router node
sudo sysctl -w net.ipv4.ip_forward=1
sudo tailscale up --advertise-routes=192.168.10.0/24
# V admin konzole: Machines → subnet router → Edit route settings → schváliť
Po schválení môžu ostatné členovia tailnetu pingnúť 192.168.10.50 a premávka pôjde cez tento router. Elegantné riešenie pre bridging home/office LAN do tailnetu.
Exit nodes — celá premávka cez Tailscale peer
Klasický VPN use-case: "chcem všetok internet cez VPN". V Tailscale na to slúžia exit nodes:
# Na zvolenom node (napr. VPS v Európe)
sudo tailscale up --advertise-exit-node
# Na klientovi
tailscale up --exit-node=europe-vps
Odteraz celá premávka klienta (default route) pôjde cez europe-vps. Vhodné na:
- Verejné WiFi → šifrovanie premávky cez svoj dôveryhodný node
- Prístup k geo-lokalizovaným službám
- Exit z dôveryhodnej krajiny
Tailscale v Kubernetes a kontajnerových prostrediach
Sidecar v K8s pode
Tailscale Operator nainštaluje CRDs a controller, ktorý vie:
- Vystaviť službu cez tailnet — vytvoríte
Services annotationtailscale.com/expose=truea Operator vytvorí StatefulSet s Tailscale agentom a zverejní službu ako MagicDNS meno v tailnete. - Sidecar v pode — pod dostane Tailscale sidecar container s prístupom do tailnetu.
Systemd service
Na bežnom server node stačí apt install tailscale + systemctl enable --now tailscaled. Pri boot sa node automaticky re-attached cez uložené stavové súbory.
CI runners
Veľmi častý use-case: GitHub self-hosted runner, ktorý potrebuje pristupovať k internej DB, ale nechcete ho vystaviť na internet. Runner si pri štarte spustí tailscale up --authkey=tskey-..., získa tailnet IP, má prístup iba k tomu, čo mu ACL povolí.
Headscale — open-source control plane
Tailscale klient je open-source (MIT), ale oficiálny control plane je SaaS. Pre firmy, ktoré potrebujú self-hosted riešenie, existuje Headscale — open-source implementácia Tailscale control plane API.
# Server
docker run -d \
--name headscale \
-v /var/lib/headscale:/var/lib/headscale \
-p 8080:8080 \
headscale/headscale:latest serve
# Klient nepoužíva login.tailscale.com, ale vlastnú adresu
tailscale up --login-server=https://headscale.mycompany.com
Headscale podporuje MagicDNS, ACLs, subnet routers. Vynechané sú niektoré enterprise features (SSH recording, tailnet lock, device posture).
Use-cases v praxi
1. Remote access k serverom bez bastionu. Klasický bastion/jump host má security risk a latency overhead. Tailscale rieši priamy P2P prístup s SSO autorizáciou.
2. Zero-trust access k interným nástrojom (GitLab, Grafana, Jenkins). Službu necháte bindnutú iba na Tailscale IP (0.0.0.0:443 → 100.x.x.x:443), a frontend je prístupný iba pre členov tailnetu.
3. Multi-cloud site-to-site. Servery v AWS, GCP a on-prem DC v jednom mesh bez VPN gateway komplikácie. Subnet routers prepoja celé VPC subnety.
4. Kubernetes napojenie na databázu. Cluster beží v managed K8s (EKS), DB je v separate VPC alebo on-prem. Tailscale sidecar v pode → priamy prístup bez peeringov.
5. Developer access k test environmentom. Každý developer má svoj tag, ACL povolí tag:dev-alice dostať sa iba na tag:staging. Keď developer odíde z firmy, SSO ho vyhodí a všetky jeho zariadenia stratia prístup.
Zhrnutie
Tailscale je dnes pravdepodobne najjednoduchší spôsob, ako postaviť súkromnú sieť naprieč zariadeniami v cloude, on-prem aj u ľudí doma. Kombinácia WireGuard performance + centralizovanej SSO identity + MagicDNS + ACL politiky uzatvára diery, ktoré klasické VPN roky nevedeli vyriešiť.
Pre malé tímy je zadarmo (do 100 zariadení), pre firmy je komerčný model. Ak potrebujete 100 % control cez self-hosted, Headscale to pokryje.
Väčšinu CTO, ktorí Tailscale nasadili, prekvapí, aká veľká časť existujúcej VPN a bastion infraštruktúry sa po jeho zavedení stane zbytočnou.