База знаний

Установка и настройка OpenVPN сервера на Centos 7  Распечатать статью

Установка OpenVPN сервера:

 1) Подключаем репозиторий epel:

      yum install epel-release

 2) Устанавливаем необходимые пакеты следующей командой:

     yum install openvpn easy-rsa

 

Создаем сертификаты:

 1) Создаем папку в которой будут находится сгенирированные сертификаты:

      mkdir /etc/openvpn/keys/

 2) Заходим в каталог с Easy-RSA 3 (версия может отличаться от вашей):

      cd /usr/share/easy-rsa/3.0.3

 3) 
Создаем файл с настройками:

      vi vars
 
           export KEY_COUNTRY="RU"
     export KEY_PROVINCE="Moscow"
     export KEY_CITY="Moscow"
     export KEY_ORG="Org Name"
     export KEY_EMAIL="info@test.ru"
     export KEY_CN="Test"
     export KEY_OU="Test"
     export KEY_NAME="name-openvpn-server"
           export KEY_ALTNAMES="alt-name-openvpn-server"

 4) Запускаем скрипт:
  
      . ./vars



Сертификаты
сервера:

 1) Инициализируем PKI:

      ./easyrsa init-pki
      
 2) Создаем корневой сертификат(необходимо 2 раза ввести пароль):

      ./easyrsa build-ca

 3) Генерируем ключи:

      ./easyrsa gen-dh

 4) Создаем запрос на сертификат для сервера и после генерируем сам сертификат:

     ./easyrsa gen-req vpn-server nopass

     ./easyrsa sign-req server vpn-server

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


 5) Сертификаты копируем в папку, которую мы создавали ранее:

      cp -r pki/* /etc/openvpn/keys/


 6) Для создания ta ключа используем команду:

      openvpn --genkey --secret /etc/openvpn/keys/ta.key


Сертификаты Клиента:

 1) Создаем запрос на сертификат и сам сертификат:

      ./easyrsa gen-req client1 nopass
      ./easyrsa sign-req client client1

        подтверждаем правильность данных и вводим пароль корневого сертификата.

     Из каталога pki на компьютер клиента копируем файлы:

  • ca.crt
  • issued/client1.crt
  • private/client1.key
  • dh.pem
  • При использовании tls, также копируем ta.key.


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


 1) Создаем конфигурационный файл:

      vi /etc/openvpn/server.conf

     И добавляем в него следующии строки:

       local 192.168.0.15
       port 443
       proto udp
       dev tun
       ca keys/ca.crt
       cert keys/issued/vpn-server.crt
       key keys/private/vpn-server.key
       dh keys/dh.pem
     
       ls-auth keys/ta.key 0

       server 172.16.10.0 255.255.255.0
       ifconfig-pool-persist ipp.txt 
       keepalive 10 120
       max-clients 32
       client-to-client
       persist-key
       persist-tun
       status /var/log/openvpn/openvpn-status.log
       log-append /var/log/openvpn/openvpn.log
       verb 4
       mute 20
       daemon
       mode server
       tls-server
       comp-lzo

        где из всех параметров внести изменения нужно в следующие — local: IP-адрес, на котором будет обрабатывать запросы OpenVPN; port: сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1723).

 2) Чтобы включить доступ к интернету через VPN сервер необходимо добавить в конец файла:

     /etc/openvpn/server.conf

     Следующие строки:
 
        push "redirect-gateway def1"
        push "dhcp-option DNS 77.88.8.8"

 3) Отключаем Selinux:

     setenforce 0

 4) Чтобы полность отключить selinux то необходимо перейти в:

      vi /etc/selinux/config

   
 и изменить значение на SELINUX=disabled

 5) Добавляем в firewalld сервис openVPN следующими командами:

     
sudo firewall-cmd --zone=trusted --add-service openvpn

      sudo firewall-cmd --zone=trusted --add-service openvpn --permanent

      sudo firewall-cmd --add-masquerade

      sudo firewall-cmd --permanent --add-masquerade
     
      sudo firewall-cmd --reload

 6) Далее необходимо включить форвардинг:

      sudo nano /etc/sysctl.conf

      И добавляем строчку:

      net.ipv4.ip_forward = 1

     И перезагружаем сервис network на сервере:

      sudo systemctl restart network.service

 7) Запускаем OpenVPN сервер и добавляем его в автозагрузку:

       systemctl enable openvpn@server>openvpn@server
       systemctl start openvpn@server openvpn@server

         Для подключения на стороне клиента например можно использовать такой конфиг:


                client
                resolv-retry infinite
               nobind
                remote 192.168.0.15 443
                proto udp
                dev tun
                comp-lzo
                ca ca.crt
                cert client1.crt
                key client1.key
                dh dh.pem
                tls-client
                tls-auth ta.key 1
                float
                keepalive 10 120
                persist-key
                persist-tun
                verb 0

               где remote это ip адрес openvpn сервера и его порт.


Использование Windows как клиента:

 Для подключения клиента на Windows необходимо скачать клиент OpenVPN c официального сайта: https://openvpn.net/index.php/open-source/downloads.html

 Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, issued/client1.crt, private/client1.key, dh.pem, ta.key из каталога /usr/share/easy-rsa/3.0.3/pki на сервере, например, при помощи программы filezilla.

 Далее создаем файл под названием config.ovpn и добавляем в него клиентский конфиг описанный ранее.


 По итогу в папке C:\Program Files\OpenVPN\config должны лежать такие файлы: ca.crt, client1.crt, client1.key, dh.pem, ta.key и config.ovpn.

 Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).
 Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»

Помог ли вам данный ответ?

Связанные статьи

Как подключится к серверу по SFTP/FTP
После активации сервера, вам на почту приходит письмо с данными для доступа к серверу по SSH, эти...
Linux: Свободное/занятое место в системе
Для просмотра свободно/занятого места на вашем сервере, необходимо к нему подключится используя...
Что такое inode и почему из-за него перестает работать сервер.
inode это индексный дескриптор для файлов и каталогов в файловых системах UNIX подобных ОС.Проще...