TL;DR: Nainstaluji Wireguard na VPS, připojím se k němu z domácího routeru na OpenWRT a získám přístup k domácí podsíti z telefonu.
Pokud máte na domácím serveru osobní infrastrukturu nebo doma spoustu zařízení řízených přes IP, jistě chcete mít k nim přístup z práce, z autobusu, vlaku a metra. Nejčastěji se pro takové úkoly pořizuje IP adresa od poskytovatele, po které se porty každé služby přesměrovávají ven.
Místo toho jsem nastavil VPN s přístupem do domácí lokální sítě. Výhody tohoto řešení:
- Průhlednost: Cítím se jako doma za jakýchkoli okolností.
- Jednoduchost: Nastavil jsem a zapomněl, není potřeba myslet na přesměrování každého portu.
- Cena: Již mám VPS, pro takové úkoly je moderní VPN téměř zdarma na zdrojích.
- Bezpečnost: Nic není vystaveno ven, mohu nechat MongoDB bez hesla a nikdo neukradne data.
Jak již to bývá, existují také nevýhody. Za prvé, budete muset nastavit každého klienta zvlášť, včetně strany serveru. Může to být nepohodlné při velkém počtu zařízení, z nichž chcete mít přístup k službám. Za druhé, na vaší práci může být lokální síť, která se rozsahově překrývá – budete muset tento problém vyřešit.
Budeme potřebovat:
- VPS (v mém případě na Debianu 10).
- Router na OpenWRT.
- Telefon.
- Domácí server s nějakou webovou službou pro testování.
- Přímé ruce.
Jako technologii VPN budu používat Wireguard. Toto řešení má také silné a slabé stránky, nebudu je popisovat. Pro VPN používám podsíť 192.168.99.0/24, a doma mám 192.168.0.0/24.
Konfigurace VPS
Pro účel stačí i ten nejchudší VPS za 30 korun měsíčně, pokud máte štěstí a podaří se vám takový .
Všechny operace na serveru provádím jako root na čistém zařízení, při potřebě přidejte `sudo` a upravte pokyny.
Wireguard ještě nebyl zařazen do stabilní verze, takže provádím `apt edit-sources` a přidávám backporty dvěma řádky na konec souboru:
deb http://deb.debian.org/debian/ buster-backports main
# deb-src http://deb.debian.org/debian/ buster-backports main
Balíček se instaluje běžným způsobem: apt update && apt install wireguard.
Dále generujeme pár klíčů: wg genkey | tee /etc/wireguard/vps.private | wg pubkey | tee /etc/wireguard/vps.public. Tento úkon zopakujte ještě dvakrát pro každé zařízení účastníka schématu. Změňte cesty k souborům s klíči pro jiné zařízení a nezapomeňte na bezpečnost soukromých klíčů.
Nyní připravíme konfiguraci. Do souboru /etc/wireguard/wg0.conf se umísťuje konfigurace:
[Interface]
Adresa = 192.168.99.1/24
Poslouchací port = 57953
Soukromý klíč = 0JxJPUHz879NenyujROVK0YTzfpmzNtbXmFwItRKdHs=
[Peer] # OpenWRT
PublicKey = 36MMksSoKVsPYv9eyWUKPGMkEs3HS+8yIUqMV8F+JGw=
AllowedIPs = 192.168.99.2/32,192.168.0.0/24
[Peer] # Smartphone
PublicKey = /vMiDxeUHqs40BbMfusB6fZhd+i5CIPHnfirr5m3TTI=
AllowedIPs = 192.168.99.3/32
V sekci [Interface] jsou nastavení samotného stroje, a v [Peer] — nastavení pro ty, kteří se k němu budou připojovat. V AllowedIPs se přes čárku zapisují podsítě, které budou směrovány na příslušného peera. Z toho důvodu musí mít peery zařízení 'klientů' v podsíti VPN masku /32, vše ostatní bude směrováno serverem. Jelikož domácí síť bude směrována přes OpenWRT, v AllowedIPs přidáme příslušnou domácí podsíť. V PrivateKey a PublicKey uložte privátní klíč vygenerovaný pro VPS a veřejné klíče peerů odpovídajícím způsobem.
Na VPS stačí spustit příkaz, který aktivuje rozhraní a přidá ho do automatického spuštění: systemctl enable --now wg-quick@wg0. Aktuální stav připojení můžete zkontrolovat příkazem wg.
Konfigurace OpenWRT
Vše, co potřebujete pro tuto fázi, je v modulu luci (webové rozhraní OpenWRT). Přihlaste se do něj a v menu System otevřete záložku Software. OpenWRT neuchovává cache na stroji, proto musíte aktualizovat seznam dostupných balíčků stisknutím zeleného tlačítka Update lists. Po dokončení do filtru zadejte luci-app-wireguard a, podíváte-li se na okno s krásným stromem závislostí, nainstalujte tento balíček.
V menu Networks vyberete Interfaces a kliknete na zelené tlačítko Add New Interface pod seznamem již existujících. Po zadání jména (také wg0 v mém případě) a výběru protokolu WireGuard VPN se otevře formulář nastavení se čtyřmi záložkami.

Na záložce General Settings musíte zadat privátní klíč a IP adresu připravenou pro OpenWRT spolu s podsítí.

Na záložce Firewall Settings přidejte rozhraní do lokální sítě. Tak budou připojení z VPN svobodně vstupovat do lokální sítě.

Na záložce Peers kliknete na jediné tlačítko, poté v aktualizovaném formuláři vyplníte údaje VPS serveru: veřejný klíč, Allowed IPs (je třeba směrovat celou VPN podsíť na server). Do Endpoint Host a Endpoint Port zadejte odpovídající IP adresu VPS s portem uvedeným dříve v direktivě ListenPort. Zaškrtněte Route Allowed IPs, aby byly vytvořeny trasy. A nezapomeňte vyplnit Persistent Keep Alive, jinak bude tunel z VPS k routeru přerušen, pokud ten bude za NAT.


Poté můžete uložit nastavení a na stránce se seznamem rozhraní kliknout na Save and apply. V případě potřeby jasně spusťte rozhraní tlačítkem Restart.
Nastavit smartphone
Budete potřebovat klienta Wireguard, který je dostupný v , a App Store. Po otevření aplikace stiskněte plus a v sekci Interface zadejte název připojení, privátní klíč (veřejný bude vygenerován automaticky) a adresu telefonu s maskou /32. V sekci Peer zadejte veřejný klíč VPS, pár adresa: port VPN serveru jako Endpoint a trasy do VPN a domácí podsítě.
Hrubý snímek obrazovky z telefonu

Stiskněte disketu v rohu, zapněte a…
Hotovo
Nyní můžete získat přístup k domácímu monitorování, měnit nastavení routeru nebo dělat cokoliv na úrovni IP.
Snímky obrazovky z lokální sítě


Zdroj: habr.com
