TL;DR: Instaluję Wireguard na VPS, łączę się z nim z domowego routera na OpenWRT i uzyskuję dostęp do domowej podsieci z telefonu.
Jeśli posiadasz osobistą infrastrukturę na domowym serwerze lub masz wiele urządzeń zarządzanych przez IP, na pewno chcesz mieć do nich dostęp z pracy, z autobusu, pociągu lub metra. Najczęściej do takich zadań kupuje się IP od dostawcy, a następnie przekierowuje się porty każdego z usług na zewnątrz.
Zamiast tego skonfigurowałem VPN z dostępem do domowej lokalnej sieci. Zalety tego rozwiązania:
- Przejrzystość: czuję się jak w domu w każdej sytuacji.
- Prostota: skonfigurowane i zapomniane, nie trzeba myśleć o przekierowywaniu każdego portu.
- Cena: mam już VPS, dla takich zadań nowoczesny VPN jest prawie darmowy pod względem zasobów.
- Bezpieczeństwo: nic nie jest wystawione na zewnątrz, można zostawić MongoDB bez hasła i nikt nie ukradnie danych.
Jak zawsze, są też minusy. Po pierwsze, będziesz musiał skonfigurować każdego klienta z osobna, w tym po stronie serwera. Może być to niewygodne, gdy masz dużą liczbę urządzeń, z których chcesz mieć dostęp do usług. Po drugie, w pracy możesz mieć lokalną sieć, która pokrywa się z twoją — będziesz musiał rozwiązać ten problem.
Będziemy potrzebować:
- VPS (w moim przypadku na Debianie 10).
- Router na OpenWRT.
- Telefon.
- Domowy serwer z jakimś serwisem webowym do testów.
- Sprawne ręce.
Jako technologię VPN będę używać Wireguard. To rozwiązanie ma również swoje mocne i słabe strony, ale ich nie opiszę. Dla VPN używam podsieci 192.168.99.0/24, a w domu mam 192.168.0.0/24.
Konfiguracja VPS
Do sprawy wystarczy nawet najtańszy VPS za 30 złotych miesięcznie, jeśli uda ci się taki .
Wszystkie operacje na serwerze wykonuję jako root na czystej maszynie, w razie potrzeby dodaj `sudo` i dostosuj instrukcje.
Wireguard nie został jeszcze wprowadzony do stabilnej wersji, więc wykonuję `apt edit-sources` i dodaję backporty dwiema liniami na koniec pliku:
deb http://deb.debian.org/debian/ buster-backports main
# deb-src http://deb.debian.org/debian/ buster-backports main
Pakiet instalowany jest w znany sposób: apt update && apt install wireguard.
Następnie generujemy parę kluczy: wg genkey | tee /etc/wireguard/vps.private | wg pubkey | tee /etc/wireguard/vps.public. Powtórz tę operację jeszcze dwa razy dla każdego urządzenia biorącego udział w schemacie. Zmień ścieżki do plików z kluczami dla innego urządzenia i nie zapomnij o bezpieczeństwie prywatnych kluczy.
Teraz przygotowujemy konfigurację. W pliku /etc/wireguard/wg0.conf umieszczamy konfigurację:
[Interface]
Adres = 192.168.99.1/24
PortSłuchania = 57953
KluczPrywatny = 0JxJPUHz879NenyujROVK0YTzfpmzNtbXmFwItRKdHs=
[Peer] # OpenWRT
PublicKey = 36MMksSoKVsPYv9eyWUKPGMkEs3HS+8yIUqMV8F+JGw=
AllowedIPs = 192.168.99.2/32,192.168.0.0/24
[Peer] # Smartfon
PublicKey = /vMiDxeUHqs40BbMfusB6fZhd+i5CIPHnfirr5m3TTI=
AllowedIPs = 192.168.99.3/32
W sekcji [Interface] są ustawienia samej maszyny, a w [Peer] — ustawienia dla tych, którzy będą się do niej łączyć. W AllowedIPs przez przecinek wpisuje się podsieci, które będą routowane do odpowiedniego pira. Z tego powodu piry urządzeń-„klientów” w podsieci VPN powinny mieć maskę /32, wszystko inne będzie routowane przez serwer. Ponieważ domowa sieć będzie routowana przez OpenWRT, w AllowedIPs odpowiedniego pira dopisujemy domową podsieć. W PrivateKey i PublicKey rozdzielcie prywatny klucz wygenerowany dla VPS oraz publiczne klucze pirów odpowiednio.
Na VPS wystarczy uruchomić polecenie, które podniesie interfejs i doda go do autostartu: systemctl enable --now wg-quick@wg0. Aktualny status połączeń można sprawdzić poleceniem wg.
Konfiguracja OpenWRT
Wszystko, co potrzeba na tym etapie, znajduje się w module luci (interfejs webowy OpenWRT). Zaloguj się do niego i w menu System otwórz zakładkę Software. OpenWRT nie przechowuje pamięci podręcznej na maszynie, dlatego należy zaktualizować listę dostępnych pakietów, klikając zielony przycisk Update lists. Po zakończeniu w filtrze wpisz luci-app-wireguard i, patrząc na okno z ładnym drzewem zależności, instalujesz ten pakiet.
W menu Networks wybierz Interfaces i kliknij zielony przycisk Add New Interface pod listą już istniejących. Po wpisaniu nazwy (tak jak w moim przypadku) oraz wyborze protokołu WireGuard VPN otworzy się formularz ustawień z czterema zakładkami. wg0 W zakładce General Settings należy wpisać prywatny klucz oraz adres IP przygotowany dla OpenWRT wraz z podsiecią.

W zakładce Firewall Settings dodaj interfejs do lokalnej sieci. Dzięki temu połączenia z VPN będą mogły swobodnie docierać do lokalnej sieci.

W zakładce Peers kliknij jedyną przycisk, po czym w zaktualizowanej formie uzupełnij dane VPS-serwera: publiczny klucz, Allowed IPs (należy zamrutować całą podsieć VPN do serwera). W Endpoint Host i Endpoint Port wprowadź odpowiednio adres IP VPS z portem podanym wcześniej w dyrektywie ListenPort. Zaznacz Route Allowed IPs, aby utworzyć trasy. I koniecznie wypełnij Persistent Keep Alive, w przeciwnym razie tunel od VPS do routera będzie przerywany, jeśli ten ostatni będzie za NAT.

Po tym można zapisać ustawienia, a następnie na stronie ze ściągiem interfejsów kliknąć Save and apply. W razie potrzeby uruchom interfejs ponownie przyciskiem Restart.


Po tym można zapisać ustawienia, a następnie na stronie z listą interfejsów kliknąć Zapisz i zastosuj. W razie potrzeby uruchom interfejs ponownie przyciskiem Uruchom ponownie.
Konfiguracja smartfona
Będziesz potrzebować klienta Wireguard, który jest dostępny w , i App Store. Otwierając aplikację, kliknij plusik i w sekcji Interfejs wpisz nazwę połączenia, klucz prywatny (klucz publiczny zostanie wygenerowany automatycznie) oraz adres telefonu z maską /32. W sekcji Peer wprowadź publiczny klucz VPS, parę adres: port serwera VPN jako Punkt końcowy oraz trasy do sieci VPN i domowej.
Zrzut ekranu z telefonu

Kliknij na dyskietkę w rogu, włącz i…
Gotowe
Teraz możesz uzyskać dostęp do zdalnego monitoringu, zmieniać ustawienia routera lub robić cokolwiek na poziomie IP.
Zrzuty ekranu z lokalnej sieci


Źródło: habr.com
