Установка и настройка сервера OpenVPN в Fedora 29 / CentOS 7

Мануал

В этом руководстве мы узнаем, как установить и настроить сервер OpenVPN в Fedora 29 / CentOS 7.

OpenVPN – это программное обеспечение VPN с открытым исходным кодом, которое позволяет нам создавать VPN-туннели на основе SSL.

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

Не беспокойтесь, потому что если у вас есть настройка VPN-сервера, это возможно. Виртуальная частная сеть (VPN) обеспечивает безопасный туннель, который расширяет частную сеть через общедоступную сеть, т. Е. Помогает создать глобальную сеть (WAN) из существующих локальных сетей (LAN). В результате пользователи могут безопасно отправлять данные через общедоступные сети, как если бы они были напрямую подключены к своей локальной сети.

Установите и настройте сервер OpenVPN в Fedora 29/28 / CentOS 7

Без особой теории давайте рассмотрим пошаговую процедуру установки и настройки OpenVPN Server на Fedora 29/28 / CentOS 7.

Обновите свой сервер.

dnf update << Fedora
yum update << Fedora/CentOS

Установите OpenVPN и Easy-RSA на Fedora 29/28

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

Пакеты OpenVPN и Easy-RSA доступны в репозиториях Fedora по умолчанию.

Запустите команду ниже, чтобы установить их

dnf install openvpn easy-rsa

Установите OpenVPN и Easy-RSA на CentOS 7

OpenVPN недоступен в репозиториях CentOS по умолчанию, но доступен в EPEL, поэтому вам необходимо установить репозитории EPEL, прежде чем вы сможете установить OpenVPN.

Чтобы добавить дополнительные пакеты для Enterprise Linux (EPEL), выполните одну из следующих команд;

yum install epel-release

или

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

Установите OpenVPN и Easy-RSA

yum install openvpn easy-rsa

Создайте локальный центр сертификации и сгенерируйте ключи сервера и файл сертификата

Создайте каталог для хранения ключей сервера и файлов сертификатов.

mkdir /etc/openvpn/easy-rsa

Скопируйте скрипты генерации ключей / сертификатов, установленные Easy-RSA, из каталога по умолчанию в каталог, созданный выше.

cp -air /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa

Перейдите в каталог /etc/openvpn/easy-rsa и запустите новую PKI.

cd /etc/openvpn/easy-rsa
./easyrsa init-pki

Сгенерируйте сертификат CA.

Система запросит у вас пароль шифрования и общее имя сервера.

./easyrsa build-ca
...
writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key.EajtR0SkLM'
Enter PEM pass phrase: PASSWORD
Verifying - Enter PEM pass phrase: PASSWORD
-----
...
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:server

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

Как указано, сертификат CA хранится по адресу /etc/openvpn/easy-rsa/pki/ca.crt.

Создайте файл ключа Диффи-Хеллмана, который можно использовать во время рукопожатия TLS с подключением клиентов.

./easyrsa gen-dh

Это сгенерирует ключ DH и сохранится как /etc/openvpn/easy-rsa/pki/dh.pem.

Сгенерируйте ключ и файл сертификата для сервера.

./easyrsa build-server-full server nopass

Сгенерируйте ключ и файл сертификата для клиента.

./easyrsa build-client-full client nopass

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

./easyrsa gen-crl

Это сохраняет сертификат отзыва в /etc/openvpn/easy-rsa/pki/crl.pem.

Генерация предварительного общего ключа аутентификации TLS / SSL

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

Скопируйте сгенерированные сертификаты / ключи в каталог конфигурации сервера.

cp -rp /etc/openvpn/easy-rsa/pki/{ca.crt,dh.pem,ta.key,issued,private} /etc/openvpn/server/

Настройка сервера OpenVPN

OpenVPN имеет пример файла конфигурации в своем каталоге документации, и поэтому, чтобы упростить нашу жизнь, мы скопируем образец файла /usr/share/doc/openvpnndom-2.4.6,‹/sample/sample-config-files/server.conf в /etc/openvpn для модификации.

На Fedora

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

НаCentOS 7

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

Отредактируйте файл server.conf следующим образом;

vim /etc/openvpn/server/server.conf

Измените файл так, чтобы он выглядел так, как показано ниже;

# Which TCP/UDP port should OpenVPN listen on?
# Change to match your port and open it in the firewall
port 1194

# TCP or UDP server?
proto udp

# "dev tun" will create a routed IP tunnel
dev tun

# Change path for certificates
ca ca.crt
cert issued/server.crt
key private/server.key

# Diffie hellman exchange key path
dh dh.pem

# Network topology
topology subnet

# OpenVPN Network IP. For below, The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
server 172.16.0.0 255.255.255.0

# this directive will configure all clients to redirect their default
# network gateway through the VPN
push "redirect-gateway def1 bypass-dhcp"

# DNS servers
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# For compression compatible with older clients use comp-lzo.
comp-lzo

# Run VPN with limited privileges
user nobody
group nobody

# Status log file
status /var/log/openvpn/openvpn-status.log

# TLS/SSL pre-shared authentication key
tls-auth ta.key 0

# Make VPN log directory and log file
log-append /var/log/openvpn/openvpn.log

#Append this line to change authentication algorithm (HMAC) from SHA1 to SHA512
auth SHA512

Создайте каталог журналов;

mkdir /var/log/openvpn/

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

Настройка маршрутизации

Включите переадресацию IP

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

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Запустите команду ниже, чтобы применить изменения;

sysctl --system

Разрешите OpenVPN порт на брандмауэре

firewall-cmd --add-port=1194/udp --permanent

Активируйте IP маскарадинг

firewall-cmd --add-masquerade --permanent

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

Найдите интерфейс, через который отправляются пакеты, выполнив команду ниже;

ip route get 8.8.8.8
8.8.8.8 via 192.168.43.1 dev enp0s8 src 192.168.43.23

Имя интерфейса может отличаться для вашего случая. Замените соответственно

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 172.16.0.0/24 -o enp0s8 -j MASQUERADE

Перезагрузите firewalld, чтобы изменения вступили в силу.

firewall-cmd --reload

Запустите и установите запуск OpenVPN при загрузке системы.

systemctl start openvpn-server@server
systemctl enable openvpn-server@server

Когда служба OpenVPN запускается, она создает туннельный интерфейс, tun0;

ip add show tun0
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 172.16.0.1/24 brd 172.16.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1155:c60c:c009:48c9/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Серверу VPN назначается IP-адрес 172.16.0.1, а первому клиенту – 172.16.0.2.

Настройка VPN-клиента

Чтобы VPN-клиент мог подключиться к VPN-серверу, требуется копия сертификата CA, клиентского ключа, клиентского сертификата и ключа аутентификации TLS / SSL, сгенерированных выше.

Следовательно, скопируйте эти файлы на целевой клиент и поместите их в удобный каталог.

cd /etc/openvpn/easy-rsa/pki/
scp {ca.crt,issued/client.crt,private/client.key,ta.key} username@client-IP:~/

Установите клиент OpenVPN

Если вы используете сервер Linux / Unix в качестве клиента, установите клиент OpenVPN, например, с помощью соответствующего менеджера пакетов;

apt install openvpn
yum install openvpn

Если вы подключаетесь с компьютера с Windows, вы можете просто загрузить установщик клиента OpenVPN со страницы загрузок OpenVPN и установить его.

Создайте файл конфигурации OpenVPN для клиента, как показано ниже.

Например, я скопировал файлы сертификатов и ключей в мой домашний каталог на клиенте.

root@devserver:/home/amos# ls
ca.crt client.crt client.key ta.key
vim client.ovpn
client
tls-client
pull
dev tun
proto udp
remote 192.168.43.69 1194
resolv-retry infinite
nobind
dhcp-option DNS 8.8.8.8
user nobody
group nogroup
persist-key
persist-tun
key-direction 1
tls-auth ta.key 1
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
auth SHA512

Чтобы подключиться к серверу OpenVPN с клиента, выполните одну из следующих команд;

sudo openvpn client.ovpn

или

sudo openvpn --config client.ovpn

Если соединение установлено успешно, вы должны увидеть последовательность инициализации завершена.

Mon Dec 31 03:54:39 2018 TUN/TAP device tun0 opened
Mon Dec 31 03:54:39 2018 TUN/TAP TX queue length set to 100
Mon Dec 31 03:54:39 2018 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Mon Dec 31 03:54:39 2018 /sbin/ip link set dev tun0 up mtu 1500
Mon Dec 31 03:54:39 2018 /sbin/ip addr add dev tun0 172.16.0.2/24 broadcast 172.16.0.255
Mon Dec 31 03:54:39 2018 /sbin/ip route add 192.168.43.69/32 dev enp0s8
Mon Dec 31 03:54:39 2018 /sbin/ip route add 0.0.0.0/1 via 172.16.0.1
Mon Dec 31 03:54:39 2018 /sbin/ip route add 128.0.0.0/1 via 172.16.0.1
Mon Dec 31 03:54:39 2018 GID set to nogroup
Mon Dec 31 03:54:39 2018 UID set to nobody
Mon Dec 31 03:54:39 2018 Initialization Sequence Completed

Если вы можете проверить интерфейс, вы должны увидеть созданный туннельный интерфейс.

ip add sh tun0
20: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 172.16.0.2/24 brd 172.16.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::dc37:c115:60f:6b86/64 scope link flags 800 
       valid_lft forever preferred_lft forever

Вы успешно подключились к вашему VPN серверу.

Добавить комментарий

  1. Artem

    Здравствуйте! На май 2022-го года инструкция актуальна? И получится ли развернуть сервер на Fedora 36?

    Ответить