Server & síť/Tailscale
Domů odkudkoli, bez otevřeného portu.
Mobil, počítač a server se vidí, ať jsem kdekoli. Na routeru není otevřený jediný port. Veřejný web jde jinudy a domácí síť vidí jen moje zařízení.
K čemu to je
Soukromá síť mezi mými zařízeními
Tailscale je VPN, ale jiná, než na jakou jsi zvyklý. Není to jeden server, ke kterému se všichni připojují. Každé moje zařízení dostane vlastní adresu v rozsahu VPN a mluví s ostatními napřímo, šifrovaně přes WireGuard. Firma Tailscale jen pomůže zařízením se najít. Samotný provoz přes ni neteče.
Klasická cesta domů je otevřít port na routeru a doufat. Tím vystavíš službu celému internetu a musíš ji hlídat. Tady se naopak nic neotevírá. Server se sám přihlásí ven a čeká na zařízení, která znají jeho klíč. Pro všechny ostatní neexistuje.
Lidsky řečeno: moje zařízení jsou pořád v jednom bytě, i když sedím v tramvaji.
Proč
Přestalo mi stačit ovládat světla
Home Assistant jsem zvenku ovládal přes placený cloud výrobce. Fungovalo to, ale jen pro Home Assistant. Na server, na admin rozhraní ani na vlastní DNS jsem se zvenku nedostal vůbec.
Otevřít port jsem nechtěl. Domácí adresa by byla na očích a každou službu bych musel zabezpečit zvlášť. Chtěl jsem jednu bránu, kterou vidí jen moje zařízení, a zbytek nechat zavřený.
Jak to funguje
Jedna brána a pravidla, kdo smí dál
- Server dělá subnet router. Inzeruje domácí síť do VPN. Z mobilu venku se dostanu na Home Assistant, router i AdGuard, jako bych seděl doma.
- Pravidla říkají, kdo smí do domácí sítě. Všechna zařízení se vidí navzájem. Do domácí sítě přes server smí jen počítač a mobil, nic dalšího.
- DNS jde přes VPN na AdGuard. Mobil venku má stejný filtr jako doma. Reklamy a telemetrie padají i na mobilních datech.
- SSH poslouchá jen na VPN adrese. Z domácí sítě ani z internetu se k němu nikdo nedostane. Veřejný web běží zvlášť přes Cloudflare Tunnel, ten také nic neotevírá.
Co jsem zjistil
Co se ukázalo
Zařízení v síti
Server, počítač, mobil a Home Assistant. Ten má vlastního klienta, protože běží na jiném stroji než server.
Smí do domácí sítě
Jen počítač a mobil. Když se některé ztratí, smažu ho v konzoli a přístup končí. Ostatní vidí jen sebe navzájem.
Portů otevřených zvenku
Server se připojuje ven, nic nečeká na příchozí spojení. Audit po nastavení to potvrdil: bez exit node, bez veřejného sdílení.
Co jsem se naučil
Tři věci, které v návodech nejsou
SNAT schoval, kdo se ptá
V logu AdGuardu se všechny dotazy z VPN slévaly do jedné adresy. Dva dny jsem podezříval Docker. Mohl za to překlad adres v Tailscale, který provoz z VPN maskuje za server. Po vypnutí vidím každé zařízení jménem.
Zařízení s vlastním Tailscale neodpoví na domácí adresu
Home Assistant má vlastního klienta. Když na něj z VPN jdu přes domácí adresu, paket dojde, ale odpověď se vydá jinou cestou a zahodí se. Z VPN na něj chodím jeho VPN adresou.
Routa musí být schválená v konzoli
Server inzeroval domácí síť už dřív, ale v konzoli jsem ji nikdy nepotvrdil. Štítek Subnets svítil žlutě a z mobilu šel jen server. Jeden klik v konzoli, hotovo.
Pro AI agenta
Postav si to u sebe
Chceš si to postavit u sebe? Zkopíruj návod a dej ho svému AI agentovi, třeba Claude Code nebo Codexu. Je v něm cíl, postup krok za krokem, pasti, na které jsem narazil, a jak ověřit, že to funguje. Adresy ani hesla v něm nejsou, ty agent doplní s tebou.
Pro zvědavé
Technické detaily
Nastavení subnet router · grants · DNS
- Subnet router
- Server inzeruje domácí síť, routa schválená v konzoli, forwarding zapnutý. Na routeru statická routa pro rozsah VPN zpět na server, jinak zařízení v domácí síti nemají kudy odpovědět.
- Přístup
- Politika v grants syntaxi. První grant: všechna zařízení se vidí navzájem. Druhý: do domácí sítě přes routu smí jen dvě vyjmenovaná zařízení. Nové zařízení se přidává ručně.
- SNAT
- Vypnutý (
--snat-subnet-routes=false). Klienti z VPN chodí do domácí sítě pod svou VPN adresou a AdGuard je rozezná jako samostatné klienty. - DNS
- V konzoli globální nameserver = server s AdGuardem, override zapnutý. Server sám DNS z VPN nepřebírá, aby nezávisel na vlastním kontejneru.
Pasti pro ty, kdo to staví taky
Bez statické routy na routeru vypadá subnet router jako funkční a přitom z domácí sítě nic neodpovídá. Zařízení s vlastním klientem Tailscale kontaktovat jen jeho VPN adresou, rp_filter zahodí odpověď po domácí síti. Na počítači, který je fyzicky doma, přijímání rout vypnout, jinak jde i router tunelem a při výpadku serveru počítač ztratí domácí síť. Bez exit node a bez Funnel: VPN slouží jen k přístupu dovnitř, ne jako cesta na internet. Expirace klíčů vypnutá vědomě, ztracené zařízení se maže ručně.
Dál