Как превратить Raspberry Pi в роутер с поддержкой WireGuard VPN клиента

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Если вдруг у вас есть Raspberry Pi, вы уже с ним наигрались и хотите найти ему полезное применение, то в этой статье я расскажу как быстро и просто превратить его в роутер, который может работать c VPN сервером по протоколу WireGuard. В виду того, что вычислительные возможности Raspberry Pi выше, чем у среднестатистического роутера, вы получите большую скорость Интернет при работе через VPN.

Ранее я публиковал статью, в которой рассказывал, как настроить WireGuard VPN клиент на роутере ASUS RT N56U. Вы можете сказать, что можно купить более мощный роутер или вообще роутер, который поддерживает WireGuard из коробки, но мне хотелось обойтись устройствами, которые были у меня в наличии. К тому же, что-то сделанное своими руками часто приносит большее удовольствие, так как ты начинаешь лучше разбираться в теме, да и греет душу мысль о том, что ты сэкономил деньги и можешь потратить их на что-то другое.

Как возникла идея

Купив себе Raspberry Pi 4 пару лет назад , я поигрался с ним, и как всегда, когда угасает интерес к вещи, положил на полку и забыл.

Когда я пытался установить VPN клиент на своей коллекции старых роутеров (TP-Link WR-841N, TP-Link WR-702N), и у меня это не выходило из-за их низких технических характеристик, я уже начал рассматривать Raspberry Pi в качестве альтернативы. У него было все для того, чтобы стать хорошим роутером: компактный размер, Ethernet разъем, встроенный модуль WiFi, производительный SoC и большой объем оперативной памяти, но мне попался ASUS RT N56U, и я решил использовать его.

На свой роутер АSUS я поставил прошивку OpenWRT и WireGuard клиент. Все работало, я даже написал статью о своем уcпешном опыте, но уж очень меня растраивала скорость Интернета через VPN. Да, она была больше, чем при использовании OpenVPN, достаточна для просмотра 4К видео, но WireGuard клиент на компьютере выдавал результат в несколько раз больше, так как производительность компьютера в разы выше производительности роутера.

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

Поиск решения

Итак, задача о превращении Raspberry Pi 4 в роутер с поддержкой WireGuard была поставлена, и я принялся за ее решение.

Так как у мне удалось заставить свой роутер ASUS работать с протоколом WireGuard, используя прошивку OpenWRT, я и сейчас решил использовать ее.

OpenWRT – это Linux дистрибутив, основная задача которого – обеспечение работы роутера. Он имеет обширную библиотеку пакетов, позволяющую подстроить роутер под свои нужды.

WireGuard — это программное обеспечение и протокол, который проще и быстрее, чем OpenVPN и IPSec.

Первым делом я изучил видео и статьи в Интернете о том, как люди решали задачу, подобную моей. Но нужной мне полноценной инструкции от А до Я, я не нашел.

Больше всего меня увлекло эмоциональное и захватывающее видео от NetworkChuck, хотя оно подразумевало установку OpenVPN клиента, а не WireGuard, и подразумевалась настройка из командной строки, а не из GUI OpenWRT.

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

Предлагаемое на форумах решение в виде компиляции исходного кода драйверов для OpenWRT мне с одной стороны показалось интересным и позволяющим получить новые знания, но с другой – нудным и менее универсальным. Хотелось какое-то другое решение.

У меня есть дорожный роутер TP-Link WR-702N, у которого всего лишь один разъем Ethernet и один встроенный модуль WiFi, я подумал, что ничто не мешает мне сделать что-то похожее из моего Raspberry Pi. Не знаю, для кого как, но для меня, когда я вижу, что задачу можно решить – это вдохновляет и мотивирует.

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

Что понадобится

  1. Raspberry Pi 4.

  2. Роутер с доступом в Интернет.

  3. Ethernet кабель.

  4. Сетевой адаптер питания на 5В 3A с кабелем USB type C.

  5. MicroSD карта. Достаточно и 4GB.

  6. Адаптер MicroSD-SD и ноутбук с кардридером или USB MicroSD кардридер.

Решение задачи

  1. Заходим на страницу официального сайта OpenWRT, посвященную Raspberry Pi и загружаем свежий образ OpenWRT для Raspberry Pi 4. На момент написания статьи это версия 22.03.2

  2. Записываем образ OpenWRT на Micro SD карту. Я делал это в Windows при помощи программы balenaEtcher.

  3. Соединяем Ethernet кабелем компьютер и Raspberry Pi . Включаем Raspberry Pi. По умолчанию Raspberry Pi 4 c установленным OpenWRT имеет статический IP адрес 192.168.1.1, не имеет пароль для входа, также по умолчанию отключен WiFi интерфейс. Поэтому нужно включить и настроить WiFi, а также желательно поменять IP адрес и установить пароль.

  4. Настраиваем WiFi. Network->Wireless->Edit->Interface Configuration. Вводим настройки на владках General Setup, Advanced Settings.

  5. Устанавливаем пароль. System->Administration.

  6. Меняем IP адрес и убираем Ethernet интерфейс из LAN, чтобы использовать Ethernet интерфейс в качестве WAN. Network->Interfaces->Edit->LAN.

  7. Отключаем Raspberry Pi от сетевой карты компьютера.

  8. Подключаемся к точке доступа, созданной на Raspberry Pi. Открываем в браузере URL c адресом IP, который вы назначили Raspberry Pi.

  9. Настраиваем WAN порт Raspberry. Network->Interfaces->Add New Interface... В качестве WAN порта мы будем использовать Ethernet разъем Raspberry Pi. Так как разъем будет использоваться как WAN порт, а доступ к Raspberry Pi будет осуществляться через WiFi, при неверных настройках, которые нарушат работу интерфейса WiFi вам прийдется заново записать образ OpenWRT на microSD карту.

  10. Выключаем Raspberry Pi. Подключаем WAN порт Raspberry Pi к LAN порту домашнего роутера. Включаем Raspberry Pi.

  11. Убеждаемся, что доступ в интернет есть. Network->Diagnostics.

  12. Настраиваем файервол для WAN интерфейса. Network->Interfaces->WAN->Edit->Firewall Settings.

  13. Заходим на сайт https://www.myip.com/ чтобы узнать свой внешний IP адрес.

  14. Устанавливаем WireGuard. System->Software. Обновляем список пакетов (Update lists...), находим пакет luci-i18n-wireguard-en и устанавливаем его.

  15. Перегружаем Rasperry Pi. System->Reboot.

  16. Устанавливаем WireGuard на VPS сервер. Как это сделать я подробно расписал в своей статье.

  17. Добавляем Wireguard интерфейс. Network->Interfaces->Add New Interface... -> Create Interface

  18. Вводим данные на вкладке General Settings. Здесь необходимо ввести Private Key, Public Key, IP Address для созданного WireGuard интерфейса, который теперь находится на Raspberry Pi. Public Key можно посмотреть в секции Peer в конфиграционном файле /etc/wireguard/wg0.conf на VPS сервере с установленным WireGuard или получить из имеющегося Private Key.

  19. Заходим на вкладку Peers. Нажимаем Add Peer. Вводим оставшиеся данные для WireGuard. Это параметры интерфейса WireGuard, который находится на удаленном сервере.

  20. Удостоверяемся, что WireGuard интерфейс работает. RX и TX должны содержать ненулевые значения.

  21. Настраиваем Firewall. Network->Firewall->Add.

  22. Настраиваем маршрутизацию. Network->Routing->Add. В поле Target вводится IP адрес вашего сервера WireGuard фомате CIDR (<IP адрес>/32).

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

  24. Проверяем работу VPN. Заходим на сайт https://www.myip.com/ и смотрим на свой внешний IP. Если он отличается от того, что был до включения VPN, то VPN работает.

  25. Если все устраивает, то можно сделать резервную копию micro SD карты при помощи программы Win32 Disk Imager. Это позволит хранить всю настроенную OpenWRT для вашего Raspberry Pi на локальном диске компьютера и быстро развернуть уже настроенный OpenWRT в случае, если собьются настройки.

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

Сравнение с решением от NetworkChuck

Мое решение отличается от решения NetworkChuck следующим:

1. Я использую только один WiFi интерфейс, который работает в качестве точки доступа, а не два, один из которых (встроенный) работает в качестве WiFi клиента к точке доступа, предоставляющей доступ в Интернет, а второй (USB WiFi адаптер, желательно с антенной) в качестве точки доступа.

2. Я выполняю все настройки, используя исключительно GUI OpenWRT.

3. Для VPN я использую WireGuard, а не OpenVPN.

У решения от NetworkChuck есть ряд преимуществ:

1. Так как не нужен проводной доступ роутеру, раздающему Интернет, решение подходит для публичной точки доступа в кафе или в аэропорту (если конечно публичная точка доступа позволит это сделать).

2. Так как для организации точки доступа используется USB WiFi адаптер с антенной, покрытие созданной WiFi сети будет шире и стабильнее.

У моего решения тоже есть ряд преимуществ:

1. Неподготовленному пользователю проще выполнить все в GUI OpenWRT по приведенным скриншотам, чем вводить все в комадной строке.

2. Cкорость Интернет, у моего решения будет выше и стабильнее, так как я подключаю Raspberry Pi к роутеру с Интернет через проводное соединение и использую WireGuard вместо OpenVPN.

Оставляю вам возможность проверить решение от NetworkChuck, если у вас окажется USB WiFi адаптер, для которого вы сможете установить драйвер в OpenWRT.

Анализ результатов

У меня дома не было лабораторных условий для проведения эксперимента.

Подключившись к VPN серверу, установленному на VPS от PulseHeberg и проверив скорость Интернета, я получил заветные цифры. Если учитывать, что у меня Интернет от провайдера с заявленной скоростью 100 МБ/c, я не уже не вижу смысла улучшать скорость соединения.

Я надеюсь, что вы получите результат не хуже моего. Буду признателен, если вы в комментариях напишете, какие результаты получились у вас. Желательно указать версию Raspberry PI, версию OpenWRT, заявленную скорость интренет вашего провайдера, на каком хостинге располагается WireGuard VPN сервер, и полученные вами результаты в SPEEDTEST.

Выводы

Raspberry Pi подходит для создания компактного роутера с поддержкой WireGuard. Скорость Internet через Wireguard VPN на Rapsberry Pi практически такая же как и при работе без него.

Теоретически можно попробовать сделать роутер и из Raspberry Pi 3, но я не проверял и думаю скорость VPN будет значительно ниже.

К спорным моментам можно отнести:

  1. Cтоимость Raspberry Pi (роутер, на который можно поставить OpenWRT все-таки стоит дешевле).

  2. Доступность Raspberry Pi в контексте происходящих сейчас событий.

  3. Мощность антенны встроенного модуля WiFi (я считаю, что у обычного роутера антенна получше).

Сфера применения Raspberry Pi не ограничивается домашним роутером с VPN, я находил и другие интересные решения, способные удивить вас и ваших знакомых. Я думаю, что это тема моей следующей статьи.

Источник: https://habr.com/ru/post/694710/


Интересные статьи

Интересные статьи

Привет, Хабр! Меня зовут Холодаев Алексей, я младший системный администратор в Cloud4Y. Сегодня хочу поделиться способом подключения стандартного RDP-клиента Windows к MacOS. Если интересно, ныряйте п...
Подозреваю, что я не один такой, кто держит дома в режиме 24/7 маленький и тихий системный блок с Windows в качестве сервера, на который можно зайти по RDP (с того же сма...
Предлагается сделать домашнего робота, отличительными чертами которого будут: — относительная простота создания (как по времени, так и трудозатратам), — недорогие комплектующие, — д...
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...