Как настроить OpenVPN Server на Ubuntu 20.04
Когда, защищая свою сеть от несанкционированного доступа, вы подключаете сетевой экран, очень часто приходится решать задачи по обеспечению доступа в вашу защищённую сеть извне, например, с вашего домашнего компьютера или с рабочих станций, находящихся в удалённых сетях. Для реализации такого доступа без необходимости изменения конфигурации брандмауэра и без потерь в обеспечении защищённости ваших ресурсов существует технология Virtual Private Network (VPN). При этом бесплатной реализацией VPN является сервис с открытым кодом OpenVPN. Далее о том, как настроить OpenVPN Server на Ubuntu 20.04.
Чтобы это сделать, вы должны иметь два сервера установленной ОС Ubuntu 20.04. Помимо сервера с установленным и настроенным ПО OpenVPN (Сервер VPN), вам понадобится ещё один сервер, на котором будет развёрнут Центр Сертификации (в данном руководстве это будет Сервер ЦС).
Несмотря на то, что и ПО OpenVPN, и ЦС можно установить на один сервер, или даже вынести ЦС на клиентский компьютер, с которого предполагается осуществлять подключение к вашей закрытой сети, официальная документация рекомендует разместить ЦА на отдельном ресурсе из-за угрозы предоставления злоумышленнику доступа к секретному ключу вашего ЦС. Если это произойдёт, он сможет подписывать добытым ключом новые сертификаты, и, таким образом, получит доступ к вашему Серверу VPN. Также, для упрощения настройки VPN, рекомендуется включить аутентификацию пользователей с использованием пароля на каждом из серверов, в случае, если она у вас отключена. Всё дело в том, что при настройке ваших VPS, вы можете столкнуться со сложностями при транспортировке файлов с одного сервера на другой.
Центр сертификации
Установку узла VPN следует начать с настройки Сервера ЦС, который будет использоваться исключительно для создания и подписания, а также, для отзыва и выгрузки запросов на сертификаты.
Для начала на Сервере ЦС запустите установку утилиты easy-rsa :
$sudo apt update$sudo apt install easy-rsa
После чего, необходимо создать каталог ~/easy-rsa :
$ mkdir ~/easy-rsa
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
И установить соответствующие права:
$ chmod 700 /home/Your-user/easy-rsa
После чего, запустите на исполнение скрипт easyrsa :
$ cd ~/easy-rsa $ ./easyrsa init-pki
Таким образом, вы создали директорию “инфраструктуры открытых ключей” (Public Key Infrastructure или сокращённо PKI).
Теперь всё готово для создания Центра Сертификации, а значит, пора переходить к созданию секретного ключа и сертификата. Для этого создайте файл vars . Он должен располагаться в директории ~/easy-rsa . Если вы используете редактор nano , наберите:
$ sudo nano ~/easy-rsa/vars
Скопируйте в этот файл следующий текст:
set_var EASYRSA_REQ_COUNTRY "RUS" set_var EASYRSA_REQ_PROVINCE "Moscow" set_var EASYRSA_REQ_CITY "Moscow City" set_var EASYRSA_REQ_ORG "Our Company Name" set_var EASYRSA_REQ_EMAIL "sysadmin@company.ru" set_var EASYRSA_REQ_OU "LLC" set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"
В этих строках необходимо отредактировать значения, которые относятся к вашей закрытой сети, при этом, не оставляйте пустых значений. Перед выходом из файла его нужно сохранить (для этого в nano нажмите Ctrl+X , затем Y и Enter ).
Далее, запустите скрипт easyrsa в командной строке:
$ ./easyrsa build-ca
Здесь необходимо будет ввести парольную фразу, которую впоследствии нужно вводить для получения доступа к вашему ЦС при совершении операций с сертификатами.

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

Файл ca.crt – это открытый ключ ЦС. Он будет использоваться клиентами и серверами для проверки при авторизации.
Теперь ваш центр сертификации подготовлен к работе.
OpenVPN и Easy-RSA
На Сервере VPN необходимо запустить установку пакета OpenVPN и утилиты Easy-RSA:
$sudo apt update$sudo apt install openvpn easy-rsa
Далее, необходимо создать каталог ~/easy-rsa :
$ mkdir ~/easy-rsa
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
И установите соответствующего владельца на эту папку с соответствующими правами:
$sudo chown Your-user ~/easy-rsa$chmod 700 ~/easy-rsa
PKI для OpenVPN
На этом шаге нужно будет создать директорию на Сервере VPN, которая будет использоваться для управления запросами создаваемых сертификатов.
Сначала создайте файл vars в директории ~/easy-rsa , например, с помощью редактора nano :
$ sudo nano ~/easy-rsa/vars
Скопируйте в него следующее:
set_var EASYRSA_ALGO "ec"set_var EASYRSA_DIGEST "sha512"
Сохраните файл и закройте его (в nano для этого нажмите Ctrl+X , затем Y и Enter ).
Теперь необходимо создать каталог PKI . Сделайте это при помощи скрипта easyrsa :
$ cd ~/easy-rsa $ ./easyrsa init-pki
Сертификат и закрытый ключ OpenVPN
Теперь всё необходимое для генерации закрытых ключей и запросов на подписание сертификатов установлено на Сервере VPN.
На этом шаге вы создадите секретный ключ, а также, запрос подписи сертификата. Сначала вам необходимо перейти в директорию ~/easy-rsa . Это нужно сделать на Сервере VPN.
$ cd ~/easy-rsa
Далее запустите easyrsa , где server – CN вашего Сервера VPN (вместо server вы можете использовать любую последовательность символов):
$ ./easyrsa gen-req server nopass
Таким образом, вы создали файл запроса сертификата server.req и секретный ключ.

Этот файл нужно скопировать в /etc/openvpn/server :
$ sudo cp /home/Your-user/easy-rsa/pki/private/server.key /etc/openvpn/server/
Подписание запроса сертификата
На этом этапе необходимо выполнить подписание сертификата server . Сначала скопируйте файл server.req на сервер ЦС для подписания:
$ scp /home/Your-user/easy-rsa/pki/reqs/server.req Your-user@X.X.X.X:/tmp
Здесь, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера ЦС.
Далее, подключитесь к вашему Серверу ЦС, переключитесь в папку ~/easy-rsa и запустите импорт запроса server.req при помощи easyrsa :
$cd ~/easy-rsa$./easyrsa import-req /tmp/server.req server

Теперь необходимо запустить подписание запроса при помощи скрипта easyrsa используя опцию sign-req и такой тип запроса как server :
$ ./easyrsa sign-req server server
Для подтверждения надёжности источника запроса наберите Yes , после чего нажмите Enter .
И наконец, файл server.crt , в котором находится открытый ключ шифрования, и файл ca.crt , содержащий собственный доверенный сертификат, скопируйте на Сервер VPN:
$$scp pki/issued/server.crtYour-user@X.X.X.X:/tmpscp pki/ca.crtYour-user@X.X.X.X:/tmp
В данном случае, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера VPN.
После чего на Сервере VPN эти файлы скопируйте из /tmp в /etc/openvpn/server :
$ sudo cp /tmp/ /etc/openvpn/server
Криптография OpenVPN
Чтобы повысить уровень безопасности следует добавить дополнительный секретный ключ для использования сервером и клиентами при помощи OpenVPN tls-crypt . Для создания публичного tls-crypt ключа запустите:
$cd ~/easy-rsa$openvpn --genkey --secret ta.key
Файл ta.key нужно будет скопировать в директорию /etc/openvpn/server/ :
$ sudo cp ta.key /etc/openvpn/server
Теперь вы готовы создавать сертификаты клиентов вашего VPN и ключи для подключения к OpenVPN.
Генерация сертификатов и ключей
Здесь вам нужно создать директории для хранения сертификатов клиентов и файлов ключей, а также, назначить им соответствующие права, например:
$mkdir -p ~/clients/keys$chmod -R 700 ~/clients
После чего запустите скрипт easyrsa используя опции gen-req и nopass , а также, с использованием CN клиента:
$cd ~/easy-rsa$./easyrsa gen-req client-1 nopass
И скопируйте client-1.key в ~/clients/keys/ :
$ cp pki/private/client-1.key ~/clients/keys/
После чего файл client-1.req скопируйте на Сервер ЦС:
$ scp pki/reqs/client-1.req Your-user@X.X.X.X:/tmp
А на сервере ЦС запустите импорт запроса client-1.req :
$cd ~/easy-rsa $./easyrsa import-req /tmp/client-1.req client-1
Теперь этот запрос необходимо подписать, используя тип запроса client :
$ ./easyrsa sign-req client client-1
Таким образом, вы сгенерировали сертификат клиента client-1.crt . Его необходимо передать на Сервер VPN:
$ scp pki/issued/client-1.crt Your-user@XXX.XXX.XXX.XXX:/tmp
И на Сервере VPN нужно скопировать его в папку ~/clients/keys/ :
$ cp /tmp/client-1.crt ~/clients/keys/
Далее, ca.crt и ta.key скопируйте в каталог ~/clients/keys/ с соответствующими правами:
$cp ~/easy-rsa/ta.key ~/clients/keys/$sudo cp /etc/openvpn/server/ca.crt ~/clients/keys/$sudo chownYour-user.Your-user~/clients/keys/*
Настройка OpenVPN
На данном шаге произведите некоторые настройки конфигурации Сервера VPN:
- Скопируйте server.conf в директорию OpenVPN:
$sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/$sudo gunzip /etc/openvpn/server/server.conf.gz
- Откройте этот файл для редактирования, например, с помощью nano :
$ sudo nano /etc/openvpn/server/server.conf
- В разделе HMAC закомментируйте строку tls-auth и после неё вставьте строку tls-crypt ta.key :

- Найдите в том же файле строку cipher AES-256-CBC , закомментируйте её и добавьте строки cipher AES-256-GCM и auth SHA256 :

- Теперь найдите текст либо dh dh2048.pem , либо dh dh.pem и закомментируйте его, так как в вашем случае нет необходимости использовать файл Диффи-Хеллмана. После закомментированной строки вставьте строку dh none :

- И для того, чтобы OpenVPN запускался без привилегий, снимите комментарий перед user nobody и group nogroup :

Сохраните изменения в файле, закройте его.
Конфигурация сети на Сервере VPN
Теперь необходимо внести изменения в конфигурацию сети на Сервере VPN для обеспечения правильной маршрутизации трафика. А именно, откройте конфигурационный файл /etc/sysctl.conf :
$ sudo nano /etc/sysctl.conf
После чего добавьте строку:
Перед закрытием файла сохраните внесённые изменения.
Для применения новой настройки наберите:
$ sudo sysctl -p
Изменение конфигурации сетевого экрана
Далее, вам следует произвести настройки, касающиеся ранее установленного и сконфигурированного интерфейса брандмауэра UFW на Сервере VPN. А именно, нужно разрешить работу OpenVPN через брандмауэр путём включения типа трансляции адресов, который называется маскарадинг. Такая технология позволяет транслировать пакеты клиентов, подставляя адреса отправителей в динамике.
Чтобы определить открытый сетевой интерфейс, используйте команду:
$ ip route list default
Его можно увидеть после параметра dev :
![]()
Теперь откройте /etc/ufw/before.rules :
$ sudo nano /etc/ufw/before.rules
В начало файла скопируйте строки:
# START OPENVPN RULES# NAT table rules*nat:POSTROUTING ACCEPT [0:0]# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADECOMMIT# END OPENVPN RULES

Сохраните внесённые изменения и закройте файл.
Откройте файл /etc/default/ufw :
$ sudo nano /etc/default/ufw
В строке DEFAULT_FORWARD_POLICY поменяйте значение DROP на значение ACCEPT :
![]()
Сохраните изменения в файле и закройте его.
Следующими командами откройте UDP-трафик на порту 1194 и добавьте в UFW протокол OpenSSH, если вы не сделали этого ранее:
$sudo ufw allow 1194/udp$sudo ufw allow OpenSSH
$sudo ufw disable$sudo ufw enable
Запуск OpenVPN
При помощи systemctl произведите запуск службы OpenVPN c включением его в автозагрузку:
$sudo systemctl -f enable openvpn-server@server.service$sudo systemctl start openvpn-server@server.service
Проверьте корректность запуска службы:
$ sudo systemctl status openvpn-server@server.service
Вывод команды должен выглядеть так:

Конфигурация клиентов
На этом шаге вам необходимо создать скрипт, с помощью которого можно будет создавать уникальные файлы клиентов, ключи и сертификаты используя базовую инфраструктуру конфигурации.
Это будет полезно с точки зрения автоматизации ваших действий при организации доступа для каждого из клиентов.
Создайте структуру директорий, где будут сохраняться файлы:
$ mkdir -p ~/clients/files
Скопируйте шаблон клиентской конфигурации в папку clients :
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/clients/base.conf
$ sudo nano ~/clients/base.conf
В строке remote замените порт 1194 на нужный вам, если меняли номер порта, который прослушивает Сервер VPN:
remote X.X.X.X 1194
Должен быть правильно указан протокол:
proto udp
Снимите комментарий со строк:
user nobody group nogroup
Закомментируйте следующие строки:
;ca ca.crt ;cert client.crt ;key client.key
А строку относящуюся к tls-auth , наоборот, нужно раскомментировать:
tls-auth ta.key 1
Следующие строки должны совпадать с соответствующими строками, прописанными в файле /etc/openvpn/server.conf :
cipher AES-256-GCM
auth SHA256
Также добавьте строки, которые нужно будет раскомментировать только для Linux-клиентов:
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
Плюс ко всему, добавьте строки настроек для клиентов, которые планируют использовать systemd-resolved :
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE
Сохраните изменения в файле, закройте его.
Теперь необходимо создать скрипт make_config.sh . Он создаст базовую клиентскую конфигурацию, которая будет сохранена в директории ~/clients/files :
$ sudo nano ~/clients/make_config.sh
Скрипт должен содержать:
Сохраните скрипт, закройте его и назначьте ему соответствующие права:
$ chmod 700 ~/clients/make_config.sh
Создание клиента
Итак, вы создали сертификат клиента client-1.crt и файл ключа client-1.key . Теперь можно создать клиентский файл конфигурации. Для это нужно запустить на исполнение скрипт ~/clients/make_config.sh :
$cd ~/clients$./make_config.sh client-1
В результате скрипт создаст файл ~/clients/files/client-1.ovpn .
Такой файл необходимо передать клиенту для установки на устройство, которое он будет использовать для подключения к закрытой сети через Сервер VPN. При этом, на стороне клиента должно быть развёрнуто программное обеспечение OpenVPN, к которому нужно подключить полученнный из ЦС файл с расширением ovpn . Например, если рабочая станция клиента работает под управлением ОС Windows, достаточно с сайта OpenVPN скачать дистрибутив Windows-приложения, установить его и скопировать файл сертификата .ovpn в одну из папок, указанных приложением при первом запуске. Это позволит клиенту осуществлять извне работу с ресурсами, расположенными внутри вашей сети, без изменений в конфигурации сетевого экрана и не понижая при этом уровень защищённости сети.
Следует отметить, что в данном руководстве в качестве сервера ЦС использовалась виртуальная машина, на которой также, как и на сервере OpenVPN, развёрнута ОС Ubuntu 20.04. На самом деле, в качестве сервера ЦС вы можете использовать как и ваш VPS, на котором вы настроили серверный сегмент VPN (что не является хорошим вариантом с точки зрения соблюдения мер информационной безопасности), но и любой компьютер или сервер, находящийся за пределами вашей закрытой сети. Во втором варианте, вам нужно продумать организацию безопасного трансфера файлов ключей и сертификатов между рабочей станцией с настроенным ЦС и сервером VPN.
Настройка OpenVPN сервера на Ubuntu 20.04
Меняем значения в /etc/openvpn/easy-rsa/vars. Данная информация будет указана в сертификатах и ключах:
nano /etc/openvpn/easy-rsa/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 kg-card kg-code-card">./easyrsa gen-req vpn-server nopass ./easyrsa sign-req server vpn-server
После ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.
Полученные файлы будут расположены в:
/etc/openvpn/easy-rsa/pki/issued/vpn-server.crt /etc/openvpn/easy-rsa/pki/private/vpn-server.key
Создадим ta ключ, чтобы использовать параметр tls-auth, добавив дополнительную проверку целостности. Это обеспечит дополнительный уровень безопасности протокола SSL/TLS:
openvpn --genkey --secret pki/ta.key
Полученный файл будет расположен в:
/etc/openvpn/easy-rsa/pki/ta.key
Сертификаты клиента
Создаем запрос на сертификат и сам сертификат(вместо имени «vpn-client» можете указать своё имя клиента):

Файлы vpn-client.crt, vpn-client.key, ca.crt, ta.key, client.ovpn необходимо скопировать в директорию C:\Program Files\OpenVPN\config.
Затем в интерфейсе openvpn GUI необходимо нажать кнопку Connect.
Как установить и настроить L2TP VPN-сервера на Ubuntu Server
VPN или виртуальная частная это защищенное соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Для предприятий VPN сервер обеспечивает безопасный обмен конфиденциальной информацией между сотрудниками, работающими удаленно, и офисной сетью. При помощи VPN работник может использовать офисную инфраструктуру, например принтер или локальное хранилище документов, не доступную в Интернет, словно он находится в офисе. В этой статье мы покажем два способа настройки VPN сервера под Ubuntu и Centos и поможем настроить клиенты под Windows, Android и Linux.
Оглавление
- Что такое VPN и для чего его можно использовать
- Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта
- Развертывание скрипта на Ubuntu server и CentOS server
- Как настроить клиент VPN под Windows
- Настройка клиента в Windows 10
- Проблемы с VPN соединением в Windows 10
Что такое VPN и для чего его можно использовать
VPN или виртуальная частная сеть (англ. virtual private network) — это соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Такое соединение (еще его называют VPN-туннель) зашифровано стойкими алгоритмами, его работа построена на специальных протоколах, таких как, PPTP, OpenVPN, L2TP. В данной статье мы детально рассмотрим, как настроить VPN на протоколах L2TP/IPsec
L2TP (Layer 2 Tunneling Protocol) — это сетевой протокол, работающий на канальном уровне модели OSI, который позволяет настроить сеть VPN с использованием UDP порта 1701. Сам по себе, L2TP не содержит средств для шифрования данных и аутентификации пользователей, поэтому L2TP всегда используется вместе с протоколом IPSeс.
IPSec (IP Security) — семейство протоколов, которые служат для защиты информации и предназначены для аутентификации пользователей в сети, осуществления проверки целостности информации и для шифрования IP-пакетов. В плане применения для создания VPN-тунелей, IPsec необходим и для организации защищенного механизма обмена ключами в Интернете.
Сервисы VPN, как правило, используют для следующих целей:
- для защиты своей приватной информации в сети Интернет;
- для обхода блокировок сайтов и сервисов;
- для организации безопасного удаленного доступа сотрудников к корпоративной сети предприятия.
Компания FREEhost.UA предоставляет VPS/VDS в аренду для разворачивания VPN серверов именно для корпоративного использования. Ниже мы подробно расскажем, как настроить свой L2TP IPSec сервер VPN на наших VPS двумя способами (с помощью автоматического скрипта и вручную), а также остановимся на особенностях настройки VPN клиентов под разные ОС (Windows, Linux, Андроид).
Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта
Покажем на практике, как настроить свой L2TP IPsec server на VPS под управлением Ubuntu 20 или под Centos 8 простым способом, используя готовый скрипт. Данный метод подойдет даже новичкам в системном администрировании, для начала можно ознакомиться с информацией от разработчика скрипта IPsec VPN Server Auto Setup Scripts на ресурсе GitHub. В скрипте используются протоколы IPsec (Libreswan) и L2TP (xl2tpd).
Развертывание скрипта на Ubuntu server и CentOS server
Данный скрипт проверен на работоспособность для следующих версий ОС:
Ubuntu 20.04 (Focal), 18.04 (Bionic), 16.04 (Xenial), а также для CentOS 8/7/6. Перед тем, как начать инсталляцию, выполните обновления на серверной ОС Ubuntu и перезагрузите сервер. В случае с CentOS 8, воспользуйтесь командой:
yum update
Затем запустите скрипт следующей командой:
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh
Если вы проводите установку скрипта под CentOS 8, то вместо https://git.io/vpnsetup в написании команды используйте https://git.io/vpnsetup-centos.
В автоматическом режиме скрипт создаст готовый L2TP VPN-server, а также сгенерирует учетные данные для доступа к серверу VPN (см. пример ниже):
Server IP: 178.20.153.253 IPsec PSK: f*****************5r Username: vpnuser Password: K*************ts

Если вы хотите выполнить скрипт со своими учетными данными для доступа к VPN-серверу, то запустите команду и затем отредактируйте файл vpnsetup.sh в редакторе Nano.
Вместо этих переменных впишите свои данные: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD.
wget https://git.io/vpnsetup -O vpnsetup.sh nano -w vpnsetup.sh sudo sh vpnsetup.sh
*Примечание: IPsec PSK должен состоять как минимум из 20 случайных символов.
В случае с CentOS редактируем файл vpnsetup_centos.sh.
Также можно определить свои учетные данные, как переменные среды, см. пример ниже:
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo \ VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \ VPN_USER='your_vpn_username' \ VPN_PASSWORD='your_vpn_password' \ sh vpnsetup.sh
Итак, работы на сервере завершены, учетные данные для входа получены, сейчас предстоит настроить VPN клиент на своем компьютере (или смартфоне) для получения доступа к нашему серверу ВПН.
Как настроить собственный VPN-сервер под Ubuntu вручную
Можно развернуть собственный ВПН сервер на VPS под управлением Ubuntu (версии 18 и 20) вручную, для этого воспользуемся пакетом strongSwan, который предназначен для реализации IPSec на различных платформах. Для начала, как обычно, выполним обновление серверной ОС:
apt update && apt full-upgrade -y
Затем приступаем к настройкам.
1. Инсталлируем strongSwan командой*:
apt-get install strongswan
*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.

2. Затем установим модуль xl2tpd для реализации протокола L2TP:
apt-get install xl2tpd

3. Выполним автозагрузку этих пакетов:
systemctl enable ipsec systemctl enable xl2tpd

4. В редакторе Nano выполним редактирование конфигурационного файла IPSec:
nano /etc/ipsec.conf
Вписываем в файл следующие строки (соблюдая все отступы):
config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkey conn L2TP-PSK-NAT rightsubnet=vhost:%priv lso=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 r4ekey=no ikelifetime=8h keylife=1h type=transport left=SERVER.IP leftprotoport=17/1701 right=%any rightprotoport=17/%any
*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.

5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:
nano /etc/ipsec.secrets
SERVER.IP %any : PSK "MyNewSharedSecretKey20"
где: SERVER.IP IP — адрес вашего VPS;

6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:
nano /usr/local/bin/ipsec
Вносим туда следующие команды:
iptables --table nat --append POSTROUTING --jump MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done /etc/init.d/ipsec restart

7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:
Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:
nano /etc/systemd/system/rc-local.service [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target

Делаем этот файл исполняемым:
chmod +x /etc/rc.local
Добавляем этот скрипт в /etc/rc.local и запускаем его:
nano /etc/rc.local #!/bin/sh -e /usr/local/bin/ipsec_conf exit 0

8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:
systemctl daemon-reload systemctl enable rc-local
9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл xl2tpd.conf:
nano /etc/xl2tpd/xl2tpd.conf
Вписываем эти строки в файл:
[global] ipsec saref = yes [lns default] ip range = 10.1.2.2-10.1.2.255 local ip = 10.1.2.1 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes

10. Настраиваем авторизацию PPP, для этого произведем редактирование файла:
nano /etc/ppp/options.xl2tpd
Вносим в редакторе следующие строки:
require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts lock hide-password modem debug name VPNTEST20 proxyarp lcp-echo-interval 30 lcp-echo-failure 4
где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)

11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):
nano /etc/ppp/chap-secrets uservpn1 VPNTEST20 password1 *

12. Проводим рестарт всех настроенных сервисов:
/etc/init.d/ipsec restart /etc/init.d/xl2tpd restart

13. Перезагружаем сервер и пробуем подсоединиться к нашему VPN-серверу с помощью клиента (про настройки клиентов читайте в следующих разделах нашей статьи).
Настройка VPN клиента
1. Как настроить клиент VPN под Windows
Настройка клиента в Windows 10
Для начала, откроем меню «Параметры сети и Интернет», затем добавляем в подменю "VPN" новое подключение (кнопка "+"). Заполняем следующие пункты настроек:
Имя подключения — введем новое название для нашего VPN соединения.
Имя или адрес сервера — вносим IP нашего сервера.
Тип VPN — из списка выберем «L2TP/IPsec с общим ключом».
Общий ключ — вводим наш IPsec PSK
Тип данных для входа — выберем «имя пользователя и пароль».
Имя пользователя и пароль — заполняем эти пункты.
На скриншоте показано, как сделать данные настройки:

Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением ("L2TP Ubuntu 18", как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».

Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):

Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:

Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:

Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.
Проблемы с VPN соединением в Windows 10
Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:

Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:

Проверить подключение через VPN-туннель можно c помощью сайта http://2ip.ru, вместо нашего реального IP, мы видим IP нашего VPN-сервера (178.20.153.253), см. рис.

2. Как настроить клиент VPN под Linux
Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.
1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp

sudo apt-get install network-manager-l2tp network-manager-l2tp-gnome

2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.

3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:
Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).

4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).

Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:

5. На этом все настройки закончены, можно попробовать соединиться с нашим VPN-сервером и проверить IP адрес, как это мы уже делали выше, на сервисе http://2ip.ru.
3. Как настроить клиент VPN под Android
Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».
После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.

Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:

Обычная проверка IP по http://2ip.ru покажет, что наш реальный IP подменяется на IP сервера VPN (178.20.153.253), см. скриншот:

Заключение
В статье мы детально описали 2 способа настройки VPN-сервера (с помощью готового скрипта и вручную), а также остановились на методах настройки VPN клиентов. Надеемся, что этот материал будет полезен для системных администраторов и специалистов компаний, которые организуют удаленный доступ сотрудников из дома (командировки, филиала и т.д.) к корпоративной инфраструктуре. Специалисты компании FREEhost.UA всегда помогут вам с выбором VPS для организации собственного VPN-сервера компании и окажут содействие в настройке VPN.
Установка и настройка OpenVPN сервера на Ubuntu

Virtual Private Network (VPN) дословно переводится как «виртуальная частная сеть». VPN создаёт надёжное шифрованное соединение между устройствами — VPN-туннель. Благодаря такому соединению, при подключении к незащищённой сети (например, WiFi в кафетерии), трафик пройдёт через VPN-сервер, что защитит его от постороннего вмешательства.
Бесплатные VPN и прокси отличаются нестабильностью из-за множества активных пользователей. Такие сервисы могут беспричинно прекратить работу в любой момент. Платные же инструменты могут исчезнуть в ближайшем будущем, в связи с законом о запрете анонимайзеров и VPN.
В сложившейся ситуации лучшим решением будет настроить собственную виртуальную частную сеть. В этой статье расскажем как установить собственную виртуальную частную сеть на примере VPN-клиента OpenVPN и Ubuntu 18.04. Установка OpenVPN на CentOS, Debian и другие популярные Linux дистрибутивы происходит по похожей схеме.
Теория
Что такое VPN
VPN-соединение создаётся за счёт связки клиент-серверной архитектуры. Клиенты подключаются к серверу VPN, объединяются в виртуальную сеть, безопасно обмениваются данными. Для подключения к Интернету клиент обращается к серверу VPN, а тот, в свою очередь, получает данные из глобальной сети и передаёт их обратно клиенту.
Другими словами, VPN создаёт безопасный коридор между вашими устройствами и сетью. Этот коридор незаметен, а данные, находящиеся в нём, невозможно перехватить. Все соединения идут не напрямую, а через сервер, который может находиться в любой точке мира.
OpenVPN

Один из способов создания виртуальной частной сети – использование бесплатной программы OpenVPN. Утилиту или её исходный код можно скачать на официальном сайте. OpenVPN работает при помощи сертификатов и асимметричного шифрования. То есть передаваемые данные шифруются одним ключом, а расшифровываются другим.
Пара ключей шифрования
- Публичныйключ – сертификат, который может быть в свободном доступе, производит шифрование данных (email сообщения, проверка ЭЦП).
- Приватныйключ – хранящийся в ограниченном доступе, только у заинтересованных лиц, расшифровывает данные, зашифрованные публичным ключом.
Для того чтобы такая пара ключей работала, они должны быть подписаны центром авторизации (certification authority, CA). При этом CA имеет свой сертификат и приватный ключ, которые нужны для идентификации созданной пары ключей.
Что нужно для работы OpenVPN
Для настройки VPN необходим виртуальный частный сервер (virtual private server, VPS/VDS). В качестве ОС будет использоваться Ubuntu — один из самых популярных и стабильных серверных дистрибутивов на базе Linux.
VPS можно арендовать у подходящего хостинг-провайдера. При выборе виртуального сервера важно, чтобы он подходил под следующие условия:
- Оперативная память (RAM) — не менее 512 МБ.
- Скорость сетевого интерфейса — 100 мб/сек или выше.
- Физический сервер должен находиться максимально близко к будущему пользователю. Это обеспечит минимальную задержку (пинг) и позволит соответствовать местным законам.
Такие факторы, как объём постоянной памяти и тип накопителя, практически не имеют значения.
Установка OpenVPN
Подготовка
Установка OpenVPN на Ubuntu 18.04 начинается с установки пакетов OpenVPN и Easy-rsa из репозитория. Утилита Easy-rsa необходима для управления ключами и сертификатами.
Перед инсталляцией необходимо обновить список пакетов:
sudo apt update
Теперь нужно выполнить установку OpenVPN и Easy–rsa:
sudo apt install openvpn easy-rsa
Также в процессе работы пригодится пакет NetTOOLS, включающий в себя все необходимые сетевые инструменты. Установка выполняется командой:
sudo apt install net-tools
Настройка центра сертификации
Настройка сервера OpenVPN на Ubuntu начинается с установки центра сертификации и создания корневого сертификата:
sudo cp -R /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa export EASYRSA=$(pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
При выполнении последней команды программа попросит пользователя придумать пароль. Созданный код доступа будет использоваться в последующих действиях для подписи сертификатов и ключей.
В результате создаются файлы:
- /etc/openvpn/easy-rsa/pki/ca.crt – сертификат CA. Он необходим клиентам и серверу для проверки подписи CA.
- /etc/openvpn/easy-rsa/pki/private/ca.key – приватный ключ CA.
Для удобства нужно создать каталог, в котором будут храниться все необходимые сертификаты и ключи OpenVPN:
mkdir /etc/openvpn/certs/
Теперь необходимо скопировать корневой сертификат OpenVPN в созданную папку:
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/certs/ca.crt
Ключи OpenVPN для сервера
Генерация ключей для сервера OpenVPN выполняется следующей командой:
./easyrsa gen-req server nopass
Далее созданный сертификат подписывается ключом CA:
./easyrsa sign-req server server
Появится предупреждение с запросом подтвердить подпись. Нужно написать «yes» и ввести пароль центра сертификации.
Созданные файлы копируются в каталог для сертификатов:
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/certs/
Теперь нужно создать файл параметров Diffie–Hellman:
openssl dhparam -out /etc/openvpn/certs/dh2048.pem 2048
Последним создаётся ключ HMAC (hash-based message authentication code):
openvpn --genkey --secret /etc/openvpn/certs/ta.key
Теперь в папке, созданной для хранения сертификатов, должно быть 5 файлов. Проверить их наличие можно командой:
ls -l /etc/openvpn/certs/

Создание ключей клиентов OpenVPN
Сгенерировать ключи и выполнить их подпись можно следующей командой:
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
На вопрос о намерении подписать нужно ответить «yes» и ввести пароль CA.
Запуск сервера OpenVPN
Создание конфигурационного файла OpenVPN
Для настройки OpenVPN нужно создать файл конфигурации клиента:
nano /etc/openvpn/server.conf
Далее в него копируется следующий конфиг OpenVPN сервера:
# Порт для использования port 1194 # TCP/UDP Рекомендуется использовать UDP протокол ;proto tcp proto udp # Остается без изменений ;dev tap dev tun # Ключи # Сертификат CA ca /etc/openvpn/certs/ca.crt # Сертификат сервера cert /etc/openvpn/certs/server.crt # Приватный ключ сервера key /etc/openvpn/certs/server.key #не распространяется и хранится в секрете # параметры DH dh /etc/openvpn/certs/dh2048.pem # Создание виртуальной сети и ее параметры # Параметры IP server 10.8.0.0 255.255.255.0 # При перезагрузке сервера, клиенту будет присвоен прежний IP адрес ifconfig-pool-persist /etc/openvpn/ipp.txt # Настройка для установки шлюза по умолчанию (для клиентов при подключении к VPN сервер VPN становится шлюзом) push "redirect–gateway def1 bypass–dhcp" # Настройка позволяющая нескольким клиентам использовать одну и #туже пару ключей (сертификат–приватный ключ) #не рекомендуется для использования, закомментирована ;duplicate–cn # Пинг удаленного узла с интервалом 10 секунд # Если не отвечает в течение 120 секунд, считать упавшим keepalive 10 120 # Защита от DoS–атак портов UDP за счет созданного HMAC файрволла remote-cert-tls client tls-auth /etc/openvpn/certs/ta.key 0 # файл хранится в секрете # Криптографические шифры cipher AES-256-CBC #у клиентов указывается точно такой же # Сжатие и отправка настроек клиенту ;compress lz4–v2 ;push "compress lz4–v2" # MAX число одновременных подключений ;max–clients 100 # Понижение привилегий демона OpenVPN # после запуска # Только для не Windows систем. ;user nobody ;group nobody # Хранение ключей в памяти (если нет подключения из–за привилегий) persist-key persist-tun # Лог файл текущих соединений. # Каждую минуту обрезается и перезаписываться status openvpn–status.log # Логи syslog. #!Используется только один. Раскомментировать необходимый. # перезаписывать файл журнала при каждом запуске OpenVPN ;log openvpn.log # дополнять журнал ;log–append openvpn.log # Уровень вербальности # # 0 тихий, кроме фатальных ошибок # 4 подходит для обычного использования # 5 и 6 помогают в отладке при решении проблем с подключением # 9 крайне вербальный verb 4 # Предупреждение клиента о перезапуске сервера explicit-exit-notify 1
Параметр «server» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0 255.255.255.0) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255).
Теперь файл необходимо сохранить и закрыть. Для этого нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить операцию нажатием «Enter».
Тестирование сервера OpenVPN
Создание сервера OpenVPN завершено. Перед тем как подключиться к нему, остаётся только проверить созданный конфигурационный файл на наличие ошибок. Для этого нужно произвести тестовый запуск:
openvpn /etc/openvpn/server.conf

Об успешном старте сигнализирует сообщение «Initialization Sequence Completed».
Если всё в порядке, то можно запускать службу OpenVPN сервера для постоянной работы. Также нужно добавить программу в автозагрузку, чтобы развёртывание OpenVPN осуществлялось при каждом запуске системы. Все это делается двумя командами:
systemctl start openvpn@server.service systemctl enable openvpn@server.service
Команда systemctl использует формат вида « openvpn–server@.service ». Где «» – конфигурация из папки «/etc/openvpn/» без расширения .conf.
Получить информацию о работе службы можно с помощью команды:
systemctl status openvpn@server.service

Включение маршрутизации трафика на OpenVPN сервере
При подключении к серверу доступа к глобальной сети не будет, поскольку маршрутизация трафика не выполняется. Чтобы её добавить, нужно выполнить следующие действия.
Для начала создаётся файл «vpn_route.sh» а каталоге «/root/bin/».
nano /root/bin/vpn_route.sh
Если папка отсутствует, её необходимо создать:
mkdir /root/bin/
Далее, в открывшийся файл, нужно внести конфигурацию:
#!/bin/sh # укажите имя интерфейса, иначе скрипт попытается выбрать его автоматически #DEV='eth0' # проверить можно командой “ip a” DEV='ens3' # Значение подсети # изменяется в соответствии с конфигурацией PRIVATE=10.8.0.0/24 if [ -z "$DEV" ]; then DEV="$(ip route | grep default | head -n 1 | awk '')" fi # Включаем маршрутизация транзитных IP–пакетов, чтобы # они уходили на внешний интерфейс sysctl net.ipv4.ip_forward=1 # Проверка блокировки перенаправленного трафика iptables iptables -I FORWARD -j ACCEPT # Преобразование адресов (NAT) iptables -t nat -I POSTROUTING -s $PRIVATE -o $DEV -j MASQUERADE
Параметр «PRIVATE» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0/24) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255). В случае изменения значения подсети в «vpn_route.sh» нужно обязательно соотнести новое значение с тем, что прописано в конфигурационном файле OpenVPN «/etc/openvpn/server.conf» (параметр «server»).
После сохранения нужно сделать файл исполняемым:
chmod 755 /root/bin/vpn_route.sh
Далее проводится пробный запуск скрипта для выявления ошибок:
bash /root/bin/vpn_route.sh
Если всё в порядке, то остаётся добавить добавить созданный скрипт в автозагрузку. Для этого нужно создать службу systemd:
nano /etc/systemd/system/openvpn-server-routing.service
В открывшийся файл вносятся следующие данные:
[Unit] Description=Включение маршрутизации OpenVPN трафика. [Service] ExecStart=/root/bin/vpn_route.sh [Install] WantedBy=multi-user.target
Теперь нужно добавить созданную службу в автозагрузку:
systemctl enable openvpn-server-routing
Настройка клиента OpenVPN сервера
Перенос ключей и сертификатов
На данном этапе настройки конфигурации OpenVPN необходимо разместить ранее созданные файлы на клиентском компьютере.
Если клиент OpenVPN на Windows, создается папка по пути «C:\Program Files\OpenVPN\certs\». В нее перемещаются следующие элементы:
- Файлы ca.crt и ta.key из папки /etc/openvpn/certs.
- Файл client1.crt из папки /etc/openvpn/easy-rsa/pki/issued.
- Файл client1.key из папки /etc/openvpn/easy-rsa/pki/private/.
Кстати. Выполнить перенос данных можно с помощью FTP-клиента WinSCP.
Если клиент работает на Ubuntu, файлы переносятся следующим образом:
- С сервера из папки /etc/openvpn/certs файлы ca.crt и ta.key, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/issued/ файл client1.crt, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/private/ файл client1.key, копируется в папку /etc/openvpn/certs.
Отправить файлы на устройство под управлением Linux можно с помощью FTP-клиента FileZilla.
Настройка OpenVPN на Windows
Клиент для Windows можно скачать с официального сайта.
Ранее в папку «C:\Program Files\OpenVPN\certs\» были перемещены сертификаты и ключи для подключения к OpenVPN серверу. Теперь необходимо добавить конфигурацию для работы программы. Для этого нужно создать в папке «C:\Program Files\OpenVPN\config\» файл «client.ovpn» и добавить в него следующие строки:
# Роль программы. client # IP адрес OpenVPN сервера remote XXX.XXX.XXX.XXX # Порт сервера. Берется из конфигурации сервера port 1194 # не изменяется dev tun # Протокол как на сервере ;proto tcp proto udp # Имя хоста/IP и порт сервера. #Удаленные сервера для баланса нагрузки ;remote my–server–1 1194 ;remote my–server–2 1194 # Случайный выбор хостов. Если не указано, берется по порядку ;remote–random # Преобразование имени хоста # (в случае непостоянного подключения к интернету) resolv-retry infinite # Привязка к локальному порту nobind # Маршрутизация всего трафика через VPN-сервер redirect-gateway def1 bypass-dhcp # Попытка сохранения состояния при перезапуске persist-key persist-tun # Настройка HTTP прокси при подключении OpenVPN серверу ;http–proxy–retry # retry on connection failures ;http–proxy [proxy server] [proxy port #] # Отключение предупреждений о дублировании пакетов ;mute–replay–warnings # Сертификаты ca "C:\\Program Files\\OpenVPN\\certs\\ca.crt" cert "C:\\Program Files\\OpenVPN\\certs\\client1.crt" key "C:\\Program Files\\OpenVPN\\certs\\client1.key" # Дополнительная защита remote-cert-tls server # Ключ HMAC tls-auth "C:\\Program Files\\OpenVPN\\certs\\ta.key" 1 # Шифры как на сервере cipher AES-256-CBC # Сжатие. Если на сервере отключено, не включается #comp–lzo # Вербальность журнала. verb 3
После сохранения остаётся выбрать в программе профиль «client» и нажать «Подключиться» для установки соединения с сервером.
Настройка клиента на Ubuntu
Клиент OpenVPN поставляется совместно с серверной частью, поэтому при установке указывается тот же пакет, что и в начале статьи – «openvpn»:
sudo apt install openvpn
Ранее ключи уже были сгенерированы (ca.crt, client1.crt, client1.key, ta.key) и перемещены в папку «/etc/openvpn/certs/». Проверить их наличие можно следующей командой:
ls –l /etc/openvpn/certs/
Если все 5 файлов присутствуют, то можно переходить к созданию конфигурационного файла OpenVPN client:
sudo nano /etc/openvpn/client.conf
В открывшийся файл настроек необходимо внести следующую конфигурацию:
# Роль программы. client # IP адрес OpenVPN сервера remote XXX.XXX.XXX.XXX # Порт сервера. Берется из конфигурации сервера port 1194 # не изменяется dev tun # Протокол как на сервере ;proto tcp proto udp # Имя хоста/IP и порт сервера. #Удаленные сервера для баланса нагрузки ;remote my–server–1 1194 ;remote my–server–2 1194 # Случайный выбор хостов. Если не указано, берется по порядку ;remote–random # Преобразование имени хоста # (в случае непостоянного подключения к интернету) resolv-retry infinite # Привязка к локальному порту nobind # Маршрутизация всего трафика через VPN-сервер redirect-gateway def1 bypass-dhcp # Попытка сохранения состояния при перезапуске persist-key persist-tun # Настройка HTTP прокси при подключении OpenVPN серверу ;http–proxy–retry # retry on connection failures ;http–proxy [proxy server] [proxy port #] # Отключение предупреждений о дублировании пакетов ;mute–replay–warnings # Сертификаты ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/client1.crt key /etc/openvpn/certs/client1.key # Дополнительная защита remote-cert-tls server # Ключ HMAC tls-auth /etc/openvpn/certs/ta.key 1 # Шифры как на сервере cipher AES-256-CBC # Сжатие. Если на сервере отключено, не включается #comp–lzo # Вербальность журнала. verb 3
Перед тем как запустить OpenVPN, нужно заменить некоторые значения на собственные. Далее файл сохраняется и закрывается.
Выполнить тестовый запуск клиента с указанными параметрами можно следующей командой:
sudo openvpn /etc/openvpn/client.conf
Об успешном подключении просигнализирует сообщение: «Initialization Sequence Completed».
Теперь можно запустить службу OpenVPN для работы в скрытом режиме:
sudo systemctl start openvpn@client.service
Проверка статуса службы:
sudo systemctl status openvpn@client.service
Добавление службу в автозагрузку:
sudo systemctl enable openvpn@client.service
Остановка службы VPN:
sudo systemctl stop openvpn@client.service
Удаление из автозагрузки:
sudo systemctl disable openvpn@client.service
Встраивание сертификатов в файл .ovpn
Содержимое сертификатов и ключей можно указать в конфигурационном файле .ovpn. Это позволяет использовать только один документ для переноса всех аутентификационных данных, что существенно ускоряет процесс подготовки клиентской части.
Данные сертификатов заносятся в парные теги, которые имеют такое же наименование, как и стандартные опции (ca, cert, dh, tls–auth, key и т. д.). Далее это будет показано на примере ранее созданного конфигурационного файла client.conf.
Для начала нужно удалить из файла прописанные сертификаты и ключи:
ca "C:\\Program Files\\OpenVPN\\certs\\ca.crt" cert "C:\\Program Files\\OpenVPN\\certs\\client1.crt" key "C:\\Program Files\\OpenVPN\\certs\\client1.key" tls–auth "C:\\Program Files\\OpenVPN\\certs\\ta.key" 1
Так как «tls–auth» – дополнительная опция, то её необходимо добавить отдельной строкой, введя:
key-direction 1
Далее нужно создать парные теги, как ниже, и перенести данные о ключах:
Вместо многоточия указывается содержание публичного или приватного ключа между заголовками «BEGIN» и «END».

После сохранения настроек файл можно передать клиентам OpenVPN.
Заключение
Своя собственная VPN сеть позволяет обезопасить передаваемые личные данные в огромном потоке информации, а также даст доступ практически ко всем ресурсам Всемирной паутины.
Настроить OpenVPN на Ubuntu для создания своей собственной сети достаточно легко. Нужно лишь внимательно следует следовать приведённой инструкции и правильно выбрать поставщика хостинг-услуг.
Виртуальные сервера Eternalhost — проверенное решение для создания собственной сети VPN! Оперативная техподдержка 24/7 и бесплатная защита от DDoS.
