VPN в домашнюю локалку

TL;DR: я устанавливаю Wireguard на VPS, подключаюсь к нему с домашнего роутера на OpenWRT, и получаю доступ к домашней подсети с телефона.
Если вы держите на домашнем сервере личную инфраструктуру или у вас дома множество девайсов управляемых по IP, то вы наверняка хотите иметь к ним доступ с работы, из автобуса, поезда и метрo. Чаще всего для аналогичных задач приобретается IP у провайдера, после чего порты каждого сервиса пробрасываются наружу.
Вместо этого я настроил VPN с доступом в домашнюю локалку. Плюсы такого решения:
- Прозрачность: чувствую себя как дома при любых обстоятельствах.
- Простота: настроил и забыл, не надо думать о пробросе каждого порта.
- Цена: у меня уже есть VPS, для таких задач современный VPN почти бесплатен по ресурсам.
- Безопасность: ничего не торчит наружу, можно оставить MongoDB без пароля и никто не утащит данные.
- VPS (в моём случае на Debian 10).
- Роутер на OpenWRT.
- Телефон.
- Домашний сервер с каким-нибудь веб-сервисом для проверки.
- Прямые руки.
Конфигурация 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 открывается форма настроек с четырьмя вкладками.

На вкладке General Settings надо вбить приватный ключ и IP адрес заготовленный для OpenWRT вместе с подсетью.

На вкладке Firewall Settings заводите интерфейс в локальную сеть. Так соединения из VPN будут свободно попадать в локалку.

На вкладке Peers жмёте единственную кнопку, после чего в обновленной форме заполняете данные VPS-сервера: публичный ключ, Allowed IPs (надо всю VPN-подсеть замаршрутизировать в сервер). В Endpoint Host и Endpoint Port вводите соответственно IP адрес VPS с портом в ранее указанным в директиве ListenPort. Отметьте Route Allowed IPs, чтобы были созданы маршруты. И обязательно заполните Persistent Keep Alive, иначе туннель туннель от VPS к роутеру будет обрываться, если последний за NAT.


После этого можно сохранить настройки, а затем на странице со списком интерфейсов нажать Save and apply. При необходимости явно запустите интерфейс кнопкой Restart.
Настраиваем смартфон
Вам потребуется клиент Wireguard, он доступен в F-Droid, Google Play и App Store. Открыв приложение жмёте плюсик и в секции Interface вводите имя соединения, приватный ключ (публичный сгенерируется автоматически) и адрес телефона с маской /32. В секции Peer указываете публичный ключ VPS, пару адрес: порт VPN-сервера в качестве Endpoint и маршруты до VPN- и домашней подсети.

Жмёте на дискетку в углу, включаете и…
Готово
Теперь вы можете получить доступ к домашнему мониторингу, менять настройки роутера, или делать что угодно на уровне IP.
Локалка через интернет
У меня на блоге уже была одна статья про организацию локальной сети через интернет при помощи Hamachi, но сегодня мы поговорим про еще один сервис, используемый в подобных целях, — OpenVPN.
О чем вообще речь? О том, чтобы связать два или большее количество компьютеров, находящихся в совершенно разных местах, в единую локальную сеть. То есть физически то они будут далеко друг от друга, а виртуально — как будто в одной локальной сети. Что это дает?
- Возможность делиться файлами по сети;
- Возможность запустить какую-нибудь программу типа 1с, обращающуюся с одного компьютера на другой;
- Возможность играть вместе в игры и многое другое.
Сама статья написана не мной, предложил мне ее один из постоянных участников нашего форума, NicromanseR, за что я ему очень благодарен. Сам я лишь немного подредактировал статью, чтобы она больше ложилась в стилистику этого блога.
Итак, как же сделать локалку через интернет с использованием OpenVPN? Задача не совсем простая и потребует некоторого количества манипуляций, но предлагаемая инструкция описывает их достаточно подробно.

Итак, скачиваем дистрибутив программы с официального сайта, распаковываем его и устанавливаем всё по умолчанию. Внимание! Нужно подтвердить установку драйвера сетевого адаптера TAP-Win32 Adapter V9, когда Windows это попросит.
Openvpn сервер
Один из компьютеров будет выступать в качестве Openvpn сервера, к нему будут подключаться другие компьютеры. Желательно, чтобы на нем был выделенный (постоянный) IP адрес. Начнем с его настройки.
- Запустите окно командной строки Пуск – Выполнить (или Win+R) – cmd.exe
- Cамая сложная часть настройки – генерация сертификатов и ключей. Здесь нужно быть предельно внимательным и точно следовать инструкциям. В окне консоли вводим без кавычек «cd C:\Program Files\OpenVPN\easy-rsa» где C:\Program Files\OpenVPN\ папка с установленной программой. Окно консоли не закрываем.
- Вводим опять без кавычек «init-config»
- Реедактируем файл vars.bat и устанавливаем следующие параметры: KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL. Эти параметры нельзя оставлять пустыми, остальные можно оставить по умолчанию. Пример:
set KEY_COUNTRY=RU
set KEY_PROVINCE=MO
set KEY_CITY=Moskow
set KEY_ORG=GazProm
set KEY_EMAIL=root@yandex.ru
set KEY_CN=changeme
set KEY_NAME=changeme
set KEY_OU=changeme
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
port 5194
proto udp
dev tun
topology subnet
ca C:\\Program Files\\OpenVPN\\config\\keys\\ca.crt
cert C:\\Program Files\\OpenVPN\\config\\keys \\server.crt
key C:\\Program Files\\OpenVPN\\config\\keys \\server.key # This file should be kept secret
dh C:\\Program Files\\OpenVPN\\config\\keys \\dh1024.pem
server 10.218.77.0 255.255.255.0 # vpn subnet
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов
push «route 192.168.78.0 255.255.255.0»
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4
mute 20
client-to-client
client-config-dir C:\\Program Files\\OpenVPN\\config\\keys
Конфиг готов, осталось создать ещё 1 файлик с именем «ipp.txt» и следующим содержанием:
client1,10.218.77.10
client2,10.218.77.11
client3,10.218.77.12
Всё, от сервера OpenVPN можно пока отстать. Переходим к настройке клиентской части для создания локалки через интернет.
Openvpn клиент
Чтобы настроить Openvpn клиент, Заходим в папку по адресу C:\Program Files\OpenVPN\config и создаём там файлик «client.ovpn» со следующим содержанием:
remote my_server 5194
client
dev tun
proto udp
topology subnet
persist-key
persist-tun
ca C:\\Program Files\\OpenVPN\\config\\keys \\ca.crt
cert C:\\Program Files\\OpenVPN\\config\\keys \\client1.crt
key C:\\Program Files\\OpenVPN\\config\\keys \\client1.key
comp-lzo
verb 4
mute 20
Тут Вам надо поменять значение «my_server» на IP адрес вашего сервера. Скопируем файлы ca.crt, client1.crt, client1.key в папку C:\Program Files\OpenVPN\config\keys для пользователя «client1» и файлы ca.crt, client2.crt, client2.key для второго клиента (если у вас планируется больше двух). На этом настройка OpenVPN клиента закончена. Пробуем подключиться.
Примечание (Сандер): Если вы все правильно настроите, то после запуска службы на сервере и сеансов на клиентах, ваши компьютеры окажутся в одной локальной сети. Технически это будет выглядеть как будто в сетевых настройках у вас появился новый сетевой адаптер, который функционирует как локалка через интернет. И еще. OpenVPN — это бесплатный продукт с открытым кодом, так что вы работаете не через черный ящик, не завязаны на чужие сервера, в общем, при помощи этой технологии вы получаете настоящую защиту от внешнего мира. Кроме того, OpenVPN прекрасно работает под Линуксом, так что вы даже сможете связать друг с другом в одну компьютеры с совершенно разными операционными системами.
Как настроить доступ к локальной сети через интернет
Есть больше количество причин, по которым нужно получить доступ в локальную сеть из интернета. Кому-то нужно подключиться, чтобы просмотреть удаленные файлы и каталоги, а кому-то срочно требуется доступ к системе безопасности, включающей камеры наблюдения, датчики движения и так далее. Причин, по которым люди хотят получить доступ к локальной сети и глобальной множество, как и способов организовать это. В данном материале читатель ознакомится с тем, как подключиться к локальной сети через интернет и что для это нужно сделать.
Как подключиться к домашней сети через интернет
Согласно теории, на которой поострены компьютерные сети, чтобы получить доступ к данным сервера или какого-либо компьютера, можно использовать два базовых параметра — IP-адрес и порт, на которых функционирует утилита, позволяющая устройству выходить в сеть по определенному стандарту и протоколу. Именно поэтому так важна правильная и грамотная настройка роутера (модема), персонального компьютера и сервера, которые и обеспечивают непрерывный доступ друг к другу и совместное функционирование.

Доступность каждого протокола связи по базовым и принятым всеми стандартам осуществляется по некоторым портам:
- 80 и 8080 — доступность веб-сервера и HTTP протокол. Подключение по TCP портам;
- 443 — передача информации веб серверу по защищенным методам;
- 21 — основной порт, использующийся для протокола передачи данных FTP;
- 22 — конфигурирование устройств и выполнение над ними действий из терминала SSH (протокол защищен);
- 23 — незащищенный протокол для обычного подключения к терминалу TCP;
- 25 и 110 — получение доступа к серверам почтового типа на протоколах SMTP и POP3 соответственно.
Важно! Некоторые программы вообще работают на своих собственных портах. В качестве примера можно привести программу VNC. Когда она требует получения доступа из интернет в локальную сеть, необходимо открывать порт 5900.

Также нельзя не сказать об открытии портов. Если делать это на сервере, то его защищенность будет значительно меньше. Уязвимости всегда привлекают недобросовестных людей. Именно поэтому порты открывают только тогда, когда это действительно необходимо. Из этого вытекает то, что если доступ по какому-либо протоколу больше не осуществляется, его выделенный порт желательно закрыть. Специалисты рекомендуют закрывать все порты сервера, а открывать их по одному по мере добавления новых служб.
Опасность представляют по большей мере те порты, которые не требуют авторизации. Это, к примеру, 21 порт Виндовс, который открыт по умолчанию и может быть использован для несанкционированного доступа.

Настройка маршрутизатора — трансляция адресов
Трансляция или по-другому «проброс» — специальная процедура, которую выполняют на маршрутизаторе. Делается она для того, чтобы устройство переключало внутренний адрес локальной сети на внешний адрес. Это значит, что при подсоединении всегда будет указан айпи, который «смотрит» в глобальную сеть. Сам по себе внешний айпи может быть:
- Серым или динамическим;
- Белым или статическим.
К сожалению, конфигурирование роутера дл описания всех случаев никак не впишется в рамки статьи, поэтому, чтобы понимать суть происходящего, будет показан пример на белом (статическом) айпи адресе.
Производиться настройка будет из веб-интерфейса роутера Zyxel модели Keenetic. Это устройство отлично подходит для выполнения цели — получению доступа. Чтобы приступить к конфигурированию, требуется войти в настройки роутера по адресу, который указан на его задней панели, и авторизоваться в них с логином и паролем, которые указаны там же.

Персональный компьютер или ноутбук подключается к маршрутизатору по технологии DHCP, выдающей айпи всем устройствам сети. Каждый раз при перезаходе в сеть ПК будет получать пой адрес из диапазона. Чтобы доступ был организован для всех устройств, необходимо каждому из них выдать айпи. Сделать это можно на главном окне настроек в вкладке «Домашняя сеть», где находится параметр » Закрепить IP адрес за аппаратом«.
После закрепления нужно выбрать вкладку «Безопасность» и в ней найти «Трансляцию сетевых адресов». Тут добавляются правила: по одному на каждую службу, которой нужно дать доступ к серверу.

Важно! Пункт «Сокет» — это комбинация айпи адреса и порта черед двоеточие. Например, 185.32.132.4:8080. Он нужен для того, чтобы подключиться к серверу.
Когда будет нажата кнопка «Добавить правило», откроется окно, в котором необходимо заполнить следующие параметры:
- Интерфейс. Выбрать «WAN». Все зависит от того, какой тип подключения использует провайдер (PPPoE, L2TP и так далее);
- Протокол. Выбрать из списка протокол, необходимый для того, чтобы подключиться к соединению;
- Перенаправление. Указать локальный адрес сервера или ПК, на который будут перенаправляться запросы;
- Новый порт. Указать порт компьютера, на который будет происходить перенаправление.
Все это требуется сделать для каждого устройства, подключенного к локальной сети и для всех протоколов. Это означает, что каждое устройство и каждая служба будет иметь для себя отдельное правило, конфигурирующее их работу. Каждое правило после своего описание принимается и сохраняется на соответствующую кнопку.
Настройка доступа на компьютере с ОС Windows
Чтобы настройки на роутере работали по отношению к машине, необходимо открыть порты и на ней. Сделать это можно в Брандмауэре. Запустить его можно следующим образом: Панель управления — Система и безопасность — Брандмауэр. Также можно прописать название программы в меню Пуск и найти ее там. Открытие порта делается так:
- В окне Брандмауэра необходимо открыть меню дополнительных параметров;
- Нажать на кнопку «Правила для входящих соединений» и создать новое правило;
- В окне мастера создания правила выбрать тап правила: для программы, для порта, используя предустановленные правила и конфигурируемые правила;
- Выбрать «Для порта» и указать тип протокола «TCP»;
- Указать порт или целый диапазон портов через тире;
- Создать правило для «Разрешения подключения»;
- Определить профиль подключения, выбрав все профили системы или только профиль администратора;
- Нажать на кнопку «Готово» и дать правилу наименование.
Важно! Таким незамысловатым способом удалось открыть порт на компьютере. Так же точно, как и в маршрутизаторе, для каждого порта требуется создавать свое правило. Чтобы не заниматься этим, необходимо просто отключить встроенный защитник Windows, но делать это категорически не советуют.
Настройка доступа с использованием сторонних программ
В наше время можно не заниматься всем вручную и довериться специализированным программам, которые сами предоставят доступ из локальной вычислительной сети в глобальную сеть интернет. Более того, при их использовании не понадобятся никакие дополнительные навыки. Программу достаточно скачать, установить и запустить на машине сервера и клиента. В некоторых случаях все же потребуется для нормальной работы открыть трансляцию адресов на своем роутере.
В пример можно поставить такую известную программу, как Team Viewer. Среди ее возможностей — функция подключения к удаленным персональным компьютерам и их рабочему столу. Это позволяет не только управлять компьютером в режиме реального времени но и скачивать файлы, передавать их на другие сервера и выполнять еще множество других функций.
Важно! Чтобы подключиться к другому пользователю, достаточно знать его идентификационный номер (ID) и пароль, который он сообщит после создания сессии по просмотру удаленного рабочего стола.
Помимо ТимВивера, популярными программами для доступа к локальной сети из интернета являются:
- Anyplace Control. Старый софт, поддерживаемый начиная от Виндовс 95 до Виста. Одна из немногих программ, обладающая русскоязычным интерфейсом. Позволяет осуществлять удаленное взаимодействие с локальными сетями через интернет;
- Access Remote PC. Не менее старая программа с поддержкой версий 95, 96, XP, NT, Millennium. Осуществляет перехват рабочего стола и получение полного доступа к ПК;
- DameWare NTUtilities. Мощная система удаленного администрирования ЛВС. Основана на пакете программ для Виндовс НТ, которые удобно объединены в один рабочий интерфейс;
- RemotelyAnywhere. Пакет программ для удаленного управления сетями, персональными компьютерами и серверами через глобальную или локальную сеть. Позволяет реализовать любые действия сподключенным компьютером;
- Radmin. Софт, который не нуждается в представлении. Обладает широкими возможностями администрирования локальных сетей. Плюсом стает наличие русского интерфейса управления;
- UltraVNC. Наличие серверной и клиентской версии. Больше подходит для локальных сетей и управления внутри них, чем осуществлением доступа через интернет;
- VNC Personal Edition. Приложение позволяет удаленно управлять подключенными компьютерами по протоколу VNC иVPN.
Таким образом, подключать доступ к удаленным машинам через сеть Internet вполне реально. Настроить такое подключение можно не только самостоятельно, но и с помощью специальных программ, позволяющих исправить необходимые параметры сетей и организовать прямой доступ.
Удаленный доступ из интернета в частную или домашнюю сеть
Если требуется управлять системой умного дома или другими элементами локальной сети извне, то потребуется предоставлять всем подключенным устройствам доступ к роутеру и, следовательно, интернету. Но это палка о двух концах — умеющий хакер легко сможет получить доступ к вашему домашнему компьютеру и другим приборам. Чем меньше устройства контактируют с «официальным» интернетом, тем лучше.
Поэтому есть другой вариант — создается локальная сеть с «серыми» IP-адресами (подробнее о них мы писали тут), и тогда вам не нужен будет статический IP-адрес (за который провайдеры, кстати, берут деньги) и не нужно выводить все приборы в «большой» интернет.
Только кажется, что все это очень сложно — на самом деле есть понятные инструкции, как все настроить, и вам даже дополнительных приложений устанавливать не придется. Услугу удаленного доступа к домашней сети можно получить, например, через сервис https://vpnki.ru.
Все происходит через создание VPN-туннелей. Каждое устройство в сети должно иметь свой туннель, то есть если локальная сеть у вас есть и дома, и в офисе, и к обеим вам нужен доступ — нужно будет настроить три туннеля. Один — для смартфона или компьютера (смотря при помощи чего вы будете подключаться к локальным сетям), второй — для роутера дома, и третий — для роутера на работе. Все они будут объединены при помощи системы vpnki.
Можно будет получить доступ к компьютерам, камерам наблюдения, домашнему медиасерверу (и смотреть фильмы оттуда в любой точке земного шара). Также есть возможность организовать дома свой игровой сервер, гостевой доступ к которому будут иметь только те, кого вы выберете. Фактически вы временно подсоедините «гостей» к своей локальной сети, но без тех прав доступа, которые имеете вы, как ее хозяин.
Для бизнесменов тоже есть свои «плюшки» — например, имеется своя локальная сеть и в главном офисе, и в его филиале. Нужно, чтобы сотрудники обоих подразделений имели общий доступ ко всем документам. Обычно, чтобы объединить локальные сети, нужно обращаться к специалисту и иметь необходимое оборудование. Или же можно просто объединить обе сети через VPN-систему. Это будет гораздо быстрее и дешевле.
Как видите, возможности VPN-туннелей достаточно широки, так что мы рекомендуем попробовать их в деле.