Как настроить сервер OpenVPN в Debian 9

OpenVPN - это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом, которое поддерживает широкий спектр конфигураций. В этом руководстве вы настроите сервер OpenVPN на сервере Debian 9, а затем настроите доступ к нему из Windows, macOS, iOS и / или Android. В этом руководстве все этапы установки и настройки будут максимально простыми для каждой из этих установок.

Чтобы завершить этот урок, вам понадобится доступ к серверу Debian 9 для размещения вашей службы OpenVPN. Вам нужно будет настроить не- корневую пользователя с sudo привилегиями , прежде чем начать это руководство. Вы можете следовать нашему руководству по первоначальной настройке сервера Debian 9, чтобы настроить пользователя с соответствующими разрешениями. В связанном руководстве также будет настроен межсетевой экран , который предполагается использовать в этом руководстве.

Шаг 1 - Установка OpenVPN и EasyRSA

Для начала обновите индекс пакетов вашего VPN-сервера и установите OpenVPN. OpenVPN доступен в репозиториях Debian по умолчанию, поэтому вы можете использовать его aptдля установки:

  •   sudo apt update
     sudo apt install openvpn 

OpenVPN - это TLS / SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Для выдачи доверенных сертификатов вы создадите свой собственный простой центр сертификации (CA). Для этого мы загрузим последнюю версию EasyRSA, которую мы будем использовать для построения нашей инфраструктуры открытых ключей CA (PKI), из официального репозитория проекта GitHub.

Как упоминалось в предварительных условиях, мы будем строить ЦС на отдельном сервере. Причина такого подхода заключается в том, что если злоумышленник сможет проникнуть на ваш сервер, он сможет получить доступ к вашему секретному ключу CA и использовать его для подписи новых сертификатов, предоставляя им доступ к вашей VPN. Соответственно, управление ЦС с автономного компьютера помогает предотвратить доступ неавторизованных пользователей к вашей VPN. Также обратите внимание, что рекомендуется держать CA-сервер выключенным, когда он не используется для подписи ключей, в качестве дополнительной меры предосторожности.

Чтобы приступить к созданию инфраструктуры CA и PKI, wget загрузите последнюю версию EasyRSA как на своем компьютере CA, так и на сервере OpenVPN . Чтобы получить последнюю версию, перейдите на страницу « Релизы» официального проекта EasyRSA GitHub , скопируйте ссылку на скачивание для файла, оканчивающегося на .tgz, и вставьте его в следующую команду:

  • wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
     Чтобы перейти к настройке Drupal в браузере,
     Затем распакуйте архив:
     cd ~
     tar xvf EasyRSA-3.0.4.tgz 

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

Шаг 2 - Конфигурирование переменных EasyRSA и построение CA

EasyRSA поставляется с файлом конфигурации, который вы можете редактировать, чтобы определить ряд переменных для вашего CA.

  •  На вашем компьютере CA перейдите в каталог EasyRSA:
     cd ~/EasyRSA-3.0.4/
     Внутри этого каталога находится файл с именем vars.example.
     Сделайте копию этого файла и назовите копию varsбез расширения файла:
     cp vars.example vars
     Откройте этот новый файл с помощью предпочитаемого вами текстового редактора: 
     nano vars
     Найдите настройки, которые устанавливают значения по
     умолчанию для новых сертификатов. Это будет выглядеть примерно так: 
     . . .
    
     #set_var EASYRSA_REQ_COUNTRY    "RU"
     #set_var EASYRSA_REQ_PROVINCE   "Moskow"
     #set_var EASYRSA_REQ_CITY       "Moskow"
     #set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"
     #set_var EASYRSA_REQ_EMAIL      "me@example.net"
     #set_var EASYRSA_REQ_OU         "My Organizational Unit"
    
     . . .
     Раскомментируйте эти строки и обновите
     выделенные значения так, как вам удобно, но не оставляйте их пустыми: 
     . . .
    
     set_var EASYRSA_REQ_COUNTRY    "RU"
     set_var EASYRSA_REQ_PROVINCE   "Moskow"
     set_var EASYRSA_REQ_CITY       "Moskow"
     set_var EASYRSA_REQ_ORG        "Digitbox"
     set_var EASYRSA_REQ_EMAIL      "admin@example.com"
     set_var EASYRSA_REQ_OU         "Community"
    
    . . .
     В каталоге EasyRSA находится скрипт, easyrsa который вызывается
     для выполнения различных задач, связанных с созданием и управлением ЦС. Запустите
     этот сценарий с init-pki возможностью запуска
     инфраструктуры открытого ключа на сервере CA: 
     ./easyrsa init-pki
     Output
     . . .
     init-pki complete; you may now create a CA or requests.
     Your newly created PKI dir is: /home/myname/EasyRSA-3.0.4/pki  

После этого easyrsa снова вызовите скрипт, следуя за ним с build-ca опцией. Это создаст ЦС и создаст два важных файла - ca.crt и ca.key- которые составляют открытую и закрытую стороны сертификата SSL.

  • ca.crt это файл открытого сертификата CA, который в контексте OpenVPN сервер и клиент используют для информирования друг друга о том, что они являются частью одной и той же сети доверия, а не того, кто выполняет атаку «человек посередине». По этой причине вашему серверу и всем вашим клиентам потребуется копия ca.crt файла.
  • ca.key это закрытый ключ, который машина CA использует для подписи ключей и сертификатов для серверов и клиентов. Если злоумышленник получит доступ к вашему ЦС и, в свою очередь, к вашему ca.key файлу, он сможет подписывать запросы на сертификаты и получать доступ к вашему VPN, нарушая его безопасность. Вот почему ваш ca.key файл должен быть только на вашем компьютере CA, и в идеале ваш компьютер CA должен оставаться в автономном режиме, если не подписывает запросы на сертификат в качестве дополнительной меры безопасности.

Если вы не хотите, чтобы при каждом взаимодействии с вашим ЦС запрашивался пароль, вы можете запустить build-ca команду с nopass параметром, например так:

  •   ./easyrsa build-ca nopass
     В выводе вам будет предложено подтвердить общее имя для вашего CA: 
     . . .
     Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
      

Общее имя - это имя, используемое для ссылки на этот компьютер в контексте центра сертификации. Вы можете ввести любую строку символов для общего имени ЦС, но для простоты нажмите, ENTER чтобы принять имя по умолчанию.

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

Шаг 3 - Создание сертификата сервера, ключа и файлов шифрования

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

  •  cd EasyRSA-3.0.4/
     Оттуда запустите easyrsa скрипт с init-pki опцией.
     Хотя вы уже выполнили эту команду на компьютере CA, необходимо выполнить ее
     здесь, потому что ваш сервер и CA будут иметь отдельные каталоги PKI: 
     ./easyrsa init-pki  

Затем easyrsa снова вызовите сценарий, на этот раз с gen-req параметром, за которым следует общее имя для машины. Опять же, это может быть что угодно, но может быть полезно сделать что-то описательное. В этом руководстве общее имя сервера OpenVPN будет просто «сервер». Не забудьте также включить эту nopass опцию. Несоблюдение этого требования защитит файл запроса паролем, что впоследствии может привести к проблемам с разрешениями:

  •  ./easyrsa gen-req server nopass
     Это создаст закрытый ключ для сервера и файл запроса
     сертификата с именем server.req. Скопируйте ключ сервера в /etc/openvpn/каталог: 
     sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/
     Используя безопасный метод (например, SCP, в
     нашем примере ниже), перенесите server.reqфайл на компьютер CA. 
     scp ~/EasyRSA-3.0.4/pki/reqs/server.req myname@your_CA_ip:/tmp
     Затем на вашем компьютере CA перейдите в каталог EasyRSA: 
     cd EasyRSA-3.0.4/
     Используя easyrsaскрипт снова, импортируйте
     server.req файл, следуя пути к файлу с его общим именем: 
     ./easyrsa import-req /tmp/server.req server
     Затем подпишите запрос, запустив easyrsa сценарий
     с sign-req параметром, затем тип запроса и общее имя. Тип запроса может быть
     client либо server, либо , поэтому для запроса сертификата сервера
     OpenVPN обязательно используйте server тип запроса: 
     ./easyrsa sign-req server server
     В выводе вам будет предложено проверить,
     что запрос поступил из надежного источника. В
     ведите и yes нажмите, ENTER чтобы подтвердить это: 
     You are about to sign the following certificate.
     Please check over the details shown below for accuracy. Note that this request
     has not been cryptographically verified. Please be sure it came from a trusted
     source or that you have verified the request checksum with the sender.
    
     Request subject, to be signed as a server certificate for 3650 days:
    
     subject=
        commonName                = server
    
    
     Type the word 'yes' to continue, or any other input to abort.
     Confirm request details: yes
     Если вы зашифровали свой CA-ключ, вам будет
     предложено ввести пароль на этом этапе.
     Затем перенесите подписанный сертификат обратно на VPN-сервер безопасным способом: 
     scp pki/issued/server.crt myname@your_server_ip:/tmp
     Перед выходом из системы CA также перенесите ca.crtфайл на сервер: 
     scp pki/ca.crt myname@your_server_ip:/tmp
     Затем войдите в свой OpenVPN сервер и
     скопировать server.crt и ca.crt файлы в /etc/openvpn/каталоге: 
     sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
     Затем перейдите в каталог EasyRSA: 
     cd EasyRSA-3.0.4/
     Оттуда создайте сильный ключ Диффи-Хеллмана
     для использования во время обмена ключами, набрав: 
     ./easyrsa gen-dh
     Это может занять несколько минут. Как только это произойдет,
     сгенерируйте подпись HMAC, чтобы усилить
     возможности проверки целостности TLS на сервере: 
     sudo openvpn --genkey --secret ta.key
     Когда команда завершится, скопируйте два новых файла в свой /etc/openvpn/каталог: 
     sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
     sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/  

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

Шаг 4 - Генерация клиентского сертификата и пары ключей

Хотя вы можете сгенерировать закрытый ключ и запрос сертификата на своем клиентском компьютере, а затем отправить его в ЦС для подписи, в этом руководстве описан процесс создания запроса сертификата на сервере. Преимущество этого заключается в том, что мы можем создать сценарий, который будет автоматически генерировать файлы конфигурации клиента, которые содержат все необходимые ключи и сертификаты. Это позволяет избежать необходимости передавать ключи, сертификаты и файлы конфигурации клиентам и упрощает процесс присоединения к VPN.

Для этого руководства мы создадим один ключ клиента и пару сертификатов. Если у вас более одного клиента, вы можете повторить этот процесс для каждого. Обратите внимание, однако, что вам нужно будет передать уникальное значение имени в сценарий для каждого клиента. В этом руководстве первая пара сертификат / ключ упоминается как client1.

Начните с создания структуры каталогов в вашем домашнем каталоге для хранения сертификата клиента и файлов ключей:

  •  
     mkdir -p ~/client-configs/keys
     Поскольку вы будете хранить пары сертификатов /
     ключей ваших клиентов и файлы конфигурации в этом каталоге, вы должны
     заблокировать его разрешения сейчас в качестве меры безопасности:
     chmod -R 700 ~/client-configs
     Затем перейдите обратно в каталог EasyRSA и
     запустить easyrs a скрипт с gen-req и nopassо пциями,
     а также с общим названием для клиента:
     cd ~/EasyRSA-3.0.4/
    ./easyrsa gen-req client1 nopass
     Нажмите, ENTER чтобы подтвердить общее имя.
     Затем скопируйте client1.key файл в /client-configs/keys/каталог,
     который вы создали ранее: 
     cp pki/private/client1.key ~/client-configs/keys/
     Затем перенесите client1.req файл на компьютер CA,
     используя безопасный метод: 
     scp pki/reqs/client1.req myname@your_CA_ip:/tmp
     Войдите на свой компьютер CA, перейдите в каталог
     EasyRSA и импортируйте запрос сертификата: 
     ssh myname@your_CA_IP
     cd EasyRSA-3.0.4/
     ./easyrsa import-req /tmp/client1.req client1
     Затем подпишите запрос, как вы сделали для сервера
     в предыдущем шаге. На этот раз, однако, обязательно укажите client тип запроса:
     ./easyrsa sign-req client client1
     В yes ответ на приглашение введите, чтобы подтвердить,
     что вы намерены подписать запрос сертификата и
     что он поступил из надежного источника: 
     Type the word 'yes' to continue, or any other input to abort.
      Confirm request details: yes
     Это создаст файл сертификата клиента с именем client1.crt.
     Передайте этот файл обратно на сервер: 
     scp pki/issued/client1.crt myname@your_server_ip:/tmp
     Вернитесь по SSH на ваш сервер OpenVPN и скопируйте
     сертификат клиента в /client-configs/keys/каталог: 
     cp /tmp/client1.crt ~/client-configs/keys/
     Затем скопируйте ca.crt и ta.key файлы в /client-configs/keys/каталоге , а также: 
     sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
     sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/  

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

Шаг 5 - Настройка службы OpenVPN

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

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

  •  
     sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
     /etc/openvpn/
     sudo gzip -d /etc/openvpn/server.conf.gz
     Откройте файл конфигурации сервера в
     предпочитаемом вами текстовом редакторе: 
     sudo nano /etc/openvpn/server.conf
     Найдите раздел HMAC, ища tls-auth директиву.
     Эта строка уже должна быть раскомментирована, но если нет, удалите « ; »,
     чтобы раскомментировать ее. Ниже этой строки добавьте key-direction
     параметр, установив значение «0»: 
     tls-auth ta.key 0 # This file is secret
     key-direction 0
     Затем найдите раздел о криптографических шифрах,
     отыскивая закомментированные cipher строки. AES-256-CBCШифра предлагает
     хороший уровень шифрования и хорошо поддерживается. Опять же, эта строка уже
     должна быть закомментирована, но если это не так,
     просто удалите « ; », предшествующий ей: 
     cipher AES-256-CBC
     Ниже этого добавьте auth директиву, чтобы выбрать
     алгоритм дайджеста сообщения HMAC. Для этого SHA256хороший выбор:
     auth SHA256
     Затем найдите строку, содержащую dh директиву,
     которая определяет параметры Диффи-Хеллмана. Из-за некоторых недавних
     изменений, внесенных в EasyRSA, имя файла для ключа Диффи-Хеллмана может
     отличаться от того, которое указано в примере файла конфигурации сервера.
     При необходимости измените указанное здесь имя файла, удалив его 2048так, чтобы
     оно совпадало с ключом, сгенерированным на предыдущем шаге:
     dh dh.pem
     И, наконец, найти userи groupнастройки и удалить
     « ; » в начале каждого раскомментировать эти строки:
     user nobody
     group nogroup
     Изменения, которые вы внесли в server.conf файл примера
     до этого момента, необходимы для функционирования OpenVPN. Изменения, описанные
     ниже, являются необязательными, хотя они также необходимы для
     многих общих случаев использования.
     В server.conf файле есть несколько директив, которые вы должны
     изменить, чтобы включить эту функцию.
     Найдите redirect-gateway раздел и удалите точку с запятой " ; " в начале
     redirect-gateway строки, чтобы раскомментировать ее:
     push "redirect-gateway def1 bypass-dhcp"
     Чуть ниже найдите dhcp-option раздел.
     Снова удалите " ; " перед обеими строками, чтобы раскомментировать их:
     push "dhcp-option DNS 208.67.222.222"
     push "dhcp-option DNS 208.67.220.220"
     Это поможет клиентам перенастроить свои настройки
     DNS для использования VPN-туннеля в качестве шлюза по умолчанию.  

Укажите учетные данные не по умолчанию

Если вы выбрали другое имя во время ./build-key-server командой ранее, изменения cert и key линии , которые вы видите , чтобы указать на соответствующий .crtи .key файлы. Если вы использовали имя по умолчанию, «сервер», это уже правильно установлено:

  •   cert server.crt
     key server.key 

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

Шаг 6 - Настройка сетевой конфигурации сервера

Есть некоторые аспекты сетевой конфигурации сервера, которые необходимо настроить, чтобы OpenVPN мог правильно маршрутизировать трафик через VPN. Первым из них является IP-пересылка , метод определения, куда должен направляться IP-трафик. Это важно для функциональности VPN, которую предоставляет ваш сервер.

  •  Отрегулируйте настройки IP-адреса
     вашего сервера по умолчанию, изменив /etc/sysctl.conf файл:
     sudo nano /etc/sysctl.conf
     Внутри ищите закомментированную строку, которая устанавливает
     net.ipv4.ip_forward. Удалите символ « # » в начале строки,
     чтобы раскомментировать этот параметр:
     net.ipv4.ip_forward=1
     Чтобы прочитать файл и настроить значения для текущего сеанса, введите:
     sudo sysctl -p
     net.ipv4.ip_forward = 1  

Если вы следовали руководству по первоначальной настройке сервера Debian 9, указанному в предварительных требованиях, у вас должен быть установлен брандмауэр UFW. Независимо от того, используете ли вы брандмауэр для блокировки нежелательного трафика (что вы почти всегда должны делать), для этого руководства вам нужен брандмауэр для манипулирования частью трафика, поступающего на сервер. Некоторые правила брандмауэра должны быть изменены, чтобы включить маскировку - концепцию iptables, которая обеспечивает динамическую трансляцию сетевых адресов (NAT) на лету для правильной маршрутизации клиентских подключений.

Прежде чем открыть файл конфигурации брандмауэра для добавления правил маскировки, вы должны сначала найти общедоступный сетевой интерфейс вашего компьютера. Для этого введите:

  •  
     ip route | grep default
     Ваш публичный интерфейс - это строка, найденная в
     выходных данных этой команды, которая следует за словом «dev». Например,
     этот результат показывает интерфейс с именем eth0, который выделен ниже:
     default via 203.0.113.1 dev eth0 onlink
     Когда у вас есть интерфейс, связанный с вашим маршрутом по
     умолчанию, откройте /etc/ufw/before.rules файл,
     чтобы добавить соответствующую конфигурацию: 
     sudo nano /etc/ufw/before.rules
     Правила UFW обычно добавляются с помощью ufw команды.
     Правила, перечисленные в before.rules файле, тем не менее, читаются и вводятся
     в действие перед загрузкой обычных правил UFW. В верхней части файла добавьте
     выделенные строки ниже. Это установит политику по умолчанию для POSTROUTING
     цепочки в nat таблице и маскирует любой трафик, поступающий из VPN. Не забудьте
     заменить eth0в -A POSTROUTING строке ниже интерфейс, который вы
     нашли в приведенной выше команде:
     #
     # rules.before
     #
     # Rules that should be run before the ufw command line added rules. Custom
     # rules should be added to one of these chains:
     #   ufw-before-input
     #   ufw-before-output
     #   ufw-before-forward
     #
    
     # START OPENVPN RULES
     # NAT table rules
     *nat
     :POSTROUTING ACCEPT [0:0]
     # Allow traffic from OpenVPN client to eth0 (change
     to the interface you discovered!)
     -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
     COMMIT
     # END OPENVPN RULES
    
     # Don't delete these required lines, otherwise there will be errors
     *filter
     Далее вам нужно указать UFW, что по умолчанию также
     разрешено переадресовывать пакеты. Для этого откройте /etc/default/ufw файл:
     sudo nano /etc/default/ufw
     Внутри найдите DEFAULT_FORWARD_POLICY директиву
     и измените значение с DROPна ACCEPT:
     DEFAULT_FORWARD_POLICY="ACCEPT"
     Затем настройте сам брандмауэр, чтобы разрешить трафик
     в OpenVPN. Если вы не изменили порт и протокол в /etc/openvpn/server.conf файле,
     вам нужно будет открыть UDP-трафик к порту 1194. Если вы изменили порт и / или протокол,
     подставьте значения, которые вы выбрали здесь.
     Если вы забыли добавить порт SSH при выполнении
     обязательного руководства, добавьте его и здесь:
     sudo ufw allow 1194/udp
     sudo ufw allow OpenSSH
     После добавления этих правил отключите и снова включите UFW,
     чтобы перезапустить его и загрузить изменения из всех файлов, которые вы изменили: 
     sudo ufw disable
     sudo ufw enable
     Ваш сервер теперь настроен для правильной обработки трафика OpenVPN.
     

Шаг 7 - Запуск и включение службы OpenVPN

Вы наконец готовы запустить сервис OpenVPN на вашем сервере. Это делается с помощью утилиты systemd systemctl.

Запустите сервер OpenVPN, указав имя файла конфигурации в качестве переменной экземпляра после имени файла системного модуля. Файл конфигурации для вашего сервера называется , поэтому добавьте в конец файла вашего модуля при вызове его:/etc/openvpn/server.conf@server

  •  
     sudo systemctl start openvpn@server
     Дважды проверьте, что служба успешно запущена, набрав:
     sudo systemctl status openvpn@server
     Если все прошло хорошо, ваш вывод будет выглядеть примерно так: 
     openvpn@server.service - OpenVPN connection to server
     Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
       Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
         Docs: man:openvpn(8)
               https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
               https://community.openvpn.net/openvpn/wiki/HOWTO
     Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status
     10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf
     --writepid /run/openvpn/%i.pid (code=exited, sta
     Main PID: 5856 (openvpn)
        Tasks: 1 (limit: 512)
       CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
         └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status
     10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf
     --writepid /run/openvpn/server.pid
     Вы также можете проверить tun0доступность интерфейса OpenVPN , набрав:
     ip addr show tun0
     Это выведет настроенный интерфейс:
     4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue
     state UNKNOWN group default qlen 100
        link/none
        inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
           valid_lft forever preferred_lft forever
     После запуска службы включите его, чтобы он автоматически запускался при загрузке:
     sudo systemctl enable openvpn@server  

Ваша служба OpenVPN запущена и работает. Прежде чем вы сможете начать использовать его, вы должны сначала создать файл конфигурации для клиентского компьютера. В этом руководстве уже рассказывалось, как создавать пары сертификатов / ключей для клиентов, и на следующем шаге мы покажем, как создать инфраструктуру, которая будет легко генерировать файлы конфигурации клиента.

Шаг 8 - Создание инфраструктуры конфигурации клиента

Создание файлов конфигурации для клиентов OpenVPN может быть несколько сложным, так как каждый клиент должен иметь свою собственную конфигурацию, и каждый должен соответствовать настройкам, указанным в файле конфигурации сервера. Вместо написания одного файла конфигурации, который можно использовать только на одном клиенте, этот шаг описывает процесс создания инфраструктуры конфигурации клиента, которую можно использовать для создания файлов конфигурации на лету. Сначала вы создадите «базовый» файл конфигурации, а затем создадите скрипт, который позволит вам генерировать уникальные файлы конфигурации клиента, сертификаты и ключи по мере необходимости.

  •  Начните с создания нового каталога,
     в котором вы будете хранить файлы конфигурации клиента в client-configs
     каталоге, который вы создали ранее:
     mkdir -p ~/client-configs/files
     Затем скопируйте пример файла конфигурации клиента
     в client-configs каталог для использования в качестве базовой конфигурации:
     cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf
     ~/client-configs/base.conf
     Откройте этот новый файл в вашем текстовом редакторе: 
     nano ~/client-configs/base.conf
     Внутри найдите remote директиву. Это указывает
     клиенту на адрес вашего сервера OpenVPN - публичный IP-адрес вашего сервера
     OpenVPN. Если вы решили изменить порт, который прослушивает сервер OpenVPN,
     вам также нужно будет изменить 1194 выбранный вами порт:
     # The hostname/IP and port of the server.
     # You can have multiple remote entries
     # to load balance between the servers.
     remote your_server_ip 1194
     Убедитесь, что протокол соответствует значению,
     которое вы используете в конфигурации сервера: 
     proto udp
     Далее, раскомментируйте userи groupдирективы, удалив « ; » в начале каждой строки: 
     # Downgrade privileges after initialization (non-Windows only)
     user nobody
     group nogroup
     Найти директивы , которые устанавливают ca, certи key.
     Закомментируйте эти директивы, поскольку вскоре вы
     добавите сертификаты и ключи в сам файл: 
     # SSL/TLS parms.
     # See the server config file for more
     # description.  It's best to use
      a separate .crt/.key file pair
     # for each client.  A single ca
     # file can be used for all clients.
     #ca ca.crt
     #cert client.crt
     #key client.key
     Аналогичным образом закомментируйте tls-auth директиву,
     так как вы добавите ее ta.key непосредственно в файл конфигурации клиента: 
     # If a tls-auth key is used on the server
     # then every client must also have the key.
     #tls-auth ta.key 1
     Отразите настройки cipher и auth настройки,
     которые вы установили в /etc/openvpn/server.conf файле: 
     cipher AES-256-CBC
     auth SHA256
     Затем добавьте key-direction директиву где-нибудь в
     файле. Вы должны установить это в «1» для VPN для
     правильной работы на клиентском компьютере: 
     key-direction 1
     Наконец, добавьте несколько закомментированных строк.
     Хотя вы можете включить эти директивы в каждый файл конфигурации клиента,
     вам нужно включить их только для клиентов Linux, которые поставляются с
     /etc/openvpn/update-resolv-conf файлом. Этот скрипт использует resolvconf
     утилиту для обновления информации DNS для клиентов Linux. 
     # script-security 2
     # up /etc/openvpn/update-resolv-conf
     # down /etc/openvpn/update-resolv-conf
      Если ваш клиент работает под управлением Linux и имеет
     /etc/openvpn/update-resolv-confфайл, раскомментируйте эти строки из файла
     конфигурации клиента после его создания.  

Затем создайте простой сценарий, который скомпилирует базовую конфигурацию с соответствующими файлами сертификатов, ключей и шифрования, а затем поместит сгенерированную конфигурацию в ~/client-configs/files каталог. Откройте новый файл с именем make_config.shв ~/client-configs каталоге:

  •  
     nano ~/client-configs/make_config.sh
     Внутри добавьте следующий контент, убедившись,
     что вы изменили его myname на учетную запись
     пользователя без полномочий root на вашем сервере :
     KEY_DIR=/home/myname/client-configs/keys
    OUTPUT_DIR=/home/myname/client-configs/files
    BASE_CONFIG=/home/myname/client-configs/base.conf
    
     cat ${BASE_CONFIG} \
        <(echo -e '<ca>') \
        ${KEY_DIR}/ca.crt \
        <(echo -e '</ca>\n<cert>') \
        ${KEY_DIR}/${1}.crt \
        <(echo -e '</cert>\n<key>') \
        ${KEY_DIR}/${1}.key \
        <(echo -e '</key>\n<tls-auth>') \
        ${KEY_DIR}/ta.key \
        <(echo -e '</tls-auth>') \
        > ${OUTPUT_DIR}/${1}.ovpn
     Прежде чем двигаться дальше,
     обязательно пометьте этот файл как исполняемый, набрав: 
     chmod 700 ~/client-configs/make_config.sh  

Этот сценарий создаст копию созданного base.conf вами файла, соберет все файлы сертификатов и ключей, которые вы создали для своего клиента, извлечет их содержимое, добавит их в копию файла базовой конфигурации и экспортирует все это содержимое в файл. новый файл конфигурации клиента. Это означает, что вместо того, чтобы управлять клиентскими файлами конфигурации, сертификатами и ключами по отдельности, вся необходимая информация хранится в одном месте. Преимущество этого заключается в том, что если вам когда-нибудь понадобится добавить клиента в будущем, вы можете просто запустить этот сценарий, чтобы быстро создать файл конфигурации и убедиться, что вся важная информация хранится в одном, легкодоступном месте.

Шаг 9 - Генерация клиентских конфигураций

Если вы следовали этому руководству, вы создали клиентский сертификат и ключ с именем client1.crt и client1.key, соответственно, на шаге 4. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в ~/client-configs каталог и запустив скрипт, который вы сделали в конце предыдущего шаг:

  •  
     cd ~/client-configs
     sudo ./make_config.sh client1
     Это создаст файл с именем client1.ovpnв вашем ~/client-configs/files каталоге: 
     ls ~/client-configs/files
     client1.ovpn 

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

Заключение

Теперь вы безопасно пересекаете Интернет, защищая свою личность, местоположение и трафик от злоумышленников и цензоров. Если на этом этапе вам больше не нужно выдавать сертификаты, рекомендуется выключить компьютер CA или иным образом отключить его от Интернета, пока вам не понадобится добавить или отозвать сертификаты. Это поможет предотвратить доступ злоумышленников к вашему VPN.

Хостинг провайдер © Digitbox