Описание технологического стэка.
Операционная система:
- FreeBSD: базовая операционная система, обеспечивающая высокую производительность, надежность и безопасность. FreeBSD служит фундаментом для всех сервисов и приложений Intecso.
Языки программирования:
- C: используется для разработки ядра системы и низкоуровневых компонентов, отвечающих за работу сети и системные процессы.
- C++: применяется в системных утилитах и приложениях для расширения функциональных возможностей.
- PHP: основной язык для разработки веб-интерфейса (GUI), API и серверной логики. Большая часть серверной части написана на PHP.
- JavaScript: используется для создания динамичного и интерактивного веб-интерфейса на стороне клиента.
- Python: применяется в скриптах и инструментах автоматизации, включая процессы сборки и управления конфигурациями.
- Shell (Bash): активно используется в скриптах для автоматизации задач сборки, обновления и администрирования системы.
- Volt: шаблонизатор для PHP, используемый в веб-интерфейсе для динамического формирования страниц.
- SCSS и CSS: используются для стилизации веб-интерфейса, обеспечивая современный и адаптивный дизайн.
- Roff: язык разметки, применяемый для создания технической документации и страниц-руководств.
Фреймворки и библиотеки:
- Bootstrap: frontend-фреймворк для разработки адаптивного веб-интерфейса.
- jQuery: JavaScript-библиотека для упрощения работы с DOM и создания интерактивных элементов на веб-страницах.
- Phalcon PHP Framework: высокопроизводительный PHP-фреймворк, используемый в сочетании с шаблонизатором Volt.
- FreeBSD Ports Collection: система управления пакетами и портами, позволяющая устанавливать и обновлять стороннее ПО из обширного репозитория приложений.
Программное обеспечение и инструменты:
- PF (Packet Filter): продвинутый брандмауэр из OpenBSD, предоставляющий широкие возможности фильтрации пакетов и настройки сетевых правил.
- Suricata: система обнаружения и предотвращения вторжений (IDS/IPS).
- OpenVPN и IPsec: инструменты для настройки VPN-соединений, обеспечивающие безопасный удаленный доступ и соединение между сетями.
- ISC DHCP и WIDE-DHCPv6: серверы DHCP для автоматической выдачи сетевых настроек клиентским устройствам.
- Unbound DNS: DNS-сервер для резолвинга и кэширования DNS-запросов, повышающий скорость доступа к интернет-ресурсам.
- Lighttpd или Nginx: легковесные веб-серверы, используемые для обслуживания веб-интерфейса системы.
- RRDtool: инструмент для сбора, хранения и визуализации статистических данных, позволяющий отслеживать производительность системы.
- Git: система контроля версий для управления исходным кодом и совместной работы над проектом.
- Make: утилита автоматизации сборки, используемая в процессе компиляции и сборки пакетов и образов системы.
- pkg: пакетный менеджер FreeBSD для установки, обновления и управления программным обеспечением.
- Shell-скрипты: используются для автоматизации различных задач, включая сборку, развертывание и обновление системы.
Архитектура системы:
Архитектура системы разделена на два ключевых компонента:
- Frontend (GUI и API):
- PHP с использованием Phalcon: обеспечивает высокопроизводительный веб-интерфейс и API для взаимодействия с пользователем.
- Модельно-ориентированный подход: используется для обработки и валидации конфигурационных данных, что упрощает управление настройками системы.
- Шаблоны Volt: применяются для динамического формирования веб-страниц, обеспечивая гибкость и скорость разработки.
- Backend (Системные сервисы):
- Configd: сервис, отвечающий за взаимодействие с системными компонентами, включая запуск и остановку служб, генерацию конфигурационных файлов и выполнение системных команд.
- Коммуникация через Unix-доменные сокеты: обеспечивает быструю и безопасную передачу данных между frontend и backend.
- Шаблонизация с помощью Jinja2: используется для генерации конфигурационных файлов на основе шаблонов, что облегчает поддержку и обновление сервисов.
Функциональные возможности:
- Маршрутизация и брандмауэр: предоставляет гибкую и мощную систему управления сетевым трафиком и безопасности благодаря использованию PF.
- VPN-сервисы: поддержка OpenVPN и IPsec для создания защищенных виртуальных частных сетей.
- Интегрированный веб-интерфейс: обеспечивает удобное управление всеми аспектами системы через современный и интуитивно понятный интерфейс.
- Поддержка плагинов: возможность расширения функциональности системы путем установки дополнительных модулей, разработанных как внутренними специалистами, так и сообществом.
- QoS и шейпинг трафика: инструменты для управления пропускной способностью и приоритизации сетевого трафика.
- Captive portal: функция, позволяющая контролировать доступ пользователей к сети через авторизацию на веб-странице.
- Common Address Redundancy Protocol (CARP): обеспечивает отказоустойчивость и непрерывность сервиса посредством кластеризации.
- Динамический DNS: автоматическое обновление DNS-записей при изменении внешнего IP-адреса.
- Мониторинг и отчетность: встроенные инструменты для отслеживания состояния системы, сбора логов и генерации отчетов.
Процессы разработки и сборки:
- Автоматизация сборки: использование Makefile и Shell-скриптов для упрощения и стандартизации процесса сборки и развертывания.
- Система плагинов: разработка и интеграция дополнительных модулей с использованием собственного фреймворка, написанных на PHP и других поддерживаемых языках.
Интеграция и API:
- REST API: предоставляет возможности для автоматизации управления системой и интеграции с внешними приложениями и сервисами.
- CLI-интерфейс: обеспечивает доступ к функционалу системы через командную строку для продвинутых пользователей и скриптовых решений.