Задача организовать 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 автоматически стартовал.
docker update --restart always firezone-firezone-1 firezone-postgres-1 firezone-caddy-1
VPN готов к использованию.
Эксплуатация
В первую очередь скачиваю клиенты для устройств с официального сайта WireGuard, в моём случае это iPhone, Macbook и Xiaomi. Windows также поддерживается.
Захожу по домену на страницу авторизации:
В панели для своего пользователя добавляю устройства. На телефоны получаю конфигурацию по QR-коду, на MacBook через файл.
Далее создаю пользователей и отправляю доступы сотрудникам, чтобы они уже сами добавляли свои устройства.
Личный опыт
У меня VPN на Mac и iPhone включен постоянно, потребление аккумулятора 9%, реконнектов не происходит. С Android есть сложность, что при закрытии всех приложений VPN отключается, возможно это зависит от версии Android и производителя, но в моём случае на Xiaomi постоянно использовать не получается ввиду того что часто закрываю приложения.
Дополнительно есть возможность подключать на роутерах Keenetic, они поддерживает WireGuard нативно, конфигурацию в них загружать через файл, как и на компьютер.
Данное решение можно использовать и для организации VPN серверов в любых локациях. При должной сноровке это занимает не более 10 минут.