🟢 Beginner

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:

  1. Single point of failure — keď padne, nikto sa nedostane nikam.
  2. Pomalý — packet ide remote → DC → remote, aj keď dva remote sú v tej istej kaviarni.
  3. Ťažký na konfiguráciu — certifikáty, routing, firewall rules, DNS.
  4. 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:

  1. Vystaviť službu cez tailnet — vytvoríte Service s annotation tailscale.com/expose=true a Operator vytvorí StatefulSet s Tailscale agentom a zverejní službu ako MagicDNS meno v tailnete.
  2. 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:443100.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.

Odkazy