Поиск по сайту:

Как настроить сервер OpenVPN в Ubuntu 16.04


Введение

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

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

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

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

См. эту страницу для получения дополнительной информации.

Предпосылки

Для выполнения этого руководства вам потребуется доступ к серверу Ubuntu 16.04.

Перед началом работы с этим руководством вам потребуется настроить пользователя без полномочий root с привилегиями sudo. Вы можете следовать нашему руководству по начальной настройке сервера Ubuntu 16.04, чтобы настроить пользователя с соответствующими разрешениями. Связанный учебник также установит брандмауэр, который, как мы предполагаем, установлен в этом руководстве.

Когда вы будете готовы начать, войдите на свой сервер Ubuntu как пользователь sudo и продолжите ниже.

Шаг 1: Установите OpenVPN

Для начала мы установим OpenVPN на наш сервер. OpenVPN доступен в стандартных репозиториях Ubuntu, поэтому мы можем использовать apt для установки. Мы также установим пакет easy-rsa, который поможет нам настроить внутренний ЦС (центр сертификации) для использования с нашей VPN.

Чтобы обновить индекс пакетов вашего сервера и установить необходимые пакеты, введите:

  1. sudo apt-get update
  2. sudo apt-get install openvpn easy-rsa

Необходимое программное обеспечение теперь находится на сервере и готово к настройке.

Шаг 2. Настройте каталог ЦС

OpenVPN — это TLS/SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Чтобы выдавать доверенные сертификаты, нам нужно будет настроить собственный простой центр сертификации (ЦС).

Для начала мы можем скопировать каталог шаблонов easy-rsa в наш домашний каталог с помощью команды make-cadir:

  1. make-cadir ~/openvpn-ca

Перейдите во вновь созданный каталог, чтобы начать настройку ЦС:

  1. cd ~/openvpn-ca

Шаг 3. Настройте переменные ЦС

Чтобы настроить значения, которые будет использовать наш ЦС, нам нужно отредактировать файл vars в каталоге. Откройте этот файл в текстовом редакторе:

  1. nano vars

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

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

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"

. . .

Отредактируйте значения, выделенные красным, на то, что вы предпочитаете, но не оставляйте их пустыми:

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"

. . .

Пока мы здесь, мы также отредактируем значение KEY_NAME чуть ниже этого раздела, которое заполняет поле темы. Для простоты в этом руководстве мы будем называть его server:

export KEY_NAME="server"

Когда вы закончите, сохраните и закройте файл.

Шаг 4: Создайте центр сертификации

Теперь мы можем использовать установленные нами переменные и утилиты easy-rsa для создания нашего центра сертификации.

Убедитесь, что вы находитесь в каталоге ЦС, а затем откройте файл vars, который вы только что отредактировали:

  1. cd ~/openvpn-ca
  2. source vars

Вы должны увидеть следующее, если он был получен правильно:

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Убедитесь, что мы работаем в чистой среде, набрав:

  1. ./clean-all

Теперь мы можем создать наш корневой ЦС, набрав:

  1. ./build-ca

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

Output
Generating a 2048 bit RSA private key ..........................................................................................+++ ...............................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [admin@email.com]:

Теперь у нас есть ЦС, который можно использовать для создания остальных необходимых нам файлов.

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

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

Начните с создания сертификата сервера OpenVPN и пары ключей. Мы можем сделать это, набрав:

Примечание. Если вы выберете здесь имя, отличное от server, вам придется изменить некоторые приведенные ниже инструкции. Например, при копировании сгенерированных файлов в каталог /etc/openvpn вам придется подставить правильные имена. Вам также потребуется позже изменить файл /etc/openvpn/server.conf, чтобы он указывал на правильные файлы .crt и .key.

  1. ./build-key-server server

Опять же, подсказки будут иметь значения по умолчанию, основанные на аргументе, который мы только что передали (server), и содержимом нашего файла vars, который мы получили.

Не стесняйтесь принять значения по умолчанию, нажав ENTER. Не вводите контрольный пароль для этой настройки. Ближе к концу вам нужно будет ввести два вопроса, чтобы подписать и зафиксировать сертификат:

Output
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

Далее мы создадим несколько других элементов. Мы можем сгенерировать надежные ключи Диффи-Хеллмана для использования во время обмена ключами, набрав:

  1. ./build-dh

Это может занять несколько минут.

После этого мы можем сгенерировать подпись HMAC, чтобы усилить возможности проверки целостности TLS сервера:

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

Шаг 6: Создайте сертификат клиента и пару ключей

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

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

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

Чтобы создать учетные данные без пароля, чтобы помочь в автоматических подключениях, используйте команду build-key следующим образом:

  1. cd ~/openvpn-ca
  2. source vars
  3. ./build-key client1

Если вместо этого вы хотите создать защищенный паролем набор учетных данных, используйте команду build-key-pass:

  1. cd ~/openvpn-ca
  2. source vars
  3. ./build-key-pass client1

Опять же, значения по умолчанию должны быть заполнены, поэтому вы можете просто нажать ENTER, чтобы продолжить. Оставьте контрольный пароль пустым и не забудьте ввести y в ответ на вопрос, следует ли подписать и зафиксировать сертификат.

Шаг 7: Настройте службу OpenVPN

Затем мы можем начать настройку службы OpenVPN, используя созданные нами учетные данные и файлы.

Скопируйте файлы в каталог OpenVPN

Для начала нам нужно скопировать нужные нам файлы в каталог конфигурации /etc/openvpn.

Мы можем начать со всех файлов, которые мы только что создали. Они были помещены в каталог ~/openvpn-ca/keys по мере их создания. Нам нужно переместить наш сертификат CA, наш сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:

  1. cd ~/openvpn-ca/keys
  2. sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

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

  1. gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Настройте конфигурацию OpenVPN

Теперь, когда наши файлы на месте, мы можем изменить файл конфигурации сервера:

  1. sudo nano /etc/openvpn/server.conf

Базовая конфигурация

Сначала найдите раздел HMAC, выполнив поиск директивы tls-auth. Удалить \; чтобы раскомментировать строку tls-auth:

tls-auth ta.key 0 # This file is secret

Затем найдите раздел о криптографических шифрах, выполнив поиск закомментированных строк cipher. Шифр AES-128-CBC предлагает хороший уровень шифрования и хорошо поддерживается. Удалить \; чтобы раскомментировать строку cipher AES-128-CBC:

cipher AES-128-CBC

Ниже добавьте строку auth, чтобы выбрать алгоритм дайджеста сообщения HMAC. Для этого SHA256 является хорошим выбором:

auth SHA256

Наконец, найдите настройки user и group и удалите \;” в начале, чтобы раскомментировать эти строки:

user nobody
group nogroup

(Необязательно) Отправка изменений DNS для перенаправления всего трафика через VPN

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

Вы можете сделать это, раскомментировав несколько директив, которые настроят клиентские машины на перенаправление всего веб-трафика через VPN. Найдите раздел 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 в качестве шлюза по умолчанию.

(Необязательно) Настройте порт и протокол

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

# Optional!
port 443

Часто, если протокол также будет ограничен этим портом. Если это так, измените proto с UDP на TCP:

# Optional!
proto tcp

Если вам не нужно использовать другой порт, лучше оставить эти два параметра по умолчанию.

(Необязательно) Укажите учетные данные не по умолчанию

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

cert server.crt
key server.key

Когда вы закончите, сохраните и закройте файл.

Шаг 8: Настройте сетевую конфигурацию сервера

Далее нам нужно настроить некоторые аспекты сети сервера, чтобы OpenVPN мог правильно маршрутизировать трафик.

Разрешить IP-переадресацию

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

Мы можем настроить этот параметр, изменив файл /etc/sysctl.conf:

  1. sudo nano /etc/sysctl.conf

Внутри найдите строку, которая устанавливает net.ipv4.ip_forward. Удалите символ \# в начале строки, чтобы раскомментировать этот параметр:

net.ipv4.ip_forward=1

Сохраните и закройте файл, когда закончите.

Чтобы прочитать файл и настроить значения для текущего сеанса, введите:

  1. sudo sysctl -p

Настройте правила UFW для маскировки клиентских подключений

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

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

  1. ip route | grep default

Ваш общедоступный интерфейс должен следовать за словом \dev. Например, этот результат показывает интерфейс с именем wlp11s0, который выделен ниже:

Output
default via 203.0.113.1 dev wlp11s0 proto static metric 600

Когда у вас есть интерфейс, связанный с вашим маршрутом по умолчанию, откройте файл /etc/ufw/before.rules, чтобы добавить соответствующую конфигурацию:

  1. sudo nano /etc/ufw/before.rules

Этот файл обрабатывает конфигурацию, которая должна быть введена до загрузки обычных правил UFW. В верхней части файла добавьте выделенные ниже строки. Это установит политику по умолчанию для цепочки POSTROUTING в таблице nat и замаскирует любой трафик, исходящий из VPN:

Примечание. Не забудьте заменить wlp11s0 в строке -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 wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Сохраните и закройте файл, когда закончите.

Нам нужно указать UFW, чтобы он также разрешал переадресацию пакетов по умолчанию. Для этого мы откроем файл /etc/default/ufw:

  1. sudo nano /etc/default/ufw

Внутри найдите директиву DEFAULT_FORWARD_POLICY. Мы изменим значение с DROP на ACCEPT:

DEFAULT_FORWARD_POLICY="ACCEPT"

Сохраните и закройте файл, когда закончите.

Откройте порт OpenVPN и включите изменения

Далее мы настроим сам брандмауэр, чтобы разрешить трафик OpenVPN.

Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf, вам нужно будет открыть UDP-трафик на порт 1194. Если вы изменили порт и/или протокол, замените значения, которые вы выбрали здесь.

Мы также добавим порт SSH на случай, если вы забыли добавить его, следуя предварительному руководству:

  1. sudo ufw allow 1194/udp
  2. sudo ufw allow OpenSSH

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

  1. sudo ufw disable
  2. sudo ufw enable

Теперь наш сервер настроен для правильной обработки трафика OpenVPN.

Шаг 9: Запустите и включите службу OpenVPN

Наконец-то мы готовы запустить службу OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.

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

  1. sudo systemctl start openvpn@server

Дважды проверьте, успешно ли запущена служба, набрав:

  1. sudo systemctl status openvpn@server

Если все прошло хорошо, ваш вывод должен выглядеть примерно так:

Output
● 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 May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

Вы также можете проверить, доступен ли интерфейс OpenVPN tun0, набрав:

  1. ip addr show tun0

Вы должны увидеть настроенный интерфейс:

Output
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

Если все прошло успешно, включите службу, чтобы она запускалась автоматически при загрузке:

  1. sudo systemctl enable openvpn@server

Шаг 10: Создайте инфраструктуру конфигурации клиента

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

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

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

  1. mkdir -p ~/client-configs/files

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

  1. chmod 700 ~/client-configs/files

Создание базовой конфигурации

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

  1. cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Откройте этот новый файл в текстовом редакторе:

  1. 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 server_IP_address 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

Отразите настройки cipher и auth, которые мы установили в файле /etc/openvpn/server.conf:

cipher AES-128-CBC
auth SHA256

Затем добавьте директиву key-direction куда-нибудь в файл. Это должно быть установлено в «1» для работы с сервером:

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, вам следует раскомментировать эти строки из сгенерированного файла конфигурации клиента OpenVPN.

Сохраните файл, когда закончите.

Создание сценария генерации конфигурации

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

Создайте и откройте файл с именем make_config.sh в каталоге ~/client-configs:

  1. nano ~/client-configs/make_config.sh

Внутри вставьте следующий скрипт:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/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

Сохраните и закройте файл, когда закончите.

Отметьте файл как исполняемый, набрав:

  1. chmod 700 ~/client-configs/make_config.sh

Шаг 11: Создание конфигураций клиента

Теперь мы можем легко создавать файлы конфигурации клиента.

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

  1. cd ~/client-configs
  2. ./make_config.sh client1

Если все прошло хорошо, у нас должен быть файл client1.ovpn в нашем каталоге ~/client-configs/files:

  1. ls ~/client-configs/files
Output
client1.ovpn

Перенос конфигурации на клиентские устройства

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

Хотя конкретные приложения, используемые для выполнения этой передачи, будут зависеть от вашего выбора и операционной системы устройства, вы хотите, чтобы приложение использовало SFTP (протокол передачи файлов SSH) или SCP (Secure Copy) на серверной части. Это позволит передавать файлы аутентификации VPN вашего клиента по зашифрованному соединению.

Вот пример команды SFTP с использованием нашего примера client1.ovpn. Эту команду можно запустить с вашего локального компьютера (OS X или Linux). Он помещает файл .ovpn в ваш домашний каталог:

  1. sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

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

  • WinSCP
  • Как использовать SFTP для безопасной передачи файлов на удаленный сервер
  • Как использовать Filezilla для безопасной передачи файлов и управления ими на вашем VPS

Шаг 12: Установите конфигурацию клиента

Теперь мы обсудим, как установить клиентский профиль VPN в Windows, OS X, iOS и Android. Ни одна из этих клиентских инструкций не зависит друг от друга, поэтому не стесняйтесь переходить к тому, что применимо к вам.

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

Окна

Установка

Клиентское приложение OpenVPN для Windows можно найти на странице загрузок OpenVPN. Выберите соответствующую версию установщика для вашей версии Windows.

Для установки OpenVPN требуются права администратора.

После установки OpenVPN скопируйте файл .ovpn в:

C:\Program Files\OpenVPN\config

Когда вы запускаете OpenVPN, он автоматически увидит профиль и сделает его доступным.

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

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

Подключение

Каждый раз, когда вы запускаете графический интерфейс OpenVPN, Windows будет спрашивать, хотите ли вы разрешить программе вносить изменения в ваш компьютер. Нажмите Да. Запуск клиентского приложения OpenVPN только помещает апплет на панель задач, чтобы VPN можно было подключать и отключать по мере необходимости; на самом деле он не устанавливает VPN-соединение.

После запуска OpenVPN инициируйте соединение, зайдя в апплет на панели задач и щелкнув правой кнопкой мыши значок апплета OpenVPN. Это открывает контекстное меню. Выберите client1 в верхней части меню (это наш профиль client1.ovpn) и нажмите «Подключиться».

Откроется окно состояния, показывающее выходные данные журнала, пока соединение установлено, и сообщение появится, как только клиент подключится.

Отключитесь от VPN таким же образом: зайдите в апплет на панели задач, щелкните правой кнопкой мыши значок апплета OpenVPN, выберите профиль клиента и нажмите «Отключить».

ОС Х

Установка

Страница загрузок Tunnelblick. Дважды щелкните загруженный файл .dmg и следуйте инструкциям по установке.

Ближе к концу процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Может быть проще ответить «Нет» и позволить Tunnelblick закончить. Откройте окно Finder и дважды щелкните client1.ovpn. Tunnelblick установит профиль клиента. Требуются административные привилегии.

Подключение

Запустите Tunnelblick, дважды щелкнув Tunnelblick в папке «Приложения». После запуска Tunnelblick в строке меню в правом верхнем углу экрана появится значок Tunnelblick для управления соединениями. Щелкните значок, а затем пункт меню «Подключиться», чтобы инициировать VPN-подключение. Выберите подключение client1.

линукс

Установка

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

Однако наиболее универсальный способ подключения — просто использовать программное обеспечение OpenVPN.

В Ubuntu или Debian вы можете установить его так же, как и на сервере, набрав:

  1. sudo apt-get update
  2. sudo apt-get install openvpn

В CentOS вы можете включить репозитории EPEL, а затем установить их, набрав:

  1. sudo yum install epel-release
  2. sudo yum install openvpn

Настройка

Проверьте, включает ли ваш дистрибутив скрипт /etc/openvpn/update-resolv-conf:

  1. ls /etc/openvpn
Output
update-resolve-conf

Затем отредактируйте переданный файл конфигурации клиента OpenVPN:

  1. nano client1.ovpn

Раскомментируйте три строки, которые мы вставили, чтобы изменить настройки DNS, если вам удалось найти файл update-resolv-conf:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Если вы используете CentOS, измените group с nogroup на nobody, чтобы соответствовать доступным группам дистрибутива:

group nobody

Сохраните и закройте файл.

Теперь вы можете подключиться к VPN, просто указав команду openvpn в файле конфигурации клиента:

  1. sudo openvpn --config client1.ovpn

Это должно соединить вас с вашим сервером.

iOS

Установка

В iTunes App Store найдите и установите OpenVPN Connect, официальное клиентское приложение OpenVPN для iOS. Чтобы перенести конфигурацию клиента iOS на устройство, подключите его напрямую к компьютеру.

Завершение передачи с помощью iTunes будет описано здесь. Откройте iTunes на компьютере и нажмите «iPhone» > «Приложения». Прокрутите вниз до раздела «Общий доступ к файлам» и щелкните приложение OpenVPN. Пустое окно справа OpenVPN Documents предназначено для обмена файлами. Перетащите файл .ovpn в окно OpenVPN Documents.

Теперь запустите приложение OpenVPN на iPhone. Появится уведомление о том, что новый профиль готов к импорту. Коснитесь зеленого знака «плюс», чтобы импортировать его.

Подключение

Теперь OpenVPN готов к использованию с новым профилем. Запустите подключение, переместив кнопку «Подключить» в положение «Вкл.». Отключите, сдвинув ту же кнопку в положение Off.

Переключатель VPN в разделе «Настройки» нельзя использовать для подключения к VPN. Если вы попытаетесь, вы получите уведомление о подключении только с помощью приложения OpenVPN.

Андроид

Установка

Откройте магазин Google Play. Найдите и установите Android OpenVPN Connect, официальное клиентское приложение Android OpenVPN.

Профиль .ovpn можно перенести, подключив устройство Android к компьютеру через USB и скопировав файл. В качестве альтернативы, если у вас есть устройство чтения SD-карт, вы можете извлечь SD-карту устройства, скопировать на нее профиль, а затем вставить карту обратно в устройство Android.

Запустите приложение OpenVPN и коснитесь меню, чтобы импортировать профиль.

Затем перейдите к местоположению сохраненного профиля (на снимке экрана используется /sdcard/Download/) и выберите файл. Приложение отметит, что профиль был импортирован.

Подключение

Чтобы подключиться, просто нажмите кнопку «Подключиться». Вас спросят, доверяете ли вы приложению OpenVPN. Выберите OK, чтобы инициировать подключение. Чтобы отключиться от VPN, вернитесь в приложение OpenVPN и выберите «Отключиться».

Шаг 13. Проверьте свое VPN-подключение

После того, как все установлено, простая проверка подтверждает, что все работает правильно. Не включив VPN-подключение, откройте браузер и перейдите к DNSLeakTest.

Сайт вернет IP-адрес, назначенный вашим интернет-провайдером, и то, как вы выглядите для остального мира. Чтобы проверить настройки DNS через тот же веб-сайт, нажмите «Расширенный тест», и он сообщит вам, какие DNS-серверы вы используете.

Теперь подключите клиент OpenVPN к VPN вашей капли и обновите браузер. Теперь должен появиться совершенно другой IP-адрес вашего VPN-сервера. Именно так вы предстаете перед миром. Опять же, расширенный тест DNSLeakTest проверит ваши настройки DNS и подтвердит, что вы теперь используете резолверы DNS, навязанные вашей VPN.

Шаг 14. Отзыв клиентских сертификатов

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

Для этого войдите в каталог CA и перезагрузите файл vars:

  1. cd ~/openvpn-ca
  2. source vars

Затем вызовите команду revoke-full, используя имя клиента, которого вы хотите отозвать:

  1. ./revoke-full client3

Это покажет некоторые выходные данные, заканчивающиеся ошибкой 23. Это нормально, и процесс должен был успешно сгенерировать необходимую информацию об отзыве, которая хранится в файле с именем crl.pem в подкаталоге keys.

Перенесите этот файл в каталог конфигурации /etc/openvpn:

  1. sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

Затем откройте файл конфигурации сервера OpenVPN:

  1. sudo nano /etc/openvpn/server.conf

Внизу файла добавьте параметр crl-verify, чтобы сервер OpenVPN проверял созданный нами список отзыва сертификатов при каждой попытке подключения:

crl-verify crl.pem

Сохраните и закройте файл.

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

  1. sudo systemctl restart openvpn@server

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

Чтобы отозвать дополнительных клиентов, выполните следующие действия:

  1. Создайте новый список отзыва сертификатов, найдя файл vars в каталоге ~/openvpn-ca и вызвав revoke-full. сценарий имени клиента.
  2. Скопируйте новый список отзыва сертификатов в каталог /etc/openvpn, чтобы перезаписать старый список.
  3. Перезапустите службу OpenVPN.

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

Заключение

Поздравляем! Теперь вы безопасно путешествуете по Интернету, защищая свою личность, местоположение и трафик от шпионов и цензоров.

Чтобы настроить больше клиентов, вам нужно всего лишь выполнить шаги 6 и 11-13 для каждого дополнительного устройства. Чтобы отозвать доступ к клиентам, выполните шаг 14.