Как стать автором
Обновить

Как предоставить доступ для всех устройств из локальной сети к VPN

Время на прочтение7 мин
Количество просмотров35K

Наверное, ни для кого уже не секрет, что использование технологии Virtual Private Network (VPN) становится повседневной необходимостью. На рынке присутствует много решений – платных и бесплатных.

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

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

Установка приложения на компьютер, смартфон или браузер имеет ряд недостатков.

  1. На некоторые устройства, например телевизор со Smart TV, или какое-то нестандартное устройство, требующее доступа к интернету, установка приложения может быть невозможна.

  2. На разные виды устройств ставятся разные приложения. Для Android оно будут одни, для Windows - другие.

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

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

То, что скорее всего, моя идея осуществима, меня вдохновило, и я принялся воплощать ее в жизнь. Процесс этот был методом проб и ошибок, я его не документировал, да и, наверное, это было бы утомительно приводить его в этой статье. Результатом стало то, что из множества протоколов VPN (PPTP, L2TP/IPSec, OpenVPN и WireGuard) я выбрал WireGuard, а из различных кастомных прошивок (DD-WRT, FreshTomato, OpenWRT) я выбрал OpenWRT. Также из-за того, что я хотел иметь постоянный доступ в интернет и проводить различные эксперименты, я установил кастомную прошивку на один роутер и подключил его WAN порт к одному из LAN портов другого, имеющего доступ в интернет.

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

Установка кастомной прошивки на роутер

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

Вам понадобится одна из самых последних версий этой прошивки.  На момент написания статьи это OpenWrt 22.03.0.  

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

Следует внимательно почитать страницу на сайте OpenWRT для вашего роутера, посмотреть какие у него есть особенности. Например, как можно восстановить стоковую прошивку на вашем роутере, как необходимо устанавливать кастомную прошивку. Также необходимо внимательно изучить информацию об аппаратных версиях вашего роутера. Роутеры одной модели могут иметь разные аппаратные реализации, это очень важно, чтобы не испортить роутер при перепрошивке.

Так как у меня был роутер ASUS RT-56U V1, то здесь приведу, как я устанавливал прошивку на свой роутер. Подробно процесс описан по следующей ссылке https://www.asus.com/ru/support/FAQ/1000814/.

  1. Загружаем свежую прошивку для ASUS RT-N56U от OpenWRT.

  2. Загружаем приложение для прошивки роутера ASUS(Firmware Restoration).

  3. Отключаем в Windows все сетевые карты на компьютере, кроме той, к которой при помощи кабеля будем подключать роутер.

  4. Заходим в настройки TCP/IP для сетевой карты и вводим адрес 192.168.1.10 и маску 255.255.255.0.

  5. Запускаем приложение для прошивки.

  6. Выбираем файл с нужной прошивкой.

  7. Подключаем роутер по сетевому кабелю к компьютеру. Зажимаем кнопку Reset и включаем роутер. Ждем пока он перейдет в режим обновления (мигающий светодиод питания, я подождал на всякий случай секунд 15).

  8. Нажимаем кнопку Upload в приложении.

  9. Ждем пока роутер прошьется и перезагрузится.

  10. Заходим в настройки TCP/IP для сетевой карты и устанавливаем переключатель на «Получать IP адрес автоматически».

Настройка WiFi на роутере

Так как в прошивке OpenWRТ по умолчанию отключен WiFi, его нужно включить в настройках.

  1. Заходим в браузере по адресу  https://192.168.1.1 и выполняем базовую настройку роутера (устанавливаем пароли и доступ к роутеру через SSH, включаем и настраиваем WiFi.)

  2. Подключаем роутер к интернету.

  3. Перезагружаем роутер.

  4. Подключаемся к роутеру через WiFi.

Я использовал еще один роутер, у которого было настроено подключение к интернету, поэтому мне достаточно было WAN порт роутера с кастомной прошивкой соединить при помощи кабеля с LAN портом роутера с интернетом. Вам же, если, вы хотите обойтись одним роутером, в зависимости от вида доступа в интернет вашего провайдера придётся больше покопаться в настройках роутера (например, если доступ предоставляется по технологии PPPoE).

Установка WireGuard клиента на роутер

Если вы через роутер с прошивкой от OpenWRT можете заходить в Internet, то можно приступать к установке WireGuard клиента. Во многих видео и статьях это делается из командной строки. На мой взгляд, это проще это сделать из графического интерфейса роутера.

  1. Обновляем список пакетов: System -> Software -> Update Lists…

  2. Заходим в раздел System -> Software и устанавливаем пакет luci-i18n-wireguard-en.

  3. Перегружаем роутер.

Роутер у нас предварительно настроен, теперь можно приступить к настройке VPN сервера WireGuard.

Выбор и создание VPS сервера

Для начала нужно выбрать провайдера VPS сервера. Есть несколько вариантов, у каждого есть свои достоинства и недостатки. Все зависит от ваших потребностей. Вам необходимо выбрать следующие параметры:

  • стоимость аренды;

  • производитель процессора;

  • количество процессоров;

  • количество оперативной памяти;

  • тип жесткого диска;

  • размер жесткого диска;

  • пропускная способность сети;

  • лимит исходящего и входящего трафика.

Выбор провайдера VPS сервера оставляют за вами, для проверки решения можно использовать, например, DigitalOcean.

Выбор операционной системы на VPS серверe

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

Установка VPN сервера

Следующий шаг, это установка VPN сервера. Для установки сервера WireGuard существует множество статей и видео в Internet. Если вы хотите лучше понимать технологию или улучшить свои знания по Linux, можно настраивать по ним. Но к счастью, на данный момент существует решение, которое позволяет установить и настроить сервер без труда человеку, имеющему минимальные знания по Linux. Утилита располагается на GitHub по адресу: https://github.com/angristan/wireguard-install

Нужно зайти в консоль ОС, установленной на VPS и выполнить следующие команды:

# curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
# chmod +x wireguard-install.sh
# ./wireguard-install.sh

Если вы боитесь выполнять этот скрипт вслепую, что логично, просмотрите его содержимое с помощью следующей команды перед установкой.

# cat wireguard-install.sh

Скрипт при выполнении задаст несколько вопросов. На вопросы достаточно дать ответы по умолчанию. Единственное, что нужно, это ввести имя для клиента, настройки для которого создаст скрипт.

После выполнения скрипт сообщит, где находится файл с настройками для клиента. Этот файл нам необходимо скачать к себе на компьютер при помощи команды scp, утилиты WinSCP, так как он понадобится нам для настройки WireGuard клиента. Но можно просто вывести его содержимое, используя команду cat в SSH консоли и копировать данные, которые нам понадобятся.

Настройка WireGuard клиента на роутере

1.    Добавляем интерфейс WireGuard. Network -> Interfaces -> Add new interface…

Создание интерфейса WireGuard
Создание интерфейса WireGuard

2.    Заполняем вкладку General Settings настройками из файла конфигурации WireGuard клиента (Private Key, Public Key, IP Addresses). Для получения Public Key в SSH консоли необходимо ввести:

# echo <значение приватного ключа> | wg pubkey
Содержимое файла конфигурации клиента
Содержимое файла конфигурации клиента
Вкладка General Settings
Вкладка General Settings

3.    Добавляем параметры WireGuard сервера (Description, Public Key, Preshared Key, Allowed IPs, Route Allowed IPs,  End Point Host, End Point Port, Persistent Keep Alive). Большинство параметров располагается в файле /etc/wireguard/wg0.conf на сервере. Peers -> Add Peer  

Содержимое файла конфигурации сервера WireGuard
Содержимое файла конфигурации сервера WireGuard
Параметры WireGuard сервера
Параметры WireGuard сервера

4.    Удостоверяемся, что VPN поднялся. Network -> Interfaces. Если он работает, то зачения RX и TX будут ненулевые.

 

Работающий WireGuard VPN
Работающий WireGuard VPN

5.    Настраиваем файервол для Fireguard. Network -> Firewall -> Add.

Параметры файервола для WireGuard
Параметры файервола для WireGuard

 

6.    Добавляем маршрут в таблицу маршрутизации. В поле Target, вам необходимо ввести реальный IP адрес вашего сервера в нотации CIDR (<IP адрес>/32) Network -> Routing -> Add.

7.    Настраиваем DNS. Network -> Interfaces -> WAN -> Edit -> Advanced Settings.

Выводы

На мой взгляд, такой вариант организации VPN отличается простотой в использовании самого VPN. При использовании VPN достаточно просто подключить WAN порт роутера к порту, имеющему доступ в интернет. Настроенный таким образом роутер можно взять с собой в командировку и подключить к роутеру, который будет там, и получить точно такой же интернет за тысячи километров от дома. Решение немного напоминает рецепт борща, так как можно экспериментировать с различными VPS провайдерами, роутерами, прошивками, VPN протоколами, VPN серверами и их настройками, операционными системами. Я привел только тот вариант, который у меня получился и устроил. Например, я пробовал использовать OpenVPN, но хочу сразу сказать, меня не устроила скорость получаемого интернета, она была в 2-3 раза ниже, чем при использовании WireGuard.

Я не являюсь экспертом в сетевых технологиях, и если у вас есть какие-то замечания или советы по улучшению, всегда буду рад их выслушать. Но пока у меня еще есть идеи как можно расширить и улучшить это решение, сделать его более универсальным, но это, я думаю тема моей следующей отдельной статьи после того, как проверю это решение на практике.

Теги:
Хабы:
Всего голосов 17: ↑13 и ↓4+10
Комментарии52

Публикации

Истории

Ближайшие события

AdIndex City Conference 2024
Дата26 июня
Время09:30
Место
Москва
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область