Если у вас нет белого IP-адреса в домашней сети, но вы хотите иметь доступ к устройствам в локальной сети за роутером Keenetic, эта инструкция для вас. Инструкция разделена на 3 части:
- Берём в аренду любой VPS и заходим на него по SSH.
- Для установки Wireguard я предлагаю использовать скрипт, взятый отсюда, и использовать установку без графического интерфейса и wg-easy. Обращаю внимание, что при использовании wg-easy при перезагрузке докер-контейнера пересоздаётся конфигурационный файл wg0.conf, что помешает нам отредактировать конфиг таким образом, чтобы был доступ в локальную сеть.
Запустить команду на чистом сервере:
bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/set-up.sh)
В ходе установки будут заданы некоторые вопросы:
- Установить текстовый редактор nano - y
- Выбираем установку с классическим Wireguard
- Хотите продолжить установку - y
- Выбираем способ настройки пиров через имена пользователей (2) и введите имена пользователей. Для примера создаю 3 пользователя, один из которых роутер
- Вводим логин и пароль для AdGuard Home
- На вопрос о замене порта ssh - тут на ваше усмотрение. Можно поменять на другой порт, что усложнит задачу по сканированию портов потенциальному хакеру.
- Дальше вопрос об установке UFW Firewall. Рекомендую его установить и на вопрос о сервисах, к которым нужно открыть доступ ничего не вводит и нажать Enter. В этом случае будет открыт только порт ssh.
Поздравляю, Wireguard установлен. Далее заходим в папку dwg
cd dwg
Теперь можем вывести QR-код и конфигурацию для подключения к VPN:
bash peer.sh
И вводим номер пользователя. В ответ получаем конфиг:
Чтобы пользоваться VPN'ом достаточно скачать Wireguard клиент. На смартфоне можно просто отсканировать QR-код и все настройки на клиенте автоматически подтянутся. На Windows клиенте нужно сохранить конфигурационный файл. Нас же интересует на данном этапе настройка роутера, поэтому мы скопируем эти настройки
Далее с помощью notepad++ или любого другого редактора необходимо сохранить их в файл router.conf.
В папке dwg/tools есть различные скрипты. Тут можете ознакомиться что они значат и определить нужны ли они вам. Для запуска скрипта вводим bash ИМЯ_СКРИПТА.sh
Небольшое отступление по поводу скорости интернета через Wireguard. Попробуйте подключиться к Wireguard с телефона или компьютера и измерить скорость. Если со скоростью всё ОК, можете переходить к настройке роутера Keenetic. Если же скорость существенно режется, то рекомендую в приложении Wireguard добавить в конфигурацию клиента MTU = 1280 в разделе Interface, а также в файле wg0.conf добавить в раздел Interface такую же строку:
nano wireguard/wg_confs/wg0.conf
После этого перезагружаем Docker-контейнеры:
docker-compose down && docker-compose up -d
И проверяем скорость ещё раз. Опять же, на одном VPS у меня была сразу отличная скорость, а на другом существенно резалась.
Переходим на адрес нашего роутера в браузере:
http://192.168.1.1
Если вы настраиваете Wireguard в первый раз, то необходимо установить компонент, который называется Wireguard VPN. Для этого открываем боковую панель и открываем Параметры системы
во вкладке Управление
. Нажимаем Изменить набор компонентов
и вводим в поиск Wireguard VPN
. После этого, роутер, возможно, попросит себя перезагрузить. Не отказывайте ему в этом :)
После этого в боковой панели нажимаем Другие подключения
во вкладке Интернет
.
В разделе Wireguard нажимаем Загрузить из файла
и выбираем наш сохранённый ранее файл router.conf
. После этого у вас появилось подключение router
. Нажмём на него и откроются Настройки подключения
. Обязательно нужно установить галочку Использовать для выхода в интернет
и убедиться, что поле Проверка активности
не пустое. Вот пример настроек:
Всё сохраняем и включаем наше новое подключение:
Далее рекомендую создать новую политику доступа. Для этого переходим в боковой панели в Приоритеты подключений
во вкладке Интернет
и создаём новую политику, как показано на скриншоте ниже:
Обращаю ваше внимание, что расположение подключений имеет значение. Теперь в разделе Применение политик
можно удобно распределять, какие из зарегистрированных устройств домашней сети будут выходить в интернет через VPN, а какие нет. Также профиль доступа для каждого из устройств можно менять в приложении Keenetic.
Теперь мы хотим получить доступ к устройствам локальной сети по их локальным адресам. Это может быть очень удобно, если у вас есть какое-то облачное хранилище, сервер, умный дом и т.д.
Для этого в боковом меню перейдём в Межсетевой экран
во вкладке Сетевые правила
. Далее выбираем вкладку router
и нажимаем Добавить правило
. Добавьте настройки в соответствии со скриншотом ниже, заменив IP-адрес источника на ваш. Узнать ваш адрес подсети можно в файле router.conf
в разделе Interface
, который мы ранее сохраняли. В нашем случае Address = 10.10.10.4
, значит адрес подсети 10.10.10.0
. Адрес назначения - адрес нашей локальной подсети: 192.168.1.0
. Не забудьте включить правило, установив соответствующую галочку.
Сохраняем всё это дело. Теперь настроим маршруты. Для этого в боковом меню перейдём в Маршрутизация
во вкладке Сетевые правила
и нажимаем Добавить маршрут
. Устанавливаем такие параметры, как на скриншоте ниже, заменив Адрес сети назначения
на ваш адрес подсети Wireguard. Номер шлюза указывать не нужно, так как мы выбрали наш новый интерфейс router
.
Не забывайте сохранять настройки. Вот как это должно выглядеть:
Далее подключаемся по ssh к нашему VPS и вводим:
cd dwg && nano wireguard/wg_confs/wg0.conf
Нам нужно отредактировать файл wg0.conf
, добавив к клиенту router
в AllowedIPs
адреса нашей локальной сети (192.168.1.0/24
):
Сохраняем файл: Ctrl+O
, Enter
, Ctrl+X
.
После этого необходимо перезагрузить Docker-контейнеры:
docker-compose down && docker-compose up -d
Теперь нужно отредактировать клиента, который собирается получать доступ в локальную сеть. Допустим, на нашем ноутбуке вы уже настроили Wireguard-клиент, загрузив конфигурационный файл. Необходимо выбрать наш тоннель -> правой кнопкой мыши -> Edit tunnel и добавить в AllowedIPs
адрес нашей локальной сети:
Нажимаем Сохранить
и всё - настройка завершена. Можно пробовать подключаться. Для этого активируем VPN-подключение в клиенте Wireguard и можем пинговать адрес нашего роутера:
Видим, что все пакеты дошли до адреса. Поздравляю, теперь вы можете заходить в вашу локальную сеть, где бы вы не находились!
Однако, стоит уделить внимание безопасности, а именно запретить авторизацию к вашему удалённому серверу, на котором развёрнут Wireguard, по паролю. И разрешить только по сертификатам. В интернете полно инструкций о том, как это можно сделать.
PS. Сервер арендовал на несколько часов для создания данной инструкции, так что не пытайтесь подключиться к нему по приведённым в статье конфигам :)