VPN у хатнюю лакалку

VPN у хатнюю лакалку

TL, д-р: я ўсталёўваю Wireguard на VPS, падключаюся да яго з хатняга роўтара на OpenWRT, і атрымліваю доступ да хатняй падсеткі з тэлефона.

Калі вы трымаеце на хатнім серверы асабістую інфраструктуру ці ў вас дома мноства дэвайсаў кіраваных па IP, тыя вы напэўна жадаеце мець да іх доступ з працы, з аўтобуса, цягнікі і метрo. Часцей за ўсё для аналагічных задач набываецца IP у правайдэра, пасля чаго парты кожнага сэрвісу пракідваюцца вонкі.

Замест гэтага я наладзіў VPN з доступам у хатнюю лакалку. Плюсы такога рашэння:

  • празрыстасць: адчуваю сябе як дома пры любых абставінах.
  • Прастата: наладзіў і забыўся, не трэба думаць аб пракідзе кожнага порта.
  • Кошт: у мяне ўжо ёсць VPS, для такіх задач сучасны VPN амаль бясплатны па рэсурсах.
  • бяспеку: нічога не тырчыць вонкі, можна пакінуць MongoDB без пароля і ніхто не пацягне дадзеныя.

Як заўжды, ёсць і мінусы. Па-першае, вам давядзецца настройваць кожны кліент па асобнасці, у тым ліку, на баку сервера. Можа быць няёмка пры наяўнасці вялікай колькасці прылад, з якіх жадаецца мець доступ да сэрвісаў. Па-другое, у вас на працы можа апынуцца супадальная па дыяпазоне лакалка – давядзецца вырашаць гэтую праблему.

Нам спатрэбіцца:

  1. VPS (у маім выпадку на Debian 10).
  2. Роўтар на OpenWRT.
  3. Тэлефон.
  4. Хатні сервер з якім-небудзь вэб-сэрвісам для праверкі.
  5. Прамыя рукі.

У якасці тэхналогіі VPN я буду выкарыстоўваць Wireguard. Гэтае рашэнне таксама мае моцныя і слабыя бакі, я іх не буду апісваць. Для VPN я выкарыстоўваю падсетку 192.168.99.0/24, а дома ў мяне 192.168.0.0/24.

Канфігурацыя VPS

Для справы хопіць нават самага жабрацкага VPS за 30 рублёў у месяц, калі вам павязе такі ўрваць.

Усе аперацыі на серверы я выконваю ад рута на чыстай машыне, пры неабходнасці дадайце `sudo` і адаптуйце інструкцыі.

Wireguard не паспелі завезці ў стэйбл, таму я выконваю `apt edit-sources` і дадаю бэкпарты двума радкамі ў канец файла:

deb http://deb.debian.org/debian/ buster-backports main
# deb-src http://deb.debian.org/debian/ buster-backports main

Пакет усталёўваецца звыклай выявай: apt update && apt install wireguard.

Далей генеруем пару ключоў: wg genkey | tee /etc/wireguard/vps.private | wg pubkey | tee /etc/wireguard/vps.public. Гэтую аперацыю паўторыце яшчэ двойчы для кожнага девайса-удзельніка схемы. Памяняйце шляхі да файлаў з ключамі для іншай прылады і не забудзьцеся аб бяспецы прыватных ключоў.

Цяпер рыхтуем канфіг. У файл /etc/wireguard/wg0.conf змяшчаецца канфіг:

[Interface] Address = 192.168.99.1/24
ListenPort = 57953
PrivateKey = 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

У секцыі [Interface] паказваюцца налады самой машыны, а ў [Peer] - Настройкі для тых, хто будзе да яе падключацца. У AllowedIPs праз коску прапісваюцца падсеткі, якія будуць маршрутызавацца ў адпаведнага балю. З-за гэтага балі прылад-«кліентаў» у падсеткі VPN павінны мець маску /32, усё астатняе будзе маршрутызавацца серверам. Бо хатняя сетка будзе маршрутызавацца праз OpenWRT, у AllowedIPs адпаведнага балю дапісваем хатнюю падсетку. У PrivateKey и PublicKey раскладзеце прыватны ключ згенераваны для VPS і публічныя ключы баляў адпаведна.

На VPS засталося толькі запусціць каманду, якая падніме інтэрфейс і дадасць яго ў аўтазапуск: systemctl enable --now wg-quick@wg0. Бягучы статут злучэнняў можна праверыць камандай wg.

Канфігурацыя OpenWRT

Усё, што трэба для гэтага этапу ёсць у модулі luci (вэб-інтэрфейс OpenWRT). Залагіцеся ў ім і ў меню System адкрыйце ўкладку Software. OpenWRT не захоўвае кэш на машыне, таму трэба абнавіць спіс даступных пакетаў, націснуўшы на зялёную кнопку Update lists. Пасля завяршэння ў фільтр убіваеце luci-app-wireguard і, зірнуўшы на акенца з прыгожым дрэвам залежнасцяў, усталёўваеце гэты пакет.

У меню Networks выбіраеце Interfaces і ціснеце зялёную кнопку Add New Interface пад спісам ужо наяўных. Пасля ўводу імя (гэтак жа wg0 у маім выпадку) і выбару пратаколу WireGuard VPN адчыняецца форма налад з чатырма ўкладкамі.

VPN у хатнюю лакалку

На ўкладцы General Settings трэба ўбіць прыватны ключ і IP адрас нарыхтаваны для OpenWRT разам з падсеткай.

VPN у хатнюю лакалку

На ўкладцы Firewall Settings заводзіце інтэрфейс у лакальную сетку. Так злучэнні з VPN будуць вольна пападаць у лакалку.

VPN у хатнюю лакалку

На ўкладцы Peers ціснеце адзіную кнопку, пасля чаго ў абноўленай форме запаўняеце дадзеныя VPS-сервера: публічны ключ, Allowed IPs (трэба ўсю VPN-падсетку замаршрутызаваць у сервер). У Endpoint Host і Endpoint Port уводзіце адпаведна IP адрас VPS з портам у раней паказаным у дырэктыве ListenPort. Адзначце Route Allowed IPs, каб былі створаны маршруты. І абавязкова запоўніце Persistent Keep Alive, інакш тунэль тунэль ад VPS да роўтара будзе абрывацца, калі апошні за NAT.

VPN у хатнюю лакалку

VPN у хатнюю лакалку

Пасля гэтага можна захаваць наладкі, а затым на старонцы са спісам інтэрфейсаў націснуць Save and apply. Пры неабходнасці відавочна запусціце інтэрфейс кнопкай Restart.

Наладжваем смартфон

Вам спатрэбіцца кліент Wireguard, ён даступны ў F-Droid, Google Play і App Store. Адкрыўшы дадатак цісне плюсік і ў секцыі Interface уводзіце імя злучэння, прыватны ключ (публічны згенеруецца аўтаматычна) і адрас тэлефона з маскай /32. У секцыі Peer паказваеце публічны ключ VPS, пары адрас: порт VPN-сервера ў якасці Endpoint і маршруты да VPN- і хатняй падсеткі.

Тоўсты скрыншот з тэлефона
VPN у хатнюю лакалку

Ціснеце на дыскетку ў куце, уключаеце і…

Гатова

Цяпер вы можаце атрымаць доступ да хатняга маніторынгу, змяняць налады роўтара, ці рабіць што заўгодна на ўзроўні IP.

Скрыншоты з лакалкі
VPN у хатнюю лакалку

VPN у хатнюю лакалку

VPN у хатнюю лакалку

Крыніца: habr.com

Дадаць каментар