Задача организовать VPN в Москве или Спб для работы с сервисами не доступными с зарубежных IP и шифрования трафика для доступа к ресурсам компании при использовании публичного WiFi заграницей.

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

Из доступных решений мне попался платный сервис от OpenVPN и бесплатное решение Firezone работающее на базе WireGuard.

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

Установка и требования

Для установки использую "чистый" VDS на базе Ubuntu 22 с виртуализацией KVM следующей конфигурации:

  • 1 ядро

  • 512 память

  • 200 мегабит канал

  • безлимитный трафик

  • стоимость 3.25 евро в месяц

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

Потребовался домен 3 уровня (можно и второго) в A записи которого прописываю IP нового сервера. На самом сервере ничего не делаю дополнительно, всё сделает скрипт установки Firezone. Он же установит непосредственно и WireGuard.

Для работы скрипта Firezone требуется наличие Docker на сервере, который устанавливаю командой:

apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Далее запускаю установку:

bash <(curl -fsSL https://github.com/firezone/firezone/raw/master/scripts/install.sh)

Ввожу email для создания администратора, домен подготовленный выше и выбираю автоматически обновлять SSL сертификат:

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

Пароль сгенерируется автоматически после установки:

Firezone установлен
Firezone установлен

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

docker update --restart always firezone-firezone-1 firezone-postgres-1 firezone-caddy-1

VPN готов к использованию.

Эксплуатация

В первую очередь скачиваю клиенты для устройств с официального сайта WireGuard, в моём случае это iPhone, Macbook и Xiaomi. Windows также поддерживается.

Захожу по домену на страницу авторизации:

Страница авторизации
Страница авторизации

В панели для своего пользователя добавляю устройства. На телефоны получаю конфигурацию по QR-коду, на MacBook через файл.

Конфигурация WireGuard для устройства
Конфигурация WireGuard для устройства

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

Панель управления Firezone
Панель управления Firezone

Личный опыт

У меня VPN на Mac и iPhone включен постоянно, потребление аккумулятора 9%, реконнектов не происходит. С Android есть сложность, что при закрытии всех приложений VPN отключается, возможно это зависит от версии Android и производителя, но в моём случае на Xiaomi постоянно использовать не получается ввиду того что часто закрываю приложения.

Дополнительно есть возможность подключать на роутерах Keenetic, они поддерживает WireGuard нативно, конфигурацию в них загружать через файл, как и на компьютер.

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

Ссылки из статьи

  • Официальное руководство установки Docker на Ubuntu.

  • Официальное руководство установки Firezone.

  • Страница со списком приложений на официальном сайте WireGuard.

Комментарии (19)


  1. gdt
    28.10.2022 14:53

    Нужен ещё вариант, рабочий ВПН


    1. DRon450 Автор
      28.10.2022 16:11
      +1

      Рабочий я бы к собственному отнёс.


      1. gdt
        28.10.2022 16:12

        Не соглашусь, не всё можно (или нужно) делать через рабочий ВПН.


  1. Sleuthhound
    28.10.2022 18:18
    +2

    Скрипт https://github.com/firezone/firezone/raw/master/scripts/install.sh который отправляет куда-то телеметрию?

    Нет, спасибо, не нужно.


    1. DRon450 Автор
      28.10.2022 18:23

      Это скрипт с их официального сайта https://www.firezone.dev/


      1. Sleuthhound
        28.10.2022 18:58
        +2

        И тем не менее он отправляет телеметрию.


        1. DRon450 Автор
          28.10.2022 21:37

          Спасибо, что обратили на этот аспект внимание. Продукт полезно видеть со всех сторон.


      1. vangog9
        28.10.2022 19:30
        +1

        Ну так они её собственно и собирают. Вопрос конечно что с ней потом делают.

        Для личного использования - оно целом пофигу, хотя у меня есть несколько знакомых, которые прямо параноят по теме безопасности, с какого-то перепугу считая, что они нафиг кому-то сдались, мда.

        Но вот "в продакшн" такую мульку я бы с точки зрения безопасности, как сисадмин + закончивший профильное обучение, НЕ рекомендовал бы.


        1. DRon450 Автор
          28.10.2022 21:39
          +1

          В любом случае это полезно знать, чтобы у потенциальных пользователей был выбор.


    1. Tangeman
      29.10.2022 21:05
      +2

      Справедливости ради, там этой "телеметрии" - рандомный id из /dev/urandom и email для обратной связи (и то только если пользователь явно согласится) .

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

      В общем для паранои нет оснований - если кому-то важно сохранить свой IP в тайне он легко отредактирует скрипт, всё открыто и очевидно.


      1. DRon450 Автор
        29.10.2022 22:52

        Спасибо что детально разобрались и написали какие именно данные собирает скрипт !


  1. shteyner
    29.10.2022 14:26
    +1

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


  1. jaiprakash
    29.10.2022 16:06

    А зачем домен?


    1. DRon450 Автор
      29.10.2022 18:05

      Чтобы была возможность выпустить бесплатный ssl let’s encrypt. У них предыдущая версия работала без домена по IP и были проблемы с доступом из хрома по самоподписному сертификату


      1. jaiprakash
        29.10.2022 18:08

        А если я лисий юзер, то там оставили возможность пользоваться самоподписанным?


        1. DRon450 Автор
          29.10.2022 18:22

          С IP последняя версия у меня не завелась


        1. AngelNet
          29.10.2022 19:38

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


  1. SLOP
    30.10.2022 19:50
    +1

    А какой лучше хостинг VPS тут использовать?


    1. DRon450 Автор
      30.10.2022 19:57

      Основное - виртуализация KVM и безлимитный трафик. Специфических требований - нет, можно по большому счёту любой использовать. Я у Gcore в основном беру, у них много локаций с минималкой по 3.25 евро, а если за рубли то FirstVDS - 239 руб.