Настройка сервера OpenVPN в Ubuntu 16.04

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

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

OpenVPN – это полнофункциональное открытое средство VPN SSL, которое поддерживает широкий спектр конфигураций. В этом мануале вы научитесь настраивать сервер OpenVPN на вашем выделенном сервере, а также настраивать доступ к Windows, OS X, iOS и Android.

Требования

Для работы вам нужен сервер Ubuntu 16.04, полностью настроенный по этому мануалу.

1: Установка OpenVPN

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

Обновите индекс пакетов и установите необходимые программы:

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

2: Создание каталога для ЦС

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

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

make-cadir ~/openvpn-ca

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

cd ~/openvpn-ca

3: Настройка переменных ЦС

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

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="MyOrganization"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"
. . .

Также здесь нужно изменить значение KEY_NAME (оно находится сразу под этим разделом). Для простоты мы укажем здесь просто server:

export KEY_NAME="server"

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

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

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

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

cd ~/openvpn-ca
source vars

Вы получите такой вывод:

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

Очистите рабочее пространство:

./clean-all

Теперь соберите свой ЦС:

./build-ca

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

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) [MyOrganization CA]:
Name [server]:
Email Address [admin@email.com]:

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

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

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

Начните с создания сертификата сервера OpenVPN и пары ключей. Для этого введите:

./build-key-server server

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

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

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

. . .
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: Генерирование сертификата и ключей клиента

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

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

Поскольку впоследствии вы можете вернуться к этому этапу еще несколько раз, повторите команду source для 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. Под этим параметром добавьте параметр key-direction со значением «0»:

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

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

cipher AES-128-CBC

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

auth SHA256

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

user nobody
group nogroup

Перенаправление трафика на 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. Если вы использовали значение по умолчанию server, ничего менять не нужно.

cert server.crt
key server.key

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

8: Конфигурации сети сервера

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

Поддержка IP-форвардинга

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

Эта настройка находится в файле /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Найдите строку net.ipv4.ip_forward и удалите символ #, чтобы раскомментировать ее.

net.ipv4.ip_forward=1

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

Чтобы обновить настройки в текущей сессии, введите:

sudo sysctl -p

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

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

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

ip route | grep default

Открытый интерфейс будет указан в выводе после dev. Например, в этом случае это интерфейс wlp11s0:

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

Примечание: Не забудьте заменить 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:

sudo nano /etc/default/ufw

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

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, указав имя конфигурационного файла в качестве переменной экземпляра после имени unit-файла systemd. Файл конфигурации сервера называется /etc/openvpn/server.conf, поэтому мы добавим @server после unit-файла:

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
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, набрав:

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

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

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

Создание структуры каталога client-configs

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

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 новым номером порта.

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

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

Сохраните и закройте файл.
Сделайте его исполняемым.

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
client1.ovpn

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

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

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

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

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

Также вы можете использовать следующие приложения и мануалы:

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

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

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

Система Windows

Установка

Приложение OpenVPN для Windows можно найти здесь. Выберите подходящую версию инсталлятора.

Примечание: Для установки 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.

Подключение

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

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

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

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

OS X

Установка

Tunnelblick – это свободный и открытый клиент OpenVPN для Mac OS X. Загрузить последний образ можно отсюда. Кликните дважды по загруженному файлу .dmg и следуйте инструкциям.

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

Подключение

Запустите Tunnelblick, дважды кликнув по Tunnelblick в папке Applications. После запуска в строке меню в верхней правой части экрана появится значок 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
update-resolve-conf

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

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 в файл конфигурации клиента:

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

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

Подключение

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

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

Android

Установка

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

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

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

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

Подключение

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

13: Тестирование VPN-соединения

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

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

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

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

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

Для этого перейдите в каталог CA и повторите source для файла 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 проверял список отзыва сертификатов, который создается при каждой попытке подключения:

crl-verify crl.pem

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

Перезапустите OpenVPN:

sudo systemctl restart openvpn@server

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

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

  • Сгенерируйте новый список отзыва сертификатов путем поиска файла vars в каталоге ~/openvpn-ca, а затем вызовите сценарий полного отзыва по имени клиента.
  • Скопируйте новый список отзыва сертификата в каталог /etc/openvpn , чтобы перезаписать старый список.

Так вы сможете отозвать любые сертификаты клиентов.

Заключение

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

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

Tags: , , , ,