Как настроить сервер 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.