Корпоративное VPN-решение: безопасная интеграция распределенных сетей

Десктоп-приложения сервера VPN и VPN-клиент обеспечивают стабильный и защищенный доступ к корпоративным ресурсам на различных операционных системах и аппаратных архитектурах.
Для компаний с распределенной сетевой инфраструктурой и удаленными командами безопасное взаимодействие между офисами и сотрудниками становится критически важным фактором успеха. Корпоративные VPN-сервисы играют ключевую роль в решении данной задачи.

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

Запрос

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

Преимущества таких решений:
  • интеграция нескольких сетей в одну;
  • безопасный и разделенный доступ к различным сетям в зависимости от настроек безопасности сервера;
  • безопасное взаимодействие филиалов и удаленных сотрудников с устройствами в головном офисе и других филиалах;
  • быстрота и простота развертывания: VPN-решение можно конфигурировать менее чем за час без привлечения технического специалиста;
  • удобный UI.
Схема VPN-сети для бизнеса
Корпоративная VPN-сеть
Кроме этого, наш заказчик кастомизирует ПО под сторонние роутеры клиентов.

Наши задачи в рамках проекта:

  • модернизировать программное обеспечение заказчика – приложение сервера VPN и приложение VPN-клиент;
  • создать сборочные утилиты и скрипты под Windows и Linux;
  • доработать и настроить ПО под различные платформы и операционные системы семейства Linux;
  • разработать утилиты для полуавтоматического развертывания и настройки на определенных роутерах.

Решение

Наша команда разработала универсальную платформу, которая:
  • Работает на семи моделях роутеров (включая legacy-оборудование);
  • Поддерживает Windows и операционные системы семейства Linux – Debian и его производную ОС Ubuntu, CentOS, AlmaLinux, Rocky Linux, а также OpenWrt, FreeBSD и некоторые ее производные (PFSense и т.д.); платформа имеет shell-скрипты для сборки под эти ОС;
  • Имеет настроечные утилиты, учитывающие особенности маршрутизаторов определенного производителя и необходимые для решения определенных задач;
  • Не требует привлечения технических специалистов для развертывания.

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

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

Сложности проекта и их решение

Утечка памяти на одной из версий Linux

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

Наш подход:
  • Было проведено тщательное профилирование кода, в результате которого были обнаружены участки, где используемые ресурсы не освобождались должным образом.
  • После корректировки алгоритмов управления памятью все выявленные проблемы были устранены, что обеспечило стабильную работу приложения даже в условиях высоких нагрузок.

Снижение скорости при подключении на определенной модели роутера

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

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

Некорректная работа системы

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

Наш подход:
  • Собрали список жалоб заказчика;
  • Исследовали код;
  • Разрозненные части кода, отвечающие за одну и ту же функцию, были собраны и интегрированы в единое целое, что упростило поддержку и улучшило эффективность системы;
  • Изучили сетевые стандарты и привели работу кода в соответствие с ними.

Результат:
Заказчик и его клиенты получили систему, которая не требует дополнительных технических решений и стабильно работает в условиях их сетевых структур.
Выполненные работы

  • Разработка скриптов и программ для сборки приложения (сжатия ресурсов, формирования установочных пакетов).
  • Доработка недокументированного ПО (legacy-код), исходники которого содержат больше 200 тысяч строк.
  • Настройка контейнеров для сборки и запуска разрабатываемого ПО.
  • Разработка внешних утилит для взаимодействия с ПО заказчика и устройствами его клиентов на языках Python и C++.
  • Разработка утилит для тестирования производительности и доступности устройств заказчика.
Использованные технологии
  • Клиентское и серверное приложения – язык С.
  • На С++ написаны утилиты, которые настраивают ядро и контролируют его работу на определенных роутерах, и часть утилит для взаимодействия со сторонними сервисами.
  • ПО для сборки под роутер CradlePoint написано на Python с помощью IDE PyCharm. Использованы библиотеки и модули Requests, re, Base64, Subprocess, Time, os, фреймворк Cradlepoint NetCloud OS SDK, библиотеки cURL и Boost для C++.
  • Размещение в контейнеры с помощью платформы Docker, языков описания Dockerfile и Docker Compose (YAML).
  • Сборка под Linux и отладка – скриптовый язык Bash, набор компиляторов gcc, ПО виртуализации Oracle VM VirtualBox, менеджеры пакетов.
  • Сборка под Windows – C#.
  • Системные библиотеки Windows/Linux, фреймворк WinAPI для Windows, среда разработки Visual Studio и текстовый редактор Visual Studio Code для разработки приложения.

Итоги

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

Выгоды для компании-заказчика:
  • универсальное решение для 50+ своих клиентов;
  • возможность кастомизировать платформу под множество моделей роутеров.

Выгоды для конечных пользователей:
  • новые возможности для удаленной работы, интеграции филиалов и IoT;
  • быстрое развертывание и настройка VPN своими силами.

В ближайших планах на проекте – разработка программного обеспечения под macOS и мобильных VPN-приложений для Android и iOS, которые могли бы взаимодействовать с серверами заказчика в режиме расширенной функциональности. Приложения будут нативные, это лучший выбор, когда дело касается взаимодействий с операционными системами.