Консультация Oblako.kz

Как установить и настроить OpenVPN на сервер с дистрибутивом CentOS 7

В этой статье приведен детальный процесс установки и настройки OpenVPN на сервер, управляемый CentOS 7.

OpenVPN - свободная реализация подключения виртуальных сетей с открытым исходным кодом.

CentOS 7 - система, построенная на исходном коде Red Hat Linux.

Аренда виртуальных серверов от oblako.kz.

Еще до начала установки необходимо скачать и установить дополнительные пакеты из хранилища EPEL, управляемого Fedora Project. В репозитории лежат популярные приложения для CentOS, не установленные в систему по умолчанию.

yum install epel-release

Этап 1

Сначала требуется установка софта, после чего необходимо скачать утилиту Easy RSA. Она необходима для генерации пары ключей для шифрования. Они применяются для обеспечения безопасности соединений между сетями.

yum install openvpn easy-rsa –y

Этап 2

В файловой системе программы есть документы, содержащие тестовые конфигурации OpenVPN. Для начала необходимо скопировать файл с именем server.conf - он послужит основой для создания новой совокупности параметров.

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

Чтобы открыть файл необходимо следующее:

vi /etc/openvpn/server.conf

В данной директории требуется внесение изменений. Необходимо установить определенное значение в файле настроек, чтобы при дальнейшей генерации ключи имели размер 2048 байт. Для корректного изменения необходимо поменять имя файла dh так, как это изображено ниже:

dh dh2048.pem

После необходимо удалить значок «;» в строке push "redirect-gateway def1 bypass-dhcp". Это необходимо для того, чтобы уведомления о необходимости перенаправления трафика через установленный клиент приходили своевременно.

Далее важно прописать значения публичных DNS-серверов Google. Это нужно сделать, чтобы клиентские приложения могли использовать сервер, так как им недоступны серверы провайдера. Чтобы внести нужные данные, параметры push "dhcp-option DNS" необходимо сначала раскомментировать, а затем указать данные серверов Google, как это указано ниже.

push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

Чтобы была возможность запуска программы без привилегий, необходимо прописать такие настройки запуска, чтобы разрешить подключаться от имени пользователя и группы nobody. В указанных ниже строках нужно убрать необходимые символы. После завершения настройки сохраните внесенные данные и закройте документ.

user nobody group nobody

Этап 3

После изменения настроек и их сохранения, переходите к этапу созданию ключей и сертификатов. В пакете есть специальные скрипты для их генерации.

Первый шаг – создание пути, где будут храниться готовые ключи. Директория располагается здесь:

mkdir -p /etc/openvpn/easy-rsa/keys

Туда необходимо перенести скрипты для генерации сертификатов и ключей.

cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Чтобы упростить дальнейшее использование OpenVPN, вносятся определенные изменения в скрипты, генерирующие ключи. Это поможет оптимизировать работу и не дублировать ввод значений несколько раз. Чтобы изменить скрипт, необходимо внести правки в файл vars, расположенный здесь:

vi /etc/openvpn/easy-rsa/vars

Найдите поля, начинающиеся с KEY_ , туда будет вноситься информация о компании. Обязательно необходимо заполнить строки KEY_NAME и KEY_CN.

В первом параметре необходимо вписать значение server. Это делается для того, чтобы не пришлось менять все файлы конфигурации, где есть упоминания server.key и server.crt.

Во втором параметре нужно вписать имя домена.

В прочие строки KEY_ по желанию вносится дополнительная информация. Ниже приведены примеры, при редактировании их нужно заменить на данные вашей компании.

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moscow"
export KEY_CITY="Moscow"
export KEY_ORG="OOO Romashka"
export KEY_EMAIL="ivan@example.com"
export KEY_OU="Community"

# X509 Subject Field
export KEY_NAME="server"

. . .

export KEY_CN=openvpn.example.com

Если определить версию программы невозможно, то могут возникать сбои в загрузке SSL. Чтобы исключить риск возникновения подобной проблемы, нужно скопировать приведенные ниже данные и стереть номер версии из его названия.

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

Переходите в директорию easy-rsa, где необходимо ввести "source" для создания новых ключей и сертификатов.

cd /etc/openvpn/easy-rsa
source ./vars

Иные данные, лежащие в директории, необходимо удалить.

./clean-all

Внесите данные об организации, которой принадлежит сертификат.

./build-ca

Далее следует этап генерации ключей и сертификатов. Так как все необходимые изменения уже были внесены, то на вопросы системы можно нажимать Enter , то есть далее. В конце необходимо нажать «ДА» («Y»), чтобы сохранить изменения.

./build-key-server server

Далее необходимо создать файл обмена по криптографическому протоколу Диффи-Хеллмана, сгенерировав дополнительный ключ.

./build-dh

Сгенерируем вспомогательный ключ ta.key

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Созданные данные должны быть скопированы в папку OpenVPN.

cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key ta.key /etc/openvpn

Для того, чтобы клиентские приложения могли устанавливать связь с сервером, необходимы ключи и сертификаты. Для каждого конкретного приложения создается уникальный ключ со своим именем. Ниже описан процесс для одного клиента.

cd /etc/openvpn/easy-rsa
./build-key client

Этап 4

Настройка производится с использованием инструмента firewall iptables. В случае необходимости его нужно установить, а затем запустить.

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush

В фаерволл добавляется правило, описанное ниже, для направления соединений в OpenVPN:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

Путем редактирования sysctl.conf , активируем IP-форвардинг:

vi /etc/sysctl.conf

Затем нужно добавить такие данные в самое начало файла:

net.ipv4.ip_forward = 1

Следующей командой производим перезапуск сервера:

systemctl restart network.service

Этап 5

Для корректного запуска программы, необходимо добавить клиент в systemctl:

systemctl -f enable openvpn@server.service

Запускайте программу командой:

openvpn /etc/openvpn/server.conf

Настройка программы со стороны сервера окончена. Следующим этапом будет настройка со стороны клиента.

Этап 6

При настройке программы не учитывается, на какой именно ОС работает устройство, различаются только способы подключения к клиенту. Для правильного подключения к серверу необходимы ключи и сертификаты, уже сгенерированные ранее. Найти нужные данные можно в директории, указанной ниже:

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key

Для загрузки и сохранения файлов применяется протокол SFTP. Более простой способ заключается в создании новых файлов непосредственно на устройстве и копирование данных с помощью текстового редактора. Важно запомнить, что сохранять новые файлы необходимо под теми же именами.

Следующий этап – создание документа под client.ovpn. Это файл настроек для OpenVPN, содержащий нужные данные для соединения с сервером. В соответствующих полях документа нужно исправить введенные данные. Необходимо изменить имя клиента на необходимое, прописать правильный ip-адрес сервера и путь к файлам, где лежат ключи и сертификаты.  

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key

Файл после внесения изменений полностью готов к использованию. Далее мы рассмотрим, как происходит подключение на различных устройствах с разными ОС.

Для подключения на устройстве, работающем на ОС Windows, необходимо:

  • Загрузить с официального сайта последнюю версию бинарных файлов OpenVPN;
  • Переместить документ с данными по адресу C:\Program Files\OpenVPN\config;
  • Для подключения нажать на Connect непосредственно в графическом интерфейсе клиента.

Для устройств MacOS:

  • Для подключения используется встроенная программа Tunnelblick;
  • Чтобы переместить конфигурационный файл в директорию инструмента можно просто кликнуть по нему.

Для Linux:

  • Программа OpenVPN скачивается из хранилища установочного пакета программы;
  • Запуск производится командой, указанной ниже: sudo openvpn --config ~/path/to/client.ovpn

Если придерживаться этой пошаговой инструкции, то установка OpenVPN и настройка сервера пройдет успешно. После установки необходимо удостовериться в защите трафика. Это легко проверить, если воспользоваться общедоступным сервисом, показывающим публичный IP. При корректной работе будет отображаться адрес VPN-сервера.

Последнее обновление: 31.10.2023