Установка и настройка OpenVPN на сервере под управлением CentOS 7

В данном видео подробно описан процесс установки и настройки OpenVPN на CentOS 7 (на виртуальном сервере). Open VPN — это открытое VPN-приложение для создания и подключения к частным сетям по открытым интернет-каналам.Текстовый вариант инструкции доступен по ссылке https://1cloud.ru/help/linux/Kak-ustanovit-i-nastroit-OpenVPN-na-CentOS7 T18M23S Как установить и настроить OpenVPN CentOS 7 2015-12-10 true 640 360

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

Прежде чем начать, нужно установить дополнительные пакеты из репозитория Enterprise Linux (EPEL). Это необходимо потому, что OpenVPN недоступен в CentOS по умолчанию. Репозиторий EPEL управляется сообществом Fedora Project и содержит нестандартные для CentOS, но популярные пакеты приложений.

yum install epel-release

Шаг #1: Установка пакета OpenVPN

Прежде всего, необходимо установить OpenVPN. Также мы установим инструмент Easy RSA — он будет использоваться для создания пар SSL-ключей, которые обеспечат безопасность VPN-соединений.

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

Здесь нужно будет внести несколько изменений. Когда в дальнейшем мы будем генерировать ключы в программе Easy RSA, их размер будет по умолчанию составлять 2048 байт, поэтому нужно убедиться, что соответствующее значение указано в файле настроек. Нужно изменить название файла dh на dh2048.pem:

dh dh2048.pem

Затем нужно раскомментировать (удалить символ “;”) строку push "redirect-gateway def1 bypass-dhcp", которая сообщает клиенту о необходимости редиректа трафика через OpenVPN.

Затем нужно указать DNS-серверы, поскольку клиентские приложения не смогут использовать серверы интернет-провайдера. Самым логичным выходом является использование публичных DNS-серверов Google 8.8.8.8 и 8.8.4.4.

Для этого нужно раскомментировать строки, начинающиеся с push "dhcp-option DNS" и вписать туда адреса DNS-серверов Google:

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

Нам нужно, чтобы OpenVPN запускался без привилегий, поэтому нужно указать, что он запускается от имени пользователя и группы nobody. Для этого нужно раскомментировать соответствующие строки:

user nobody
group nobody

Затем нужно сохранить файл и выйти из него.

Шаг #3: Создание ключей и сертификатов

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

Создадим директорию, в которой будут храниться ключи:

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: Следует указать значение server, иначе придется вносить изменения в конфигурационные файлы, в которых упоминается server.key и server.crt.
  • KEY_CN: здесь надо написать домен или поддомен, который указывает на ваш сервер.

В остальные поля можно внести информацию о компании:

# 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 вместо ответа.

Теперь нужно сгенерировать ключ и сертификат сервера. И снова можно просто нажимать Enter в ответ на вопросы системы. Чтобы сохранить данные, в конце процедуры следует нажать Y (yes).

./build-key-server server

Также нужно сгенерировать файл обмена по алгоритму Диффи-Хеллмана. Процесс может занять несколько минут:

./build-dh

Теперь скопируем созданные сертификаты и ключи в директорию OpenVPN.

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

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

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

Шаг 4: Маршрутизация

Чтобы упростить настройку, проведем все манипуляции с помощью стандартного фаерволла iptables, а не нового инструмента firewallcd.

Прежде всего надо убедиться в том, что сервис iptables установлен и включен.

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

Затем следует добавить в iptables правило, согласно которому соединения будут направляться в создаваемую подсеть OpenVPN:

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

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

vi /etc/sysctl.conf

В самом верху добавляем следующую строку:

net.ipv4.ip_forward = 1

Перезапускаем сетевой сервис для применения внесенных изменений:

systemctl restart network.service

Шаг 5: Запуск OpenVPN

Теперь все готово к запуску OpenVPN. Добавим этот сервис в systemctl:

systemctl -f enable openvpn@server.service

Запускаем OpenVPN:

systemctl start openvpn@server.service

На этом конфигурация со стороны сервера завершена. Настроим подключение со сторорны клиента.

Шаг 6: Настройка клиента

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

Необходимые сертификаты (в нашем случае для клиента "client") хранятся в директории /easy-rsa:

/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. В нем содержатся параметры подключения к серверу. Ниже представлено содержимое этого файла, в котором необходимо заменить имя клиента (в нашем случае client), указать корректный 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 Community Edition с графическим интерфейсом управления.

Перемещаем .ovpn-файл в директорию C:\Program Files\OpenVPN\config, затем нажимаем Connect в графическом интерфейсе OpenVPN.

MacOS:

Для соединения можно использовать open-source инструмент Tunnelblick. Перемещаем .ovpn-файл в директорию ~/Library/Application Support/Tunnelblick/Configurations или просто кликнаем по этому файлу.

Linux:

На Linux нужно установить OpenVPN из официальных репозиториев конкретного дистрибутива. Затем запустить его с помощью команды:

sudo openvpn --config ~/path/to/client.ovpn

На этом все. Теперь у нас есть полностью функциональная частная виртуальная сеть с собственным OpenVPN-сервером на CentOS 7 VPN.

После успешного подключения клиента следует проверить, туннелируется ли трафик через VPN. Сделать это можно с помощью любого сервиса, показывающего ваш публичный IP-адрес (например, Google) - он должен отображать адрес VPN-сервера.


Средняя оценка: 5,0, всего оценок: 20