Přehled možností
Vzdálený přístup
Chceš se z venku dostat domů — na NAS, na kameru, na server. Existují čtyři přístupy a liší se hlavně tím, jak velkou plochu vystavuješ internetu.
Přehled
| Metoda | Vystavuje ven | Náročnost | Vhodné pro |
|---|---|---|---|
| Port forward | konkrétní službu | nejnižší | jedna veřejná služba |
| VPN | jeden UDP port | nízká | přístup k celé síti pro sebe |
| Reverse proxy | jeden port pro víc služeb | střední | víc webů na jedné adrese |
| Tunel přes třetí stranu | nic | nízká | když nemáš veřejnou IP |
Doporučení, když se nechceš rozhodovat: VPN pro sebe, reverse proxy pro to, co má být veřejné.
Předpoklad: veřejná adresa
Nic z prvních tří možností nefunguje bez veřejné IP adresy. Ověř si to:
curl -4 https://ifconfig.co
a porovnej s tím, co ukazuje tvůj router na WAN rozhraní. Když se to liší, jsi za CGNATem nebo dvojitým NATem a musíš to nejdřív vyřešit.
Pokud máš funkční IPv6, máš veřejnou adresu vždycky, bez ohledu na CGNAT. To je jeden z nejlepších praktických důvodů, proč ho zapnout.
Dynamické DNS
Domácí adresa se obvykle občas mění. DDNS znamená, že si držíš doménu, která ukazuje na tvou aktuální adresu, a klient ji při změně aktualizuje.
Většina routerů má DDNS klienta zabudovaného. Z poskytovatelů jsou běžné DuckDNS (zdarma), Cloudflare (zdarma, když u nich máš doménu) a No-IP.
Dvě věci, na které se zapomíná:
AAAA záznam. Když máš IPv6, musí se aktualizovat zvlášť. Ne každý klient to umí.
TTL. Nastav ho nízko, třeba 60 vteřin. Když je vysoký, po změně adresy se na tebe půl dne nikdo nedostane.
1. Port forward
Nejjednodušší a nejrizikovější. Otevřeš port a služba je z internetu dostupná pro každého.
Popsané v NAT a port forwarding.
Použij ho, když je služba navržená k tomu být veřejná a ty ji udržuješ aktualizovanou. Web, veřejný Git server, herní server.
Nepoužívej ho pro SMB, RDP, databáze, administrační rozhraní a cokoliv, co má přihlašovací formulář a nemá dvoufaktorové ověření. Tyhle věci patří za VPN.
Když už, tak minimálně:
- silné heslo nebo klíč, nikdy výchozí přihlašovací údaje
- fail2ban nebo obdoba proti hrubé síle
- pravidelné aktualizace, protože veřejnou službu skenují roboti nepřetržitě
2. VPN
Postavíš šifrovaný tunel a přes něj se chováš, jako bys byl doma. Ven vystavuješ jediný UDP port, na kterém bez správného klíče nedostaneš ani odpověď.
Tohle je správná odpověď pro přístup k vlastním věcem. Podrobný návod je ve WireGuardu.
Výhody jsou zásadní. Nic dalšího nevystavuješ. Dostaneš se na všechno včetně věcí, které by veřejné být nikdy neměly. A ve veřejné WiFi máš šifrovaný provoz zadarmo.
Nevýhoda je, že to musíš mít nastavené na každém zařízení, ze kterého se chceš připojit. Pro sdílení s kamarády se nehodí.
3. Reverse proxy
Jedna služba poslouchá na portu 443 a podle doménového jména rozhoduje, kam požadavek přepošle.
flowchart LR
I[Internet] --> P[Reverse proxy<br/>port 443]
P -->|nas.example.cz| A[NAS :5000]
P -->|foto.example.cz| B[Immich :2283]
P -->|home.example.cz| C[Home Assistant :8123]
Řeší několik problémů naráz. Máš jeden otevřený port místo pěti. Certifikáty od Let's Encrypt spravuje proxy centrálně a automaticky. Můžeš před služby přidat jednotné přihlášení. A vnitřní služby nemusí umět HTTPS vůbec.
Běžné volby: Caddy (nejjednodušší, certifikáty řeší sám bez konfigurace), Nginx Proxy Manager (klikací rozhraní), Traefik (nejlepší pro Docker, umí se konfigurovat sám podle štítků kontejnerů).
Minimální konfigurace v Caddy vypadá takhle a to je opravdu všechno:
nas.example.cz {
reverse_proxy 192.168.1.10:5000
}
Certifikát si vyřídí sám při prvním spuštění.
4. Tunel přes třetí stranu
Když nemáš veřejnou adresu a nemůžeš ji získat. Služba běžící u tebe naváže spojení ven k poskytovateli a ten pak funguje jako tvoje veřejná tvář.
Cloudflare Tunnel je zdarma a funguje dobře pro weby. Nevýhoda: veškerý provoz jde přes Cloudflare, který ho vidí rozšifrovaný.
Tailscale je WireGuard s automatickým prostupem přes NAT. Technicky je to VPN, ale funguje i tam, kde běžná VPN ne. Pro osobní použití zdarma. Pokud jsi za CGNATem a chceš se dostat domů, tohle je nejjednodušší cesta.
ngrok a podobné se hodí na dočasné vystavení něčeho při vývoji, ne na trvalý provoz.
Reverzní tunel přes SSH je varianta, kterou si postavíš sám na jakékoliv laciné VPS. ssh -R otevře port na cizím stroji a provoz vyleze u tebe doma, takže veřejnou adresu potřebuje jen ta VPS. Detaily i s trvalým provozem přes systemd jsou v SSH do hloubky.
Pátá možnost: jen SSH
Pro leccos nepotřebuješ ani jedno z toho. SSH samo umí přesměrovat porty oběma směry i fungovat jako SOCKS proxy, takže se přes jediné spojení dostaneš na administrační rozhraní, které záměrně poslouchá jen na 127.0.0.1:
ssh -N -L 8080:localhost:80 server # web serveru u sebe na localhost:8080
ssh -N -D 1080 server # SOCKS proxy do domácí sítě
ssh -J brana vnitrni-server # skok přes bránu bez přeposílání agenta
Na jednorázovou potřebu je to rychlejší než cokoliv jiného. Na každodenní pohodlí je lepší WireGuard. Viz SSH do hloubky.
Co bych udělal
Pro naprostou většinu domácností:
- Zapni IPv6, protože ti dá veřejné adresy nezávisle na tom, co dělá poskytovatel s IPv4
- Postav WireGuard a přes něj se dostávej ke všemu osobnímu
- Reverse proxy jen pro to, co má být opravdu veřejné
- Port forward téměř nikdy
A cokoliv, co vystavíš ven, měj v oddělené VLANě s pravidlem, které mu zakazuje iniciovat spojení dovnitř. Když to někdo prolomí, ať se nedostane dál.