ťařina
Obsah Soubory
Vzdálený přístup

Přehled možností

Aktualizováno 4 min čtení 769 slov

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í:

  1. Zapni IPv6, protože ti dá veřejné adresy nezávisle na tom, co dělá poskytovatel s IPv4
  2. Postav WireGuard a přes něj se dostávej ke všemu osobnímu
  3. Reverse proxy jen pro to, co má být opravdu veřejné
  4. 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.