Как установить и настроить сервер OpenVPN на RHEL 8 / CentOS 8
В этом руководстве объясняется, как установить и настроить сервер OpenVPN на RHEL / CentOS 8. Виртуальная частная сеть (VPN) позволяет безопасно проходить через ненадежные сети, как если бы вы находились в защищенной локальной сети. OpenVPN — это полнофункциональное решение VPN с открытым исходным кодом Secure Socket Layer (SSL), которое поддерживает широкий спектр конфигураций.
С OpenVPN вы можете легко настроить безопасный туннель, который расширяет частную сеть через общедоступную. Весь отправляемый трафик зашифрован, и вы можете доверять информации, полученной на другом конце. В этом сообщении блога мы рассмотрим простой способ установки и настройки сервера OpenVPN на сервере RHEL / CentOS 8.
Установите OpenVPN Server на RHEL / CentOS 8
Есть два варианта настройки сервера OpenVPN на RHEL / CentOS 8.
- Установка сервера OpenVPN вручную — требует много времени
- Установите сервер OpenVPN с помощью автоматических скриптов — легко и быстро
В этом руководстве основное внимание уделяется использованию надежного сценария для установки и настройки сервера OpenVPN. Мы будем использовать скрипт openvpn-install, который позволит вам настроить собственный VPN-сервер не более чем за минуту, даже если вы раньше не использовали OpenVPN. Он был разработан так, чтобы быть максимально ненавязчивым и универсальным.
Шаг 1. Добавьте EPEL и установите git.
Добавьте репозиторий EPEL в вашу систему RHEL / CentOS 8. У него есть пакет openvpn и необходимые зависимости.
Как установить репозиторий EPEL на RHEL / CentOS 8
Также нам понадобится git, чтобы получить код из Github. Убедитесь, что он установлен.
sudo dnf -y install git
Шаг 2. Клонируйте репозиторий openvpn-install
Теперь клонируйте openvpn-install
репозиторий с помощью инструмента git, установленного на первом шаге:
$ cd ~ $ git clone https://github.com/Nyr/openvpn-install.git Cloning into 'openvpn-install'… remote: Enumerating objects: 360, done. remote: Total 360 (delta 0), reused 0 (delta 0), pack-reused 360 Receiving objects: 100% (360/360), 104.04 KiB | 263.00 KiB/s, done. Resolving deltas: 100% (180/180), done.
Шаг 3. Запустите установщик OpenVPN.
Переключитесь на openvpn-install
каталог и запустите установочный скрипт.
$ chmod +x openvpn-install.sh $ sudo ./openvpn-install.sh
Вы получите несколько запросов на изменение или подтверждение настроек по умолчанию для установки.
Welcome to this OpenVPN "road warrior" installer! I need to ask you a few questions before starting the setup. You can leave the default options and just press enter if you are ok with them. First, provide the IPv4 address of the network interface you want OpenVPN listening to. IP address: 192.168.122.198 This server is behind NAT. What is the public IPv4 address or hostname? Public IP address / hostname: vpn.example.com Which protocol do you want for OpenVPN connections? 1) UDP (recommended) 2) TCP Protocol [1-2]: 1 What port do you want OpenVPN listening to? Port: 1194 Which DNS do you want to use with the VPN? 1) Current system resolvers 2) 1.1.1.1 3) Google 4) OpenDNS 5) Verisign DNS [1-5]: 1 Finally, tell me your name for the client certificate. Please, use one word only, no special characters. Client name: infoitcomua Okay, that was all I needed. We are ready to set up your OpenVPN server now. Press any key to continue… Updating Subscription Management repositories. Updating Subscription Management repositories. Extra Packages for Enterprise Linux 7 - x86_64 189 kB/s | 16 MB 01:24 Last metadata expiration check: 0:00:54 ago on Wed 20 Mar 2019 07:23:31 PM EAT. Package epel-release-7-11.noarch is already installed. Dependencies resolved. Nothing to do. Complete! Updating Subscription Management repositories. Updating Subscription Management repositories. Waiting for process with pid 1906 to finish. Package iptables-1.8.0-11.el8.x86_64 is already installed. Package openssl-1:1.1.1-6.el8.x86_64 is already installed. Package ca-certificates-2018.2.24-6.el8.noarch is already installed. Dependencies resolved. Package Arch Version Repository Size Installing: openvpn x86_64 2.4.7-1.el7 epel 522 k Installing dependencies: pkcs11-helper x86_64 1.11-3.el7 epel 56 k libnsl x86_64 2.28-18.el8 rhel-8-for-x86_64-baseos-beta-rpms 84 k compat-openssl10 x86_64 1:1.0.2o-3.el8 rhel-8-for-x86_64-baseos-beta-rpms 1.1 M Transaction Summary Install 4 Packages Total download size: 1.8 M Installed size: 4.6 M Downloading Packages: (1/4): pkcs11-helper-1.11-3.el7.x86_64.rpm 34 kB/s | 56 kB 00:01 (2/4): openvpn-2.4.7-1.el7.x86_64.rpm 191 kB/s | 522 kB 00:02 (3/4): libnsl-2.28-18.el8.x86_64.rpm 26 kB/s | 84 kB 00:03 (4/4): compat-openssl10-1.0.2o-3.el8.x86_64.rpm .......................
Вам необходимо установить:
- IP-адрес сервера, который будет использоваться VPN
- Имя хоста сервера, если внутри NAT
- Используемый протокол OpenVPN — TCP или UDP
- Порт OpenVPN
- DNS-сервер для использования с VPN
- Имя первого создаваемого клиентского профиля
Если установка прошла успешно, вы должны получить сообщение, подобное приведенному ниже.
.............. Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'infoitcomua' Certificate is to be certified until Mar 17 16:24:47 2029 GMT (3650 days) Write out database with 1 new entries Data Base Updated Using SSL: openssl OpenSSL 1.1.1 FIPS 11 Sep 2018 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG 140135296710464:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd An updated CRL has been created. CRL file: /etc/openvpn/easy-rsa/pki/crl.pem 788 success success success success success success 612 Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected] Finished! Your client configuration is available at: /root/infoitcomua.ovpn If you want to add more clients, you simply need to run this script again!
Основной файл конфигурации сервера OpenVPN — /etc/openvpn/server.conf
вы можете настроить его по своему вкусу.
$ cat /etc/openvpn/server.conf
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.122.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
tun0
Виртуальный интерфейс будет создан в процессе установки. Это используется подсетью клиентов OpenVPN.
$ ip addr | grep tun0 3: tun0: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
Подсеть по умолчанию для этого интерфейса. 10.8.0.0/24.
Серверу OpenVPN будет присвоен 10.8.0.1
IP-адрес:
Шаг 3. Создайте профиль пользователя OpenVPN (файл .ovpn)
После выполнения шагов с 1 по 3 ваш VPN-сервер готов к использованию. Нам нужно создать профили VPN, которые будут использоваться пользователями. Для этого будет использоваться тот же скрипт, который мы использовали для установки. Он управляет созданием и отзывом профилей пользователей.
Запустите сценарий и выберите 1
добавление нового пользователя.
$ sudo ./openvpn-install.sh Looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke an existing user 3) Remove OpenVPN 4) Exit Select an option [1-4]: 1 Tell me a name for the client certificate. Please, use one word only, no special characters. Client name: user1 Using SSL: openssl OpenSSL 1.1.1 FIPS 11 Sep 2018 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG 139966006863680:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd Generating a RSA private key ……………………………………………………………………..+++++ ……………………………………….+++++ writing new private key to '/etc/openvpn/easy-rsa/pki/private/user1.key.SeCj8ncgaH' Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG 139828629223232:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'user1' Certificate is to be certified until Mar 17 16:48:32 2029 GMT (3650 days) Write out database with 1 new entries Data Base Updated Client user1 added, configuration is available at: /root/user1.ovpn
.ovpn
Файл профиля OpenVPN помещается внутри /root папки.
$ sudo ls /root/ | grep ovpn infoitcomua.ovpn user1.ovpn
Отзыв профиля пользователя OpenVPN
Чтобы отозвать профиль пользователя, запустите сценарий и выберите 2
.
$ sudo ./openvpn-install.sh Looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke an existing user 3) Remove OpenVPN 4) Exit Select an option [1-4]: 2 Select the existing client certificate you want to revoke: 1) infoitcomua 2) user1 Select one client [1-2]: 2 Do you really want to revoke access for client user1? [y/N]: y Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG 140410149218112:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd Revoking Certificate FAC5CC0C127D1242CC55BD31B7FB27D3. Data Base Updated Using SSL: openssl OpenSSL 1.1.1 FIPS 11 Sep 2018 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG 139874879330112:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd An updated CRL has been created. CRL file: /etc/openvpn/easy-rsa/pki/crl.pem Certificate for client user1 revoked!
Удаление сервера OpenVPN на RHEL / CentOS 8
Если вам больше не нужен сервер OpenVPN, его можно удалить с помощью того же скрипта установщика.
$ sudo ./openvpn-install.sh Looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke an existing user 3) Remove OpenVPN 4) Exit Select an option [1-4]: 3 Do you really want to remove OpenVPN? [y/N]: y 788 success success success success success success Updating Subscription Management repositories. Updating Subscription Management repositories. Dependencies resolved. .... Complete! OpenVPN removed!
Шаг 4. Подключитесь к серверу OpenVPN с клиента
Вы можете использовать VPN-клиент по вашему выбору для настройки OpenVPN-клиента в вашей операционной системе. Для тех, кто хочет использовать официальный клиент OpenVPN, перейдите на страницу загрузок и получите последнюю версию, а затем установите ее.
После установки в Windows перейдите в каталог с ovpn
профилем, щелкните правой кнопкой мыши имя файла и выберите « Запустить OpenVPN в этом файле конфигурации ».
Для пользователей Linux вы можете использовать NetworkManager и плагин openvpn для подключения к серверу OpenVPN. Ознакомьтесь с моим предыдущим руководством, чтобы узнать, как: Как использовать nmcli для подключения к серверу OpenVPN в Linux.
Вывод
Вы успешно установили сервер OpenVPN на RHEL / CentOS 8. Компьютеры на каждом конце туннеля VPN будут шифровать данные, входящие в туннель, и расшифровывать их на другом конце. Проверьте OpenVPN документации для выбора параметров конфигурации.