Vpn для подключения к домашней сети

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

TL;DR: я устанавливаю 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 открывается форма настроек с четырьмя вкладками.

На вкладке 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.

Источник

Быстрый и безопасный удаленный доступ к локальной сети: сравниваем шесть протоколов

Нельзя сказать, что задача удаленного доступа к устройствам в домашней локальной сети является очень распространенной и, вероятно, большая часть пользователей с ней даже никогда не встречалась. Однако все чаще в локальной сети появляются устройства и сервисы, с которыми хотелось бы работать удаленно. В качестве примера можно назвать сетевые накопители с библиотекой файлов, видеокамеры, устройства домашней автоматизации. В некоторых случаях может быть достаточно предоставляемых производителями собственных реализаций облачного доступа или даже просто проброса портов на роутере. Но если таких устройство много, существенно удобнее иметь возможность прямого обращения ко всей сети сразу, что может быть обеспечено сервисами VPN. Кроме того, этим технологии помогут и объединить две или несколько сетей в одну с прозрачным обменом данными между ними.

В данной публикации нет задачи максимально подробно рассказать про все распространенные протоколы VPN и их особенности. Сосредоточимся преимущественно на практической стороне вопроса сценария подключения удаленного клиента и попробуем сравнить разные варианты по удобству и производительности.

Сервисы VPN сегодня все чаще встречаются в прошивках беспроводных роутеров и, пожалуй, наибольшее их число представлено в решениях Keenetic, так что именно они и будут использованы в статье. Заметим, что если говорить именно о скорости, очень многое в данном случае зависит и от аппаратной платформы роутера и от программной реализации. Причем второй аспект может быть даже важнее. Кроме того, поскольку прошивки обычно закрытые, то и доступные через Web-интерфейс набор параметров серверов может отличаться. Влияние на производительность, конечно, оказывают и настройки сервисов. В данной статье я обычно использовал заданные производителем значения по умолчанию.

Также стоит отметить, что конкретно у решений Keenetic есть очень подробная база знаний на сайте, в статьях которой приводятся примеры настройки и использования дополнительных сервисов, включая все описанные в статье.

Текущая линейка продуктов компании основана на двух моделях процессоров (SoC) производства Mediatek – MT7628 и MT7621. На первом, имеющим одно вычислительное ядро, реализованы модели со 100 Мбит/с портами. Второй, с двумя ядрами, способными исполнять четыре потока, используется в устройствах с гигабитными портами. Более подробную информацию о конфигурациях устройств можно получить, например, в форуме iXBT.

Так что по сути, если взять по одному представителю на каждом чипе, можно охватить всю линейку роутеров компании в описываемой задаче, поскольку Wi-Fi, порты USB и объемы памяти здесь не существенны.

Для теста использовались устройства Keenetic City KN-1510 (младшая из двухдиапазонных) и Keenetic Ultra KN-1810 (старшая модель на данный момент).

Напомним, что прошивки у данного производителя модульные, так что в общем случае каждый пользователь может собрать свой уникальный вариант из требуемых сервисов и функций. Однако если для старших моделей с флешпамятью большой емкости можно не переживать про объем, то для младших ситуация существенно сложнее. В частности в данном тестировании приходилось добавлять на Keenetic City не более двух серверов за один раз. Кроме того, при анализе результатов не забываем, что эта модель имеет только 100 Мбит/с порты, что в определенных режимах будет выступать ограничением.

Все рассматриваемые в статье протоколы для своей работы в обязательном порядке требуют белого адреса на стороне сервера, что выглядит вполне логичным. Однако один из вариантов, благодаря специальным решениям Keenetic, можно использовать и без него.

Тестирование проводилось с прошивками версии 3.3.16. Режим подключения к Интернет – IPoE. В тестировании оценивалась скорость доступа внешнего клиента к компьютеру внутри локальной сети за роутером.

PPTP и L2TP

Одни из наиболее известных протоколов для реализации удаленного доступа – PPTP и L2TP. Первый уже считается небезопасным, хотя продолжает использоваться из-за невысокой требовательности к ресурсам. Заметим, что в нем предусмотрен как вариант без шифрования трафика, так и с ним. Одной из особенностей данного решения является использование специального протокола туннелирования, который часто бывает заблокирован домашними провайдерами, что приводит к невозможности использования данного типа подключения. Кроме того, используемые алгоритмы шифрования обычно не «ускоряются» специальными блоками в SoC.

Второй запомнился, прежде всего, использованием в сети одного из крупных отечественных провайдеров и отсутствием его поддержки у недорогих роутеров многих производителей.

Штатные клиенты для этих протоколов существуют во многих операционных системах, включая мобильные, что упрощает настройку подключения. Заметим, однако, что для L2TP обычно используется вариант L2TP/IPSec, в котором кроме привычного имени и пароля пользователя нужно также указать и общий ключ. Он и будет протестирован в этот раз.

Рекомендуем:  Как прошить андроид через пк забыл пароль

Подключить сервисы несложно – после установки соответствующих модулей необходимо в меню «Управление» — «Приложения» включить серверы.

Из настроек предусмотрены разрешение нескольких одновременных входов для одного аккаунта, активация NAT для клиентов (они смогут выходить в Интернет через этот роутер), выбор IP-адресов для выделения клиентам и выбор сегмента сети для доступа.

Кроме того, для PPTP можно разрешить подключения без шифрования, а для L2TP/IPSec необходимо установить общий секретный ключ.

Оба сервиса позволяют запрограммировать в роутере несколько учетных записей пользователей и разрешить им доступ по VPN.

При настройке клиентов необходимо указать внешний адрес роутера (IP или имя хоста, что можно реализовать, например, через KeenDNS), аккаунт пользователя, для L2TP/IPSec – дополнительно общий секретный ключ. При работе с PPTP и штатным клиентом Windows необходимо учесть описанные в статье базы знаний особенности.

Для данных протоколов использовались штатные клиенты ОС Windows 10.

Keenetic City в PPTP без шифрования показывает близкие к скорости портов результаты. Хотя, вероятно, мало кого устроит незащищенное от перехвата данных подключение. Использование MPPE в PPTP снижает показатели примерно до 30 Мбит/с, что, в целом, очень неплохо для относительно недорогой модели (напомню, что сходные цифры будут и на самом младшем устройстве текущей линейки). Что касается L2TP/IPSec, то здесь можно рассчитывать не более чем на 10 Мбит/с, поскольку в данном случае применяется шифрование DES, а в Keenetic City оно не поддерживается аппаратно.

Заметно более мощная платформа Keenetic Ultra показывает и более высокие результаты: до 300 Мбит/с в PPTP без шифрования и в среднем около 80 Мбит/с в PPTP с шифрованием и L2TP/IPSec.

Итого мы видим, что данные реализации обеспечивают хорошую производительность, за исключением L2TP/IPSec на младшей модели, и просты в настройке благодаря стандартным клиентам.

OpenVPN

Следующий по распространенности в серверах домашних роутеров протокол VPN – OpenVPN. Благодаря реализации с открытым исходным кодом на базе библиотеки OpenSSL, данный протокол очень часто встречается в совершенно разных продуктах, а найти под него клиента не составляет труда для большинства операционных систем.

Данный сервис имеет очень гибкие настройки (включая режим работы, выбор опций шифрования, сертификаты, ключи, маршрутизация и так далее), которые обычно задаются в виде текстовых конфигурационных файлах. Это имеет и обратную сторону – новичкам может быть непросто настроить работу по данному протоколу. Но если говорить о Keenetic, то в статьях базы знаний можно скачать готовые конфигурационные файлы, в которых нужно будет только поменять адрес сервера. Впрочем, с точки зрения безопасности, безусловно, нужно будет сделать свои ключи или сертификаты.

Протокол использует через стандартные соединения TCP или UDP и позволяет выбрать порт. Так что работать с ним можно будет практически в любой ситуации.

В роутерах Keenetic нет отдельного пункта «сервер OpenVPN», данный тип соединений настраивается в разделе «Интернет» — «Другие подключения». Кроме того, потребуется настроить еще несколько опций в других местах (в частности правила для межсетевого экрана), а в некоторых случаях – и в консоли. На сайте поддержки Keenetic этому протоколу посвящено несколько подробных материалов. При определенном опыте, можно реализовать одновременное обслуживание сервером нескольких клиентов. Но это будет явно сложнее, чем простое добавление пользователей в общий список доступа. Для тестов использовался стандартный клиент для Windows с сайта OpenVPN.

По скорости на младшей модели мы получаем до 10 Мбит/с, а на старшей – примерно в два с половиной раза больше. Данный протокол, вероятно из-за своей гибкости, имеет определенные сложности работы через «ускорители», так что скорость работы принесена в жертву универсальности. Впрочем, на других SoC (в частности, топовых Broadcom) его реализация показывает в несколько раз более высокие результаты.

Данный вариант можно рекомендовать сторонникам открытого программного обеспечения и тем, кому требуется максимальная гибкость настройки сервисов. В плюсах также возможность работы по стандартным TCP/UDP соединениям и любым портам.

Относительно недавно был представлен VPN-протокол SSTP, основанный на SSL. Его преимуществом является работа через HTTPS и стандартный порт 443. Так что в общем случае, можно считать, что он способен легко проходить через межсетевые экраны и прокси. Первоначально он был интегрирован в ОС семейства Windows, но сегодня встречается и на других платформах.

Реализация данного сервера в Keenetic интересна тем, что позволяет осуществлять удаленный доступ без белого адреса на роутере – через сервис Keenetic Cloud с шифрованием на всем пути. Заметим, что при работе через облако Keenetic Cloud, по своей сути, невозможно обеспечить гарантированную скорость доступа, поскольку нагрузка зависит от числа пользователей и их активности. В тестах использовалось прямое подключение и штатный клиент в Windows.

Настройки в данном случае также очень простые. После обязательной регистрации на KeenDNS, получения сертификата SSL, разрешения доступа к роутеру из Интернет по HTTPS идем в «Управление» — «Приложения» и включаем VPN-сервер SSTP. В параметрах можно разрешить множественный вход, выход в Интернет через роутер, выбрать выдаваемые пользователям адреса, а также указать разрешенные для этого сервиса учетные записи.

Рекомендуем:  Как настроить кулер на ноутбуке asus через биос

В целом результаты аналогичны предыдущему участнику – до 10 Мбит/с на младшей модели и до 30 Мбит/с на старшей.

Основным плюсом данного сервиса является работа по стандартному протоколу HTTPS и возможность использования через облачный сервер без наличия белого адреса на роутере. Минус – необходимость использования сторонних клиентов на отличных от Windows операционных системах.

IPSec

Эта группа протоколов, пожалуй, наиболее часто упоминается для решения задачи объединения сетей у «больших компаний на серьезном оборудовании». Основной проблемой при работе с IPSec для обычных пользователей является сложность настройки, так что на наш взгляд, его использование с домашним оборудованием является уделом хорошо подготовленных сотрудников ИТ-отделов или энтузиастов. С другой стороны, его реализация в Keenetic присутствует, а на сайте поддержки есть соответствующие статьи базы знаний. Потратив немного больше времени, чем с другими участниками, вполне можно настроить его работу со стандартным клиентом Windows.

Как и для OpenVPN, работа с IPSec осуществляется в разделе «Интернет» — «Другие подключения». Набор параметров явно не для новичка в сетевых технологиях. Нужно выбрать вариант идентификации, опции для двух фаз осуществления соединения, маршруты и так далее. Непросто настроить и соединение со стороны клиента. Можно конечно попробовать действовать «по картинкам», но если что-то пойдет не так, разобраться, не имея определенной базы знаний, будет сложно. Посмотрим, стоила ли игра свеч с точки зрения скорости.

Судя по результатам – вполне. Младшая модель способна обеспечить защищенное соединение со скоростью порядка 50 Мбит/с, а старшая работает в три раза быстрее. Да, конечно это решение не для всех, учитывая сложности настройки. Скорее данный тип соединения будет интересен для сценария объединения сетей, а не подключения удаленных клиентов.

Кстати, в прошивках Keenetic есть и специальный сервер IPSec (Virtual IP), который позволяет легко настроить доступ к роутеру и локальной сети за ним с мобильных устройств на Android и iOS через их штатные клиенты. В нем используется общий ключ и учетная запись пользователя. Остальные параметры установлены автоматичеки по требованиям совместимости с клиентами.

WireGuard

Еще один новый игрок в сегменте VPN-сервисов – протокол WireGuard. Можно сказать, что ему буквально на днях исполнилось два года. Он похож на OpenVPN по своему статусу программного обеспечения с открытым исходным кодом. При этом авторы WireGuard постарались сосредоточиться на использовании современных технологий и протоколов согласования ключей и шифрования и обойти узкие места других реализаций. Это позволило существенно сократить объем кода, оптимизировать скорость и реализовать решение в виде модуля для ядра Linux. В настоящий момент есть клиенты для всех распространенных операционных систем для компьютеров и мобильных устройств.

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

Тестирование показало, что данных протокол выступает по скорости очень хорошо и его результаты сравнимы с традиционным IPSec. Младшая модель способна показать 40-50 Мбит/с, а старшая – 150-220 Мбит/с.

На наш взгляд, это очень неплохое начало. Если бы еще немного упростить конфигурацию (например, создавать все требуемые настройки на стороне роутера, так что пользователю останется только скачать готовый файл настроек и импортировать его на клиенте), то будет и удобно, и быстро, и безопасно.

Заключение

Все рассмотренные протоколы удаленного доступа имеют свои уникальные особенности и выбор будет зависеть от условий и требований пользователя, включая уровень подготовки и тип операционной системы на клиенте. С точки зрения простоты настройки оптимальным универсальным вариантом можно считать L2TP/IPSec. Однако на младших моделях он все-таки небыстрый, так что и PPTP найдется место. SSTP имеет смысл в случае отсутствия белого адреса на роутере. Если же хочется скорости, то стоит посмотреть в сторону WireGuard, но нужно будет потратить немного больше времени на настройку. OpenVPN и IPSec выберут те, кто уже знаком с этими протоколами и умеет с ними обращаться.

Источник