Набор скриптов для автоматизации управления OpenVPN сервером с централизованной конфигурацией и расширенными возможностями.
- Централизованная конфигурация - параметры автоматически извлекаются из server.conf
- Портативность - скрипты можно легко переносить между серверами
- Управление клиентами - создание, отзыв, массовые операции
- Перегенерация конфигураций - обновление .ovpn файлов с новыми параметрами
- Мониторинг в реальном времени - статистика подключений и трафика
- Автоматическое резервное копирование - защита конфигураций
- Массовые операции - импорт из CSV, групповое создание/отзыв/перегенерация
- Экспорт конфигураций - включая QR-коды для мобильных устройств
- Встроенные сертификаты - .ovpn файлы содержат все необходимые данные
- Детальное логирование - отслеживание всех операций
# Клонирование репозитория или копирование файлов
git clone https://github.com/your-repo/openvpn-manager.git
cd openvpn-manager
# Убедитесь, что manager.conf находится в текущей директории
# Запуск установщика
sudo ./install.sh
/etc/openvpn/
├── server.conf # Конфигурация OpenVPN сервера
├── manager.conf # Конфигурация скриптов управления
├── easy-rsa/ # PKI инфраструктура
├── client/ # Конфигурации клиентов (.ovpn)
├── ccd/ # Индивидуальные настройки клиентов
└── backup/ # Резервные копии
/var/log/openvpn/ # Логи
├── openvpn.log # Основной лог сервера
├── status.log # Статус подключений
└── manager.log # Лог операций менеджера
/opt/openvpn-manager/ # Установленные скрипты
├── openvpn-manager.sh # Главный скрипт управления
├── quick-add-client.sh # Быстрое добавление клиента
├── bulk-operations.sh # Массовые операции
└── openvpn-monitor.sh # Мониторинг
Основной конфигурационный файл OpenVPN сервера. Скрипты автоматически извлекают из него:
- Порт и протокол
- Сеть VPN
- Настройки DNS
- Параметры безопасности
- Максимальное количество клиентов
Конфигурационный файл для скриптов управления:
- Пути к файлам и директориям
- Параметры EasyRSA
- Настройки логирования
- Функции для извлечения параметров из server.conf
Скрипты автоматически ищут manager.conf в:
/etc/openvpn/manager.conf
- Директории со скриптом
- Текущей директории
sudo openvpn-manager
Доступные функции:
- Инициализация PKI (первый запуск)
- Создание клиента
- Отзыв клиента
- Список клиентов
- Активные подключения
- Экспорт конфигурации клиента
- Перегенерация конфигурации клиента
- Перегенерация всех конфигураций
- Проверка конфигурации
- Резервное копирование
- Статус сервера
sudo quick-add-client username
Автоматически:
- Создаст сертификат
- Сгенерирует .ovpn файл
- Скопирует в домашнюю директорию
sudo bulk-operations
Возможности:
- Создание нескольких клиентов
- Импорт из CSV файла
- Массовый отзыв сертификатов
- Массовая перегенерация конфигураций
- Экспорт всех конфигураций
- Генерация отчетов
client_name,email
john_doe,[email protected]
jane_smith,[email protected]
sudo openvpn-monitor
Показывает:
- Статус сервера и uptime
- Активные подключения
- Статистику трафика
- Топ клиентов по трафику
- Системные метрики
vpn-manager # Главное меню
vpn-add # Быстрое добавление клиента
vpn-bulk # Массовые операции
vpn-monitor # Мониторинг
vpn-status # Статус службы
vpn-restart # Перезапуск сервера
vpn-logs # Просмотр логов
# Создать клиента и отправить конфигурацию по email
sudo quick-add-client john_doe
# Импортировать клиентов из CSV
sudo bulk-operations
# Выбрать пункт 2, указать путь к CSV файлу
# Перегенерировать конфигурацию одного клиента
sudo openvpn-manager
# Выбрать пункт 7, ввести имя клиента
# Перегенерировать все конфигурации клиентов
sudo openvpn-manager
# Выбрать пункт 8
# Массовая перегенерация через bulk-operations
sudo bulk-operations
# Выбрать пункт 4
# Мониторинг в реальном времени
sudo openvpn-monitor
# Выбрать пункт 2 для обновления каждые 5 секунд
# Создать резервную копию
sudo openvpn-manager
# Выбрать пункт 10
Генерируемые конфигурации содержат все необходимые данные и готовы к использованию:
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
tls-client
key-direction 1
verb 3
redirect-gateway def1 bypass-dhcp
dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4
<ca>
# CA сертификат встроен
</ca>
<cert>
# Клиентский сертификат встроен
</cert>
<key>
# Приватный ключ клиента встроен
</key>
<tls-auth>
# TLS ключ встроен
</tls-auth>
Особенности:
- Все сертификаты и ключи встроены в файл
- Не требуются дополнительные файлы
- Готов к импорту в любой OpenVPN клиент
- Автоматически извлекаются параметры из server.conf
- Все ключи хранятся с правами 600
- Автоматическое резервное копирование
- Поддержка CRL (Certificate Revocation List)
- Логирование всех операций
- Современные шифры и алгоритмы
# Проверить конфигурацию
sudo openvpn-manager
# Выбрать пункт 7 (Проверить конфигурацию)
# Проверить логи
sudo vpn-logs
Проблема: В Ubuntu/Debian группа называется nogroup
, а не nobody
.
Симптомы:
- Сервер не запускается
- В логах ошибка:
failed to find GID for group nobody
- Статус службы показывает
exit-code
Решение:
# Исправить группу в конфигурации
sed -i 's/group nobody/group nogroup/' /etc/openvpn/server.conf
# Перезапустить сервер
systemctl restart openvpn@server
systemctl status openvpn@server
Проблема: Ошибка --crl-verify fails with '/etc/openvpn/crl.pem': No such file or directory
Решение:
# Создать CRL файл
cd /etc/openvpn/easy-rsa
./easyrsa gen-crl
cp pki/crl.pem /etc/openvpn/crl.pem
chmod 644 /etc/openvpn/crl.pem
# Перезапустить сервер
systemctl restart openvpn@server
Альтернативное решение (временное):
# Отключить проверку CRL
sed -i 's/^crl-verify/#crl-verify/' /etc/openvpn/server.conf
- Проверьте, что порт открыт в файрволе
- Убедитесь, что IP сервера правильный
- Проверьте время на сервере и клиенте
# Проверить PKI
cd /etc/openvpn/easy-rsa
./easyrsa show-ca
# Проверить подробные логи
tail -50 /var/log/openvpn/openvpn.log
# Запустить OpenVPN в режиме отладки
openvpn --config /etc/openvpn/server.conf --verb 4
# Проверить наличие всех файлов
ls -la /etc/openvpn/{ca.crt,server.crt,server.key,dh.pem,ta.key,crl.pem}
# Проверить права доступа
chmod 644 /etc/openvpn/{ca.crt,server.crt,dh.pem,ta.key,crl.pem}
chmod 600 /etc/openvpn/server.key
После установки настроены cron задачи:
- Ежедневно в 2:00 - резервное копирование
- Еженедельно в понедельник 9:00 - генерация отчета
Для получения уведомлений по email:
- Установите
mailutils
- Укажите email в
openvpn.conf
- Настройте SMTP на сервере
# Создать резервную копию
sudo openvpn-manager
# Выбрать пункт 8
# Обновить скрипты
cd /path/to/new/scripts
sudo ./install.sh
MIT License - свободное использование и модификация