OpenVPN
Рассмотрена настройка 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/init.d/openvpn может запускать и останавливать как все экземпляры демона, так и каждый по отдельности, для чего в конце командной строки указываем имя экземпляра. Например:
[root@kuvepus openvpn]# service openvpn start server Adjusting environment for openvpn: [ DONE ] Starting openvpn service: [ DONE ] [root@kuvepus openvpn]# service openvpn status client 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