OpenVPN: различия между версиями

Материал из ALT Linux Wiki
(Создал статью)
 
(описал /etc/sysconfig/openvpn)
Строка 17: Строка 17:
Каждый файл конфигурации по маске /etc/openvpn/*.conf является конфигурацией отдельного экземпляра демона openvpn. Для имени экземпляра берётся имя файла без суффикса ".conf".
Каждый файл конфигурации по маске /etc/openvpn/*.conf является конфигурацией отдельного экземпляра демона openvpn. Для имени экземпляра берётся имя файла без суффикса ".conf".


Стартовый скрипт /etc/init.d/openvpn может запускать и останавливать как все экземпляры демона, так и каждый по отдельности, для чего в конце командной строки указываем имя экземпляра. Например:
Настройки стартового скрипта располагаются в файле /etc/sysconfig/openvpn, по умолчанию он устанавливает следующие переменные окружения:
CHROOT=yes
OPENVPNUSER=openvpn
OPENVPNGROUP=openvpn
MANUAL=""
 
Стартовый скрипт /etc/init.d/openvpn может запускать и останавливать как все экземпляры демона, так и каждый по отдельности. Значение переменной MANUAL в /etc/sysconfig/openvpn указывает экземпляры, которые нужно запустить при старте системы (и при запуске стартового скрипта без параметра).
 
Для ручного запуска (остановки, проверки) одного экземпляра в конце командной строки указываем имя экземпляра. Например:
  [root@kuvepus openvpn]# service openvpn start server
  [root@kuvepus openvpn]# service openvpn start server
  Adjusting environment for openvpn:                                                                                                                                                            [ DONE ]
  Adjusting environment for openvpn:                                                                                                                                                            [ DONE ]
  Starting openvpn service:                                                                                                                                                                    [ DONE ]
  Starting openvpn service:                                                                                                                                                                    [ DONE ]
  [root@kuvepus openvpn]# service openvpn status client
  [root@kuvepus openvpn]# service openvpn status client-one
  openvpn is stopped
  openvpn is stopped



Версия от 09:46, 20 июля 2015

Рассмотрена настройка OpenVPN в режиме "server" на сервере Altlinux P7 с SysVinit. В случае systemd есть отличия.

Пакеты

openvpn - полнофункциональное решение VPN на базе SSL

Размещение файлов

  • /var/lib/openvpn/ — Корневой каталог после инициализации демона (chroot).
    • /var/lib/openvpn/etc/openvpn/ccd — Каталог, в котором размещаются файлы особых параметров для подключаемых клиентов (Client Config Directory).
    • /var/lib/openvpn/cache — Рабочий каталог, является текущим для работы демона после инициализации (в него демон записывает файлы, у которых не указан путь - ipp и status).
  • /etc/openvpn/ — Каталог с файлами настройки.
    • /etc/openvpn/ccd — Символическая ссылка на /var/lib/openvpn/etc/openvpn/ccd (файлы доступны и до, и после chroot).
    • /etc/openvpn/keys/ — Каталог для хранения ключей (точнее, для информации ограниченного доступа)

Особенности работы и конфигурации

Каждый файл конфигурации по маске /etc/openvpn/*.conf является конфигурацией отдельного экземпляра демона openvpn. Для имени экземпляра берётся имя файла без суффикса ".conf".

Настройки стартового скрипта располагаются в файле /etc/sysconfig/openvpn, по умолчанию он устанавливает следующие переменные окружения:

CHROOT=yes
OPENVPNUSER=openvpn
OPENVPNGROUP=openvpn
MANUAL=""

Стартовый скрипт /etc/init.d/openvpn может запускать и останавливать как все экземпляры демона, так и каждый по отдельности. Значение переменной MANUAL в /etc/sysconfig/openvpn указывает экземпляры, которые нужно запустить при старте системы (и при запуске стартового скрипта без параметра).

Для ручного запуска (остановки, проверки) одного экземпляра в конце командной строки указываем имя экземпляра. Например:

[root@kuvepus openvpn]# service openvpn start server
Adjusting environment for openvpn:                                                                                                                                                            [ DONE ]
Starting openvpn service:                                                                                                                                                                     [ DONE ]
[root@kuvepus openvpn]# service openvpn status client-one
openvpn is stopped


Когда запускаем сервис, демон openvpn запускается, читает файл конфигурации из /etc/openvpn/, читает оттуда же файлы dh, ca и ключи. Этот каталог доступен демону только при его запуске.

Дальше демон выполняет chroot в /var/lib/openvpn/ и cd в /var/lib/openvpn/cache, понижает привилегии до пользователя openvpn, затем инициализирует работу с сетью.

Таким образом, файл конфигурации размещаем в /etc/openvpn, все ключи размещаем в /etc/openvpn/keys, файлы настроек клиентов - в /etc/openvpn/ccd/ или /var/lib/openvpn/etc/openvpn/ccd/. В файле конфигурации указываем

  • ifconfig-pool-persist и status — без полного пути либо с путём /cache/
  • ca, dh, cert, key — с путём /etc/openvpn/keys/
  • client-config-dir /etc/openvpn/ccd
Совет.

Если нужны несколько экземпляров сервера openvpn, файлы в параметрах status и ifconfig-pool-persist указывайте разные, например, с именем экземпляра в префиксе.

Пример

$ cat /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca   /etc/openvpn/keys/admin.ca
dh   /etc/openvpn/keys/dh4096.pem
cert /etc/openvpn/keys/server.crt
key  /etc/openvpn/keys/server.key
comp-lzo
server 192.168.254.0 255.255.255.0
tls-server
cipher AES-256-CBC
verb 3
mute 10
keepalive 10 60
user nobody
group nogroup
persist-key
persist-tun
status server_status.log
ifconfig-pool-persist server_ipp.txt
verb 3
management localhost 1194
push "route 192.168.1.0 255.255.255.0"
client-config-dir /etc/openvpn/ccd
route 192.168.2.0 255.255.255.0
route 192.168.3.0 255.255.255.0