Skip to content

mvandrew/openvpn-manager

Repository files navigation

OpenVPN Manager Suite

Набор скриптов для автоматизации управления 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    # Мониторинг

📝 Конфигурационные файлы

server.conf

Основной конфигурационный файл OpenVPN сервера. Скрипты автоматически извлекают из него:

  • Порт и протокол
  • Сеть VPN
  • Настройки DNS
  • Параметры безопасности
  • Максимальное количество клиентов

manager.conf

Конфигурационный файл для скриптов управления:

  • Пути к файлам и директориям
  • Параметры EasyRSA
  • Настройки логирования
  • Функции для извлечения параметров из server.conf

Скрипты автоматически ищут manager.conf в:

  1. /etc/openvpn/manager.conf
  2. Директории со скриптом
  3. Текущей директории

🛠️ Использование

Главное меню управления

sudo openvpn-manager

Доступные функции:

  1. Инициализация PKI (первый запуск)
  2. Создание клиента
  3. Отзыв клиента
  4. Список клиентов
  5. Активные подключения
  6. Экспорт конфигурации клиента
  7. Перегенерация конфигурации клиента
  8. Перегенерация всех конфигураций
  9. Проверка конфигурации
  10. Резервное копирование
  11. Статус сервера

Быстрое создание клиента

sudo quick-add-client username

Автоматически:

  • Создаст сертификат
  • Сгенерирует .ovpn файл
  • Скопирует в домашнюю директорию

Массовые операции

sudo bulk-operations

Возможности:

  • Создание нескольких клиентов
  • Импорт из CSV файла
  • Массовый отзыв сертификатов
  • Массовая перегенерация конфигураций
  • Экспорт всех конфигураций
  • Генерация отчетов

Формат 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

📊 Формат .ovpn файла

Генерируемые конфигурации содержат все необходимые данные и готовы к использованию:

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

Ошибка "failed to find GID for group nobody"

Проблема: В 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 (Certificate Revocation List)

Проблема: Ошибка --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

Клиент не подключается

  1. Проверьте, что порт открыт в файрволе
  2. Убедитесь, что IP сервера правильный
  3. Проверьте время на сервере и клиенте

Ошибка при создании сертификата

# Проверить 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:

  1. Установите mailutils
  2. Укажите email в openvpn.conf
  3. Настройте SMTP на сервере

🔄 Обновление

# Создать резервную копию
sudo openvpn-manager
# Выбрать пункт 8

# Обновить скрипты
cd /path/to/new/scripts
sudo ./install.sh

📄 Лицензия

MIT License - свободное использование и модификация

About

Набор скриптов для автоматизации управления OpenVPN

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages