Удаленный доступ через OpenVPN
Для настройки удаленного доступа к сети нашей организации мы будем использовать операционную сисему Debian 11 установленную на виртуальную машину Hyper-V.
Будем считать, что Debian 11 у нас уже установлен и все необходимые службы настроены. Доступ в сеть Интернет доступен.
Содержимое
Все операции будем проводить под главным пользователем — ROOT.
Первым делом проверим обновление системы и выполним обновление, если это необходимо.
apt update
apt upgrade
Установка OpenVPN
Установим OpenVPN + EASY-RSA в нашу систему:
apt -y install openvpn
Скопируем необходимые скрипты для работы EASY-RSA в папку OpenVPN, для удобства взаимодействия:
cp -r /usr/share/easy-rsa /etc/openvpn/
Развертывание центра сертификации
Перейдем в каталог easy-rsa:
cd /etc/openvpn/easy-rsa/
Переименуем файл vars.example в файл vars:
mv vars.example vars
Теперь нам необходимо внести изменения в файл vars, в соответствии с данными нашей организации:
nano vars
Находим в теле файла следующие строки, раскомментируем их и внесем нужные нам изменения. Пример на скриншоте ниже.

Создаем инфраструктуру Центра сертификация, для этого выполним следующую команду:
./easyrsa init-pki
Об успешном завершении будет свидельствовать следующее сообщение:

Сгенерируем ключ Центра сертификации. Nopass мы указываем потому, что пароль на ключ генерации нам не требуется:
./easyrsa build-ca nopass
При запросе Common Name, можно оставить пустым, просто нажав Enter:

Генерация ключей для сервера и клиента
Генерация ключей для сервера OpenVPN (при запросе Enter PEM pass phrase: задайте пароль):
./easyrsa build-server-full server nopass
Генерация ключей для клиента OpenVPN (при запросе Enter PEM pass phrase: задайте пароль):
./easyrsa build-client-full client1 nopass
Генерация дополнительных ключей
Генерация ключа Диффи-Хеллмана (генерация займет некоторое время):
./easyrsa gen-dh
Приступаем к генерации ключа аутентификации TLS:
su -
cd /etc/openvpn/easy-rsa/
openvpn --genkey secret pki/tls.key
Пути к сгенерированным сертификатам и ключам
Все ключи и сертификаты, которые мы сгенерировали, находятся в следующих папках:
- /etc/openvpn/easy-rsa/pki/ca.crt — сертификат Центра сертификации
- /etc/openvpn/easy-rsa/pki/dh.pem — ключ Диффи Хеллмана
- /etc/openvpn/easy-rsa/pki/private/server.key — закрытый ключ OpenVPN сервера
- /etc/openvpn/easy-rsa/pki/private/client1.key — закрытый ключ OpenVPN клиента
- /etc/openvpn/easy-rsa/pki/issued/server.crt — сертификат ключа OpenVPN сервера
- /etc/openvpn/easy-rsa/pki/issued/client1.crt — сертификат ключа OpenVPN клиента
Копирование сертификатов и ключей в единую папку
Для удобства пользования, перенесем все необходимые сертификаты и ключи в единую папку.
Создадим папку keys:
mkdir /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/tls.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/private/client1.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/issued/client1.crt /etc/openvpn/keys
Конфигурация OpenVPN сервера
Копируем исходный шаблон, файл server.conf в папку openvpn:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Правим файл server.conf под наши настройки:
cd /etc/openvpn
nano server.conf
В нашей настройки сервера OpenVPN мы установим следующие значения:
- port 1194 — порт используемый по умолчанию для сервера OpenVPN
- proto udp — протокол транспортного уровня (работает быстрее чем tcp, но иногда бывают ошибки)
- dev tun — используемый виртуальный интерфейс
- ca keys/ca.crt
- cert keys/ server.crt
- key keys/server key
- dh keys/dp.pem
- server 10.8.0.0 255.255.255.0 -пул сетевых адресов при подключении к виртуальной сети для клиентов
- ifconfig-pool-persist /var/log/openvpn/ipp.txt — здесь будут сохраняться IP наших клиентов
- tls-auth keys/tls.key 0
- cipher AES-256-CBC — шифрование передоваемых данных
- comp-lzo — сжатие передаваемых данных
- с log и log-append — убираем точку с запятой, для записи логов (оставляем пути по умолчанию)
- verb 3 — уровень логирования по умолчанию
Сохраняем и закрываем файл конфигурации.
Запускаем OpenVPN сервер
Запуск сервера OpenVPN осуществляем следующей командой:
service openvpn@server start
Проверить работу нашего сервера OpenVPN вы можете следующей командой:
systemctl status openvpn@server
Если вы все сделали правильно, то на экране вы должны увидеть следующее:

На этом настройка сервера закончена. Дальше необходимо подготовить конфигурацию для пользователей/клиентов.
Что дальше:
- Установка файрвола
- Настройка клиента OpenVPN