Установка сервера OpenVPN на CentOS 8

Материал из sysadm
Перейти к навигации Перейти к поиску

Ссылки по теме

Установите OpenVPN

dnf install epel-release
dnf install openvpn

Включите форвардинг, для этого добавьте параметр в файл /etc/sysctl.conf

net.ipv4.ip_forward = 1

Чтобы применить изменение без перезагрузки, выполните команду

sysctl -p

Добавьте доступ в локальном файрволе

  • доступ на подключение к сервису openvpn
  • доступ для VPN трафика

Например так:

firewall-cmd --permanent --zone=public  --add-service openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0
firewall-cmd --reload

Создайте каталог для временных файлов tmp-dir

mkdir -p /var/lib/openvpn/chroot/tmp
chown openvpn:openvpn /var/lib/openvpn/chroot/tmp
chmod 770 /var/lib/openvpn/chroot/tmp

Создайте файл конфигурации /etc/openvpn/server/server.conf

port 1194
proto udp4
explicit-exit-notify 1

dev tun

ca      /etc/openvpn/server/rootCA.pem
cert    /etc/openvpn/server/server.pem
key     /etc/openvpn/server/server.key
askpass /etc/openvpn/server/server.pass

verify-client-cert require 

auth-user-pass-verify /etc/openvpn/server/verify.sh via-file
tmp-dir /var/lib/openvpn/chroot/tmp
script-security 2

dh none

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/lib/openvpn/ipp.txt

#topology subnet
client-to-client

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

keepalive 10 120

cipher AES-256-GCM
auth SHA256

persist-key
persist-tun

status /var/lib/openvpn/status.log
verb 3

Создайте и разместите файлы сертификатов в каталоге /etc/openvpn/server

  • rootCA.pem - сертификат, которым подписан сертификат сервера
  • server.pem - сертификат сервера
  • server.key - зашифрованный приватный ключ сертификата сервера
  • server.pass - пароль для расшифровки приватного ключа

Создайте файл скрипта аутентификации /etc/openvpn/server/verify.sh

#!/bin/bash

USERS=`cat /etc/openvpn/server/user.pass`

vpn_verify() {
  if [ ! $1 ] || [ ! $2 ]; then
    exit 1
  fi

  if [ ! "$common_name" = "$1" ]; then
    exit 1
  fi

  for i in $USERS; do
    if [ "$i" = "$1:$2" ]; then
      exit 0
    fi
  done
}

if [ ! $1 ] || [ ! -e $1 ]; then
  exit 1
fi

vpn_verify `cat $1`

exit 1

Создайте файл паролей пользователей /etc/openvpn/server/user.pass

user1:***password***
user2:***password***

Включите и запустите сервис OpenVPN

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