Как установить и настроить openvpn в операционной системе Linux

Как установить и настроить openvpn в операционной системе Linux
На чтение
18 мин.
Просмотров
46
Дата обновления
05.11.2024

Одной из востребованной технологий во времена "ПАНДЕМИИ" является VPN (виртуальная частная сеть). Используется для объединения несколько подсетей в одну. Примером такого объединения может быть организация удаленного доступа сотрудникам находящимся дома к ресурсам компании.

OpenVPN - ВПН протокол, который используется для создания защищенного туннеля между клиентом и сервером не только в операционной системе Линукс, а также в других системах таких как: Windows; cisco; MikroTik, Android...

Рассмотрим особенности OpenVPN:

  • использует 256 битное шифрование по умолчанию;
  • не поддерживает протоколы L2TP, IPSec и PPTP, вместо них использует свой собственный алгоритм.
  • поддерживает локальную сеть, это значит клиент может подключиться к компьютеру в локальной сети, где не установлен VPN сервер.

Для понимания, рассмотрим простую схему реализации удаленного доступа.

Схема ВПН

На рисунке выше видно, что есть сервер с операционной системой Centos. Туда установим openvpn сервер и сертификаты. На ноутбук передадим открытые ключи и установим с официального сайта openvpn клиент.

Установка

Рассмотрим установку на примере Centos 8.

Подключаем репозиторий epel-release.

# dnf -y install epel-release

Установка.

# dnf -y install openvpn

Для работы сервера, необходимо создать сертификаты. Создадим папку "keys", затем через утилиты Easy-RSA создадим ключи.

# mkdir /etc/openvpn/keys

Установка Easy-RSA 3.

На github ищем ссылку на дистрибутив и копируем ее в буфер обмена.

Ссылка на easy-rsa 3

Скачиваем Easy-RSA в папку keys.

cd /etc/openvpn/keys

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

Как видно выше дистрибутив скачался в zip архиве, чтобы распаковать его установим еще пакеты.

# dnf -y install unzip zip

Распаковка архива.

# unzip master.zip

Создание структуры ключей.

cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

Переименовываем файл vars.example в vars.

mv vars.example vars

# ./easyrsa init-pki

PKI ключи

Создание удостоверяющего центра CA.

# ./easyrsa build-ca

Создание сертификатов

В процессе выполнения скрипта мы получили два ключа:

  1. /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key
  2. /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt

ca.key ключ секретный, его нужно оставить на сервере.

ca.crt - открытый.

# ./easyrsa gen-req server nopass

Подписываем сертификат.

# ./easyrsa sign-req server server

Во время выполнения команды, необходимо ввести пароль от "CA", который вводили в прошлом на этапе создания удостоверяющего центра.

Создадим ключ Диффи-Хелмана.

# ./easyrsa gen-dh

Деффи ХелманСкопируем созданные ключи в каталог сервера /etc/openvpn/server.

cp pki/ca.crt /etc/openvpn/server/ca.crt

cp pki/dh.pem /etc/openvpn/server/server/dh.pem

cp pki/issued/server.crt /etc/openvpn/server/server.crt

cp pki/private/server.key /etc/openvpn/server/server.key

Ключ для сервера создали и скопировали, теперь создадим для клиента (в моем случае для ноутбука).

# ./easyrsa gen-req polzovatel-noutbok nopass

# ./easyrsa sign-req client polzovatel-noutbook

ВАЖНО! Для каждого пользователя нужно создавать свой ключ.

Настройка

По умолчанию после установки openvpn создается каталог /etc/openvpn. Однако он пустой, в нем нет файлов. Для создания конфига есть два варианта:

  1. скопировать его из директории /usr/share/doc/openvpn/sample/sample-config-files/server.conf
  2. создать новый в каталоге /etc/openvpn/server.

Воспользуемся вторым вариантом, скопируем файл и уберем из него комментарии "#" и ";".

cat /usr/share/doc/openvpn/sample/sample-config-files/server.conf | egrep "^[^#*;]" > /etc/openvpn/server/server.conf

ВАЖНО! Если скопировать файл конфигурации не получилось, создайте новый server.conf и скопируйте мой конфиг ниже.

Откроем конфиг редактором nano.

nano /etc/openvpn/server/server.conf

Получился такой файл конфигурации по умолчанию.

Файл конфигурации

Редактируем его, меняем стандартный порт и пути к ключам, а также к логам.



# стандартный порт 1194, для безопасности рекомендуется использовать нестандартный порт

port 9222

# протокол udp, при желании можно изменить на tcp

proto udp

dev tun

ca /etc/openvpn/server/ca.crt

cert /etc/openvpn/server/server.crt

key /etc/openvpn/server/server.key

dh /etc/openvpn/server/dh.pem

# подсеть для туннеля, может быть любой

server 172.16.0.0 255.255.255.0

#указываем подсеть, к которой будем обращаться через vpn

route 192.168.50.0 255.255.255.0

# передаем маршрут клиентам

push "route 192.168.50.0 255.255.255.0"

# файл с записями соответствий clinet - ip

ifconfig-pool-persist ipp.txt

# позволяет клиентам openvpn подключаться друг к другу

client-to-client

# каталог с настройками клиента

client-config-dir /etc/openvpn/client

keepalive 10 120

comp-lzo

persist-key

persist-tun

status /var/log/openvpn/openvpn-status.log

log /var/log/openvpn/openvpn.log

verb 3

Создадим каталог для логов.

mkdir /var/log/openvpn

Добавим конфиг клиента, с помощью редактора nano

nano /etc/openvpn/client/client

iroute 192.168.50.0 255.255.255.0

Файл конфигурации клиента

Настройка в файле client означает, что подсеть 192.168.50.0 255.255.255.0 относится к клиенту, если команду iroute убрать, то сеть в локальной сети клиента не будет видна.

Наконец, запускаем VPN на сервере.

systemctl start openvpn-server@.service

Добавляем в автозагрузку.

systemctl enable openvpn-server@.service

Проверяем слушается ли порт 9222

netstat -tulnp | grep 9222

Установка клиента на windows 10

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

Затем нажимаем на кнопку "GET OPENVPN".GET OPENVPN

Далее выбираем "WINDOWS".

WINDOWS

 

Скачиваем файл и устанавливаем на windows.

Открываем папку  C:\Program Files\OpenVPN\config

Копируем сертификаты (ключи) из сервера:

  • polzovatel-noutbok.key
  • polzovatel-noutbok.crt
  • ca.crt.

С помощью блокнота создаем файл config.ovpn со следующим содержимом:

dev tun

proto udp

remote внешний IP-адрес сервера Centos

port 9222

client

resolv-retry infinite

ca ca.crt

cert user1.crt

key user1.key

persist-key

persist-tun

comp-lzo

0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий