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

Вступление

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

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

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

[.Примечание]##

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

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

Предпосылки

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

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

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

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

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

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

sudo apt-get update
sudo apt-get install openvpn easy-rsa

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

Шаг 2. Настройка CA Directory

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

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

make-cadir ~/openvpn-ca

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

cd ~/openvpn-ca

Шаг 3: Настройте переменные CA

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

nano vars

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

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

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

. . .

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

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="[email protected]"
export KEY_OU="Community"

. . .

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

~/openvpn-ca/vars

export KEY_NAME="server"

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

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

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

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

cd ~/openvpn-ca
source vars

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

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

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

./clean-all

Теперь мы можем построить наш корневой CA, набрав:

./build-ca

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

OutputGenerating 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 [[email protected]]:

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

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

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

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

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

./build-key-server server

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

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

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

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

./build-dh

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo nano /etc/openvpn/server.conf

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

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

/etc/openvpn/server.conf

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

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

/etc/openvpn/server.conf

cipher AES-128-CBC

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

/etc/openvpn/server.conf

auth SHA256

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

/etc/openvpn/server.conf

user nobody
group nogroup

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

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

Вы можете сделать это, раскомментировав несколько директив, которые будут настраивать клиентские машины для перенаправления всего веб-трафика через VPN. Найдите разделredirect-gateway и удалите точку с запятой «;» в начале строкиredirect-gateway, чтобы раскомментировать его:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Чуть ниже найдите разделdhcp-option. Снова удалите «;» перед обеими строками, чтобы раскомментировать их:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Это должно помочь клиентам перенастроить свои настройки DNS для использования VPN-туннеля в качестве шлюза по умолчанию.

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

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

/etc/openvpn/server.conf

# Optional!
port 443

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

/etc/openvpn/server.conf

# Optional!
proto tcp

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

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

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

/etc/openvpn/server.conf

cert server.crt
key server.key

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

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

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

Разрешить IP-пересылку

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

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

sudo nano /etc/sysctl.conf

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

/etc/sysctl.conf

net.ipv4.ip_forward=1

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

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

sudo sysctl -p

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

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

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

ip route | grep default

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

Outputdefault via 203.0.113.1 dev wlp11s0  proto static  metric 600

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

sudo nano /etc/ufw/before.rules

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

[.note] #Note: Не забудьте заменитьwlp11s0 в строке-A POSTROUTING ниже на интерфейс, который вы нашли в приведенной выше команде.
#

/etc/ufw/before.rules

#
# 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:

sudo nano /etc/default/ufw

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

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

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

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

Далее, мы настроим сам брандмауэр, чтобы пропускать трафик к 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.

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

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

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

sudo systemctl start openvpn@server

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

sudo systemctl status openvpn@server

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

Output● [email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; 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/[email protected]
           └─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

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

ip addr show tun0

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

Output4: tun0:  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

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

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

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

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

mkdir -p ~/client-configs/files

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

chmod 700 ~/client-configs/files

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

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

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 на выбранный вами порт:

~/client-configs/base.conf

. . .
# 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
. . .

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

~/client-configs/base.conf

proto udp

Затем раскомментируйте директивыuser иgroup, удалив «;»:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Найдите директивы, которые устанавливаютca,cert иkey. Закомментируйте эти директивы, так как мы будем добавлять сертификаты и ключи в сам файл:

~/client-configs/base.conf

# 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:

~/client-configs/base.conf

cipher AES-128-CBC
auth SHA256

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

~/client-configs/base.conf

key-direction 1

Наконец, добавьте несколько строкcommented out. Мы хотим включать их в каждую конфигурацию, но должны включать их только для клиентов Linux, которые поставляются с файлом/etc/openvpn/update-resolv-conf. Этот сценарий использует утилитуresolvconf для обновления информации DNS для клиентов Linux.

~/client-configs/base.conf

# 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:

nano ~/client-configs/make_config.sh

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

~/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 '') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '\n') \
    ${KEY_DIR}/ta.key \
    <(echo -e '') \
    > ${OUTPUT_DIR}/${1}.ovpn

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

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

chmod 700 ~/client-configs/make_config.sh

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

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

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

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

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

ls ~/client-configs/files
Outputclient1.ovpn

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

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

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

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

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

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

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

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

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

Windows

Установка

Клиентское приложение OpenVPN для Windows можно найти наOpenVPN’s Downloads page. Выберите подходящую версию установщика для вашей версии Windows.

Note

[.note] # OpenVPN требует прав администратора для установки.
#

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

C:\Program Files\OpenVPN\config

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

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

Чтобы приложение OpenVPN всегда запускалось от имени администратора, щелкните его ярлык правой кнопкой мыши и перейдите кProperties. Внизу вкладкиCompatibility нажмите кнопку дляChange settings for all users. В новом окне отметьтеRun this program as an administrator.

соединительный

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

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

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

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

OS X

Установка

Tunnelblick - это бесплатный клиент OpenVPN с открытым исходным кодом для Mac OS X. Вы можете загрузить последний образ диска сTunnelblick Downloads page. Дважды щелкните загруженный файл.dmg и следуйте инструкциям по установке.

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

соединительный

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

Linux

Установка

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

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

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

sudo apt-get update
sudo apt-get install openvpn

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

sudo yum install epel-release
sudo yum install openvpn

Настройка

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

ls /etc/openvpn
Outputupdate-resolve-conf

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

nano client1.ovpn

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

client1.ovpn

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

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

client1.ovpn

group nobody

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

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

sudo openvpn --config client1.ovpn

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

iOS

Установка

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

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

iTunes showing the VPN profile ready to load on the iPhone

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

The OpenVPN iOS app showing new profile ready to import

соединительный

OpenVPN теперь готов к использованию с новым профилем. Начните соединение, сдвинув кнопкуConnect в положениеOn. Отключитесь, сдвинув ту же кнопку наOff.

Note

[.note] # Переключатель VPN подSettings не может использоваться для подключения к VPN. Если вы попытаетесь, вы получите уведомление о необходимости подключаться только с помощью приложения OpenVPN.
#

The OpenVPN iOS app connected to the VPN

Android

Установка

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

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

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

The OpenVPN Android app profile import menu selection

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

The OpenVPN Android app selecting VPN profile to import

соединительный

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

The OpenVPN Android app ready to connect to the VPN

Шаг 13: Проверьте ваше VPN-соединение

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

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

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

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

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

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

cd ~/openvpn-ca
source vars

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

./revoke-full client3

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

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

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

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

sudo nano /etc/openvpn/server.conf

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

/etc/openvpn/server.conf

crl-verify crl.pem

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

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

sudo systemctl restart openvpn@server

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

Чтобы отозвать дополнительных клиентов, выполните этот процесс:

  1. Создайте новый список отзыва сертификатов, найдя файлvars в каталоге~/openvpn-ca и затем вызвав сценарийrevoke-full для имени клиента.

  2. Скопируйте новый список отзыва сертификатов в каталог/etc/openvpn, чтобы перезаписать старый список.

  3. Перезапустите сервис OpenVPN.

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

Заключение

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

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

Related