Собственный VPN в России с возможностью управления пользователями на базе WireGuard

В связи с вынужденным отъездом сотрудников — организовал собственный VPN в России для всей компании. Цель — пользоваться сервисами требующими российский IP, ограничить доступ к ресурсам компании и шифровать трафик при использовании ненадёжного wifi. Лёгкое управление пользователями через браузер и возможность не отключать VPN при работах по продвижению сайта и рекламе, т.к. требуется видеть актуальную выдачу для РФ.

Эксперименты с собственным VPN начал весной, когда публичные сервисы стали блокировать, о чём писал здесь статью про собственный VPN на базе OpenVPN.

Сейчас несколько изменились потребности. По весне требовалось только обходить блокировки ресурсов и не терять в скорости. Сейчас ввиду вынужденного отъезда, собственный VPN в России пригодился также для решения проблем с доступом к ресурсам заблокированным с зарубежных IP.

Дополнительно, использование VPN сняло периодически возникавшие ограничения на мобильном интернете при активном использовании протоколов ftp/sftp и торрентов, т.к. трафик шифруется и стандартные фильтры операторов не срабатывают.

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

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

В этой связи я стал смотреть в сторону WireGuard, который на текущий момент считается самым современным протоколом.

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

Сразу нашёл 2 бесплатных Wireguard-ui и Firezone. Попробовал оба, первое оказалось сложнее, в итоге остановился на втором — Firezone.

Как установить

На главной странице их сайтf предлагается установка одной командой. Я устанавливал на чистый VPS под управлением Ubuntu 20.

sudo -E bash -c "$(curl -fsSL https://github.com/firezone/firezone/raw/master/scripts/install.sh)"

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

После установки создаётся админ доступ с логином и паролем:

Установка Firezone
Установка Firezone

Перехожу на страницу авторизации и ввожу логин и пароль полученный выше:

Авторизация в Firezone
Авторизация в Firezone

Попадаю в панель, где можно управлять пользователями и устройствами:

Управление пользователями и устройствами в Firezone
Управление пользователями и устройствами в Firezone

Здесь есть уже первый пользователь с ролью admin созданный на этапе установки выше. Для него создаю новое устройство и получаю 3 варианта для импорта конфигурации: QR-код (удобно для телефонов), через файл (для компьютера) и вручную.

Импорт конфигурации WireGuard на устройство<br />
Импорт конфигурации WireGuard на устройство

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

Добавление нового пользователя в Firezone<br />
Добавление нового пользователя в Firezone

Для использования VPN нужно скачать приложение WireGuard для своей платформы, поддерживаются Mac, Windows, iOS, Android. Все ссылки представлены на официальном сайте.

Клиент WireGuard для Mac<br />
Клиент WireGuard для Mac

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

Недостаток у Firezone для меня на данный момент — лишь один, нельзя привязать к серверу несколько IP и дальше выбирать для каждого пользователя свой IP.

Технические требования

Лично я на текущий момент использую 2 виртуальных сервера (VPS), 1 в Москве и 1 в Нью-Йорке по 3.25 евро в месяц каждый, следующей конфигурации:

  • 200 мегабит канал;
  • безлимитный трафик;
  • 512 оперативки;
  • 1 процессорное ядро;
  • ОС Ubuntu 20.

Данная конфигурация «тянет» в районе 150-200 мегабит.

Количество пользователей в целом значения не имеет (в отличии от OpenVPN), здесь естественным ограничением будет канал.

Опыт использования

По результатам эксплуатации 2 основных отличия WireGuard от OpenVPN:

  • Поддерживает постоянное соединение, не происходит переподключение при блокировке/разблокировке телефона;
  • Аккумулятор на iPhone используется на 7-9% против 25-30% (VPN включен постоянно, иногда только отключаю).

Отмечу, что WireGuard нативно поддерживается в роутерах Keenetic и в топовых Asus с последними прошивками.

Obfuscate VPN (маскировка VPN)

Из недостатков в целом использования VPN, это то что ряд сервисов блокирует VPN трафик.

Для WireGuard нашел способ маскировки трафика с использованием Shadowsocks Tunnel.

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

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

Ссылки на обе оболочки для WireGuard:

66
20 комментариев
100 ₽

Комментарий недоступен

Ответить

Спасибо, что поделились контентом не на Хабре, а тут)

3
Ответить

Всегда пожалуйста, буду рад если инструкция окажется полезной!!

Почему кстати хабр вам не очень?

Ответить

А что за vps в Нью Йорке за 3,25 евро? Звучит вкусно. Я сейчас на дижиатал оушен, так там 6$ и 1 Тб траффика
Хотя конечно они мне подарили 60$ зачем то, но не важно
и я использую outline vpn. Так ещё проще всё настраивается

2
Ответить

Wireguard шикарен, но провайдеры умеют его блочить (((

2
Ответить

Согласен!

Ответить