/local_network_access

Доступ к локальной сети через роутер Keenetic, подключенный к Wireguard на VPS

The UnlicenseUnlicense

Доступ к локальной сети через роутер Keenetic, подключенный к Wireguard на VPS

Если у вас нет белого IP-адреса в домашней сети, но вы хотите иметь доступ к устройствам в локальной сети за роутером Keenetic, эта инструкция для вас. Инструкция разделена на 3 части:

  1. Установка Wireguard на VPS
  2. Настройка роутера Keenetic
  3. Настройка доступа к локальной сети

Установка Wireguard на VPS

  • Берём в аренду любой VPS и заходим на него по SSH.
  • Для установки Wireguard я предлагаю использовать скрипт, взятый отсюда, и использовать установку без графического интерфейса и wg-easy. Обращаю внимание, что при использовании wg-easy при перезагрузке докер-контейнера пересоздаётся конфигурационный файл wg0.conf, что помешает нам отредактировать конфиг таким образом, чтобы был доступ в локальную сеть.

Установка WG:

Запустить команду на чистом сервере:

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/set-up.sh)

В ходе установки будут заданы некоторые вопросы:

  • Установить текстовый редактор nano - y
  • Выбираем установку с классическим Wireguard

image

  • Хотите продолжить установку - y
  • Выбираем способ настройки пиров через имена пользователей (2) и введите имена пользователей. Для примера создаю 3 пользователя, один из которых роутер

image

  • Вводим логин и пароль для AdGuard Home

image

  • На вопрос о замене порта ssh - тут на ваше усмотрение. Можно поменять на другой порт, что усложнит задачу по сканированию портов потенциальному хакеру.
  • Дальше вопрос об установке UFW Firewall. Рекомендую его установить и на вопрос о сервисах, к которым нужно открыть доступ ничего не вводит и нажать Enter. В этом случае будет открыт только порт ssh.

Поздравляю, Wireguard установлен. Далее заходим в папку dwg

cd dwg

Теперь можем вывести QR-код и конфигурацию для подключения к VPN:

bash peer.sh

И вводим номер пользователя. В ответ получаем конфиг:

image

Чтобы пользоваться VPN'ом достаточно скачать Wireguard клиент. На смартфоне можно просто отсканировать QR-код и все настройки на клиенте автоматически подтянутся. На Windows клиенте нужно сохранить конфигурационный файл. Нас же интересует на данном этапе настройка роутера, поэтому мы скопируем эти настройки

image

Далее с помощью notepad++ или любого другого редактора необходимо сохранить их в файл router.conf.

В папке dwg/tools есть различные скрипты. Тут можете ознакомиться что они значат и определить нужны ли они вам. Для запуска скрипта вводим bash ИМЯ_СКРИПТА.sh


Небольшое отступление по поводу скорости интернета через Wireguard. Попробуйте подключиться к Wireguard с телефона или компьютера и измерить скорость. Если со скоростью всё ОК, можете переходить к настройке роутера Keenetic. Если же скорость существенно режется, то рекомендую в приложении Wireguard добавить в конфигурацию клиента MTU = 1280 в разделе Interface, а также в файле wg0.conf добавить в раздел Interface такую же строку:

nano wireguard/wg_confs/wg0.conf

image

После этого перезагружаем Docker-контейнеры:

docker-compose down && docker-compose up -d

И проверяем скорость ещё раз. Опять же, на одном VPS у меня была сразу отличная скорость, а на другом существенно резалась.


Настройка роутера Keenetic

Переходим на адрес нашего роутера в браузере:

http://192.168.1.1

Если вы настраиваете Wireguard в первый раз, то необходимо установить компонент, который называется Wireguard VPN. Для этого открываем боковую панель и открываем Параметры системы во вкладке Управление. Нажимаем Изменить набор компонентов и вводим в поиск Wireguard VPN. После этого, роутер, возможно, попросит себя перезагрузить. Не отказывайте ему в этом :)

image

После этого в боковой панели нажимаем Другие подключения во вкладке Интернет.

image

В разделе Wireguard нажимаем Загрузить из файла и выбираем наш сохранённый ранее файл router.conf. После этого у вас появилось подключение router. Нажмём на него и откроются Настройки подключения. Обязательно нужно установить галочку Использовать для выхода в интернет и убедиться, что поле Проверка активности не пустое. Вот пример настроек:

image

image

Всё сохраняем и включаем наше новое подключение:

image

Далее рекомендую создать новую политику доступа. Для этого переходим в боковой панели в Приоритеты подключений во вкладке Интернет и создаём новую политику, как показано на скриншоте ниже:

image

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

Настройка доступа к локальной сети

Теперь мы хотим получить доступ к устройствам локальной сети по их локальным адресам. Это может быть очень удобно, если у вас есть какое-то облачное хранилище, сервер, умный дом и т.д.

Для этого в боковом меню перейдём в Межсетевой экран во вкладке Сетевые правила. Далее выбираем вкладку router и нажимаем Добавить правило. Добавьте настройки в соответствии со скриншотом ниже, заменив IP-адрес источника на ваш. Узнать ваш адрес подсети можно в файле router.conf в разделе Interface, который мы ранее сохраняли. В нашем случае Address = 10.10.10.4, значит адрес подсети 10.10.10.0. Адрес назначения - адрес нашей локальной подсети: 192.168.1.0. Не забудьте включить правило, установив соответствующую галочку.

image

Сохраняем всё это дело. Теперь настроим маршруты. Для этого в боковом меню перейдём в Маршрутизация во вкладке Сетевые правила и нажимаем Добавить маршрут. Устанавливаем такие параметры, как на скриншоте ниже, заменив Адрес сети назначения на ваш адрес подсети Wireguard. Номер шлюза указывать не нужно, так как мы выбрали наш новый интерфейс router.

image

Не забывайте сохранять настройки. Вот как это должно выглядеть:

image

Далее подключаемся по ssh к нашему VPS и вводим:

cd dwg && nano wireguard/wg_confs/wg0.conf

Нам нужно отредактировать файл wg0.conf, добавив к клиенту router в AllowedIPs адреса нашей локальной сети (192.168.1.0/24):

image

Сохраняем файл: Ctrl+O, Enter, Ctrl+X. После этого необходимо перезагрузить Docker-контейнеры:

docker-compose down && docker-compose up -d

Теперь нужно отредактировать клиента, который собирается получать доступ в локальную сеть. Допустим, на нашем ноутбуке вы уже настроили Wireguard-клиент, загрузив конфигурационный файл. Необходимо выбрать наш тоннель -> правой кнопкой мыши -> Edit tunnel и добавить в AllowedIPs адрес нашей локальной сети:

image

Нажимаем Сохранить и всё - настройка завершена. Можно пробовать подключаться. Для этого активируем VPN-подключение в клиенте Wireguard и можем пинговать адрес нашего роутера:

image

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

Однако, стоит уделить внимание безопасности, а именно запретить авторизацию к вашему удалённому серверу, на котором развёрнут Wireguard, по паролю. И разрешить только по сертификатам. В интернете полно инструкций о том, как это можно сделать.

PS. Сервер арендовал на несколько часов для создания данной инструкции, так что не пытайтесь подключиться к нему по приведённым в статье конфигам :)