Установка и настройка OpenVPN для Ubuntu

Настройка и использование OpenVPN на Ubuntu

Для удобства настройки заходим под суперпользователем:

Подготовка Ubuntu

Обновляем установленные пакеты:

apt-get update && apt-get upgrade

Устанавливаем утилиту для синхронизации времени:

apt-get install ntpdate

Установим правильную временную зону:

cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере московское время.

Синхронизируем время с публичным сервером времени:

Установка, настройка и запуск VPN-сервера

Установка OpenVPN

Устанавливаем необходимые пакеты следующей командой:

apt-get install openvpn easy-rsa

Создание сертификатов

Создаем каталог, в котором будем хранить сертификаты:

Переходим в созданный нами каталог:

Скопируем в текущий каталог шаблоны скриптов для формирования сертификатов:

cp -r /usr/share/easy-rsa/* .

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

и приведем его к следующему виду:

export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»Sankt-Petersburg»
export KEY_CITY=»Sankt-Petersburg»
export KEY_ORG=»DMOSK COMPANY»
export KEY_EMAIL=»master@dmosk.ru»
export KEY_CN=»DMOSK»
export KEY_OU=»DMOSK»
export KEY_NAME=»name-openvpn-server.dmosk.ru»
export KEY_ALTNAMES=»name-openvpn-server»

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.

Запускаем отредактированный файл на исполнение:

Если скрипт выполнится без ошибок, мы увидим следующее:

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Почистим каталог от старых сертификатов:

Генерируем сертификат корневого центра:

на все запросы нажимаем Enter, так как всю верную информацию мы ввели в файле vars.

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

openvpn —genkey —secret keys/ta.key

Копируем каталог с созданными сертификатами и ключами в /etc/openvpn:

cp -r keys /etc/openvpn/

Настройка OpenVPN-сервера

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

И вставляем в него следующее:

local 192.168.0.15
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo

  • local — IP-адрес, на котором будет обрабатывать запросы OpenVPN;
  • port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1723).
  • proto — используемый транспортный протокол.
  • dev — виртуальный сетевой адаптер, который будет создан для работы OpenVPN.
  • ca — путь до сертификата корневого центра сертификации.
  • cert — путь до открытого сертификата сервера.
  • key — путь до закрытого сертификата сервера.
  • dh — путь до ключа Диффи — Хеллмана.
  • tls-auth — путь до tls-ключа.
  • server — задаем IP-адрес сервера в сети VPN.
  • ifconfig-pool-persist — путь к файлу для хранения клиентских IP-адресов.
  • keepalive X Y — каждые X секунд отправляется ping-запрос на удаленный узел. Если за Y секунд не получено ответа — перезапускать туннель.
  • max-clients — максимум одновременных подключений.
  • persist-key — не перезагружать ключи при повторной загрузки из-за разрыва соединения.
  • persist-tun — не изменять устройства tun/tap при перезапуске сервера.
  • status — путь до журнала статусов.
  • log-append — путь до файла лога с дополнительным выводом информации.
  • verb — уровень логирования событий. От 0 до 9.
  • mute — ограничение количества подряд отправляемых в лог событий.
  • daemon — работа в режиме демона.
  • mode — в каком режиме работает openvpn (сервер или клиент).
  • tls-server — указывает, что данный сервер работает с использованием TLS.
  • comp-lzo — использовать сжатие.

Создадим каталог для логов:

Разрешаем автоматический старт сервиса vpn:

Содержание

Просьба к редакторам тоже там отписываться

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.

Варианты применения данной статьи

Исходные данные

Локальная сеть 1

Локальная сеть 2

Настройка OpenVPN

И на сервере и на клиенте ставим один и тот же пакет.

Создание сервера

Создание ключей и сертификатов

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

Редактируем файл переменных

Здесь можно заполнить например так:

копируем конфиг openssl

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

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

Создаем ключ сервера

В конце соглашаемся с запросом на подпись и добавление сертификата в базу.

Создаем ключ Диффи-Хеллмана

Cоздаем ключ для tls-аутификации

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

Создадим директорию для клиентских конфигов

Можно запускать наш сервер OpenVPN

Смотрим список интерфейсов

Если среди прочих видим

значит VPN-сервер завелся. Если нет, то смотрим лог

Настройка маршрутизации на стороне сервера

Если сервер имеет «белый» IP то никакой маршрутизации на стороне сервера настраивать не нужно. Если сервер находится в локальной сети за NAT роутера то необходимо настроить маршрутизацию.
Для того, чтобы клиенты могли достучаться до сервера нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1) , клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера). Кроме того устройствам в локальной сети нужно сообщить, что для доступа к сети за OpenVPN-сервером нужно обращаться к нему. Но проще задать этот маршрут на роутере, который обслуживает локалку.

Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client

Включаем ipv4_forwarding

В /etc/sysctl.conf расскомментируем #net.ipv4.ip_forward=1 после чего

Создание клиента

Создание ключей и сертификатов

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

Создаем ключ клиента

Если хотим защитить ключ паролем, то генерируем его другой командой

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

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

/etc/openvpn/client.conf

Можно запускать наш клиент OpenVPN

Настройка маршрутизации на стороне клиента

Машина с openvpn уже готова работать с сервером в чём можно убедится

Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.

Включаем ipv4_forwarding

Также как в случае с сервером.

Настройка выхода в интернет с IP сервера

Настройки сервера

Если же вы хотите организовать доступ из VPN сети в интернет с IP адреса сервера, то вам нужно настроить на сервере NAT. Сделать это можно следующей командой (на сервере):

Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.

Для того что бы настройки iptables сохранились после перезагрузки нужно их дополнительно сохранить:

Настройки клиента

К конфиге клиента client.conf нужно добавить строчку

Отзыв сертификата

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

Скрипт revoke-full создаст CRL-файл (certificate revocation list, список отозванных сертификатов) с именем crl.pem в подкаталоге keys. Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в /etc/openvpn, туда и копируем.

Отключение автозапуска OpenVPN

Тест производительности OpenVPN

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

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

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Установка и настройка OpenVPN в Linux

VPN – Virtual Private Network, т. е. защищённая частная сеть, которая объединяет в себе несколько разных сетей, соединённых через Интернет. OpenVPN – это свободная реализация этой технологии. Сети VPN удобны тем, что позволяют получить доступ к частным сетям из любой точки в сети Интернет верифицированным клиентам. Многие организации таким образом строят свои локальные или интрасети, когда их офисы (сервера и компьютеры) расположены далеко (даже на разных континентах) друг от друга. Это единственный вариант в такой ситуации поскольку аренда выделенного физического канала связи (кабели по дну моря например) — слишком дорогое удовольствие. Таким образом сотрудники могут подключаться к сети своей организации из дома или из любой другой точки, имея только доступ в интернет и специальный ключ. Именно с помощью ключей шифрования организуется туннели связи, объединяющие разные сети в одну защищённую VPN-структуру.

Что для этого нужно?

Настройка OpenVPN требует наличия следующих компонентов:

  • несколько компьютеров-клиентов для организации, собственно, инфраструктуры сети VPN;
  • OpenVPN на всех компьютерах-клиентах;
  • Easy-RSA – для организации центров сертификации и работы с ключами, также на всех компьютерах;
  • корректно настроенный центр сертификации.

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

Установка ПО

Это, пожалуй самый простой этап. Здесь достаточно воспользоваться менеджером пакетов или системой управления пакетами (СУП) для установки требуемых пакетов ПО. Для любого из популярных дистрибутивов Linux они доступны из стандартный репозиториев. Например, для Ubuntu 18.04:

В зависимости от используемого дистрибутива наименования пакетов могут различаться. Оба пакета нужно устанавливать и на сервере, и у клиентов.

Организация центра сертификации

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

ЦС будет находиться в каталоге /etc/openvpn/easy-rsa . Вообще, ЦС можно разместить где угодно. Также необходимо скопировать в хранилище конфигурационные скрипты Easy-RSA:

Теперь необходимо развернуть сам ЦС в каталоге /etc/openvpn/easy-rsa . Для этого следует выполнить в нём некоторые скрипты (которые ранее были сюда скопированы) для создания инфраструктуры для работы ЦС:

Для удобства командная консоль была переведена в «суперпользовательский» режим командой sudo -i. Вторая команда устанавливает все необходимые переменные окружения. Третья команда проверяет, существует ли каталог keys/ и если его нет, то создаёт его. Если он существует, то производится очистка его содержимого. Далее устанавливаются необходимые режимы доступа. Четвёртая команда помещает в keys/ серверные ключи и сертификаты по-умолчанию.

Генерация и настройка ключей клиентов

На данном этапе нужно произвести похожие настройки для Easy-RSA на клиентских машинах, с той лишь разницей, что генерировать ключи нужно на основе главного сертификата серверной машины, на которой работает OpenVPN-сервер. Главный сертификат нужно скопировать на клиентские машины. Но для начала следует создать инфраструктуру клиентского окружения для работы с ключами:

Далее, нужно скопировать главный сертификат сервера (файл *.crt) на все клиентские компьютеры. Для этого удобно использовать утилиту scp:

Далее можно создавать (генерировать) клиентские ключи, используя скопированный с сервера сертификат. Для этого на клиентском компьютере в каталоге /etc/openvpn/easy-rsa нужно выполнить следующие команды:

Важно понимать, что для того, чтобы генерация клиентских ключей была возможной, необходимо, чтобы серверный сертификат находился в каталоге keys/ у клиентов. Сгенерированные в результате клиентские ключи позволяют подключаться к серверу OpenVPN. Однако, для того, чтобы сервер их принимал и предоставлял доступ к VPN-сети, необходимо, чтобы эти ключи (файлы *.csr) были подписаны на самом сервере. Можно также, используя SCP, отправить их на сервер:

$ scp /etc/openvpn/easy-rsa/keys/John.csr username@host:

Теперь, на сервере, предварительно перейдя в каталог /etc/openvpn/easy-rsa , можно выполнить подпись переданного ключа John.csr:

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

На этом организация инфраструктуры для работы с ключами (и сертификатами) завершена. Теперь этого достаточно, чтобы сервер OpenVPN и клиенты установили защищённую связь. Однако необходимо ещё произвести некоторые настройки самой системы OpenVPN.
Также, если планируется для более надёжной защиты использовать TLS-шифрование, то на стороне сервера всё в том же в каталоге /etc/openvpn/easy-rsa выполнить команду:

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

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

Для более удобного задания конфигурации существуют файлы-шаблоны, доступные в /usr/share/doc/openvpn/examples/sample-config-files/ . На их основе можно относительно быстро сконфигурировать целый сервер OpenVPN или его клиент:

Эта команда (точнее конвейер команд) извлечёт и архива server.conf.gz текстовые данные и создаст из них конфигурационный файл server.conf с базовыми настройками работы OpenVPN-сервера. Теперь нужно задать, собственно, актуальные опции. Протокол и номер порта:

Серверные ключи и сертификаты из каталога /etc/openvpn/easy-rsa/keys также необходимо определить в конфигурации:

Также нужно указать диапазон VPN-сети:

Эта запись определяет адрес самого OpenVPN-сервера (10.8.0.0), а также маску его сети. В итоге рабочая конфигурация должна выглядеть следующим образом:

Теперь можно сохранить файл server.conf. Настройка сервера OpenVPN завершена. Далее нужно выполнить его запуск с помощью команды openvpn, указав соответствующий конфигурационный файл:

Настройка клиентов OpenVPN

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

Для клиента может быть задано несколько конфигурационных файлов для подключения к разным серверам OpenVPN. Ключевыми параметрами для клиентской конфигурации являются remote, ca, cert, а также key:

Здесь remote задаёт IP-адрес сервера OpenVPN в Интернет, а также порт подключения, который должен совпадать с тем, что указан в серверной конфигурации. Параметр ca – это серверный сертификат, а cert – созданный на его основе ключ John.csr, а теперь подписанный сертификат John.crt. Параметр key – это закрытый ключ клиента. Следует отметить, что именно при помощи параметров cert и key обеспечивается подключение клиентов к сети VPN.
Готовая рабочая клиентская конфигурация будет следующей:

Теперь можно запускать OpenVPN на клиентском компьютере:

После этого, если всё настроено правильно, клиенты подключатся к VPN. Но на этом ещё не всё. Необходимо настроить перенаправление для туннеля VPN, чтобы пользователи могли направлять и получать через него трафик. Для начала необходимо разрешить серверу пропускать пакеты:

Затем разрешить всем подключаться к серверу OpenVPN:

Ну а также разрешить клиентам доступ в интернет через туннель:

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

Заключение

В заключение необходимо отметить, что настройка сети VPN – довольно трудоёмкое и ответственное занятие. Особое внимание здесь нужно уделять организации ЦС, распространению ключей и сертификатов, а также форвардингу пакетов. Поэтому для таких задач очень важно иметь хорошую квалификацию по администрированию сетей. Также стоит учитывать, что была рассмотрена настройка OpenVPN для систем Ubuntu, однако принципиальной разницы для других дистрибутивов нет.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка и настройка OpenVPN для Ubuntu

В данной статье будет подробно описана установка и настройка консольного клиента OpenVPN OpenVPN в Ubuntu.

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

Установка и настройка клиента OpenVPN.

Для настройки клиента OpenVPN на Ubuntu (в примере использовалась Ubuntu 16.04) нам понадобится тот же пакет, что и для установки сервера.

Соответственно, все команды мы будем выполнять на клиенте (например, на домашнем ПК).

Выполните в консоли:

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

Сначала измените значение параметра remote на IP вашего сервера. Если вы по каким-либо причинам изменили номер порта, впишите соответствующее значение вместо стандартного 1194.

Раскомментируйте следующие строки так же, как делали это на сервере:

Далее найдите блок, начинающийся с # SSL/TLS params. Внизу этого блока укажите пути к файлам ключей и сертификатов таким образом:

Имена второго и третьего файлов могут быть другими — в зависимости от того, как вы назвали клиентский сертификат и ключ на первом этапе.

Еще ниже замените строку:

В следующем блоке замените:

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

Скачаем с сервера файлы ключей и сертификатов и разместим их в той директории, которую мы указали выше.

Потребуется ввести пароль пользователя вашего сервера. Возможно, потребуется подтвердить согласие на подключение — для этого введите «yes». Далее тем же способом получим еще два файла:

Перезапустите сервис openvpn:

Для единоразового подключения используйте команду:

После перезагрузки соединение должно устанавливаться автоматически.

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

В случае проблем первым делом проверьте логи:

Если информации о проблеме в выводе команды нет, попробуйте увеличить значение параметра verb в самом конце файла /etc/openvpn/client.conf, чтобы сделать логи более подробными. Максимальное значение — 11. После этого снова перезапустите сервис openvpn и проверьте логи еще раз.

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

Если соединение слишком медленное, попробуйте добавить в файлы конфигурации клиента и сервера (в моей серии статей это etc/openvpn/client.conf и etc/openvpn/server.conf соответственно) строки:

Не забудьте добавить эти же строки в файлы конфигурации остальных клиентов, если они есть. И сервер, и клиенты нужно будет перезапустить.

Можно также попробовать отключить сжатие трафика, после чего сравнить результаты и оставить лучший вариант. Для этого и в /etc/openvpn/server.conf, и в /etc/openvpn/client.conf нужно закомментировать (поставить «;» в начале строки) параметр comp-lzo.

Обратите внимание: состояние этой и многих других директив на сервере и клиентах должно быть одинаковым!

В начале цикла статей об OpenVPN я уже упоминал, что защита, которую дает это ПО, хороша, но не абсолютна. Один из способов повысить ее эффективность — скрыть сам факт использования OpenVPN. Если будет достаточное количество желающих, я расскажу, как это сделать.

Установка и первичная настройка OpenVPN на Ubuntu 16.04

Введение

Перед большинством системных администраторов встают такие задачи как объединение удаленных офисов в единую сеть, а также обеспечение удаленного доступа сотрудников к различным ресурсам сети. Основными требованиями являются простота и скорость настройки, а также безопасность и бесперебойность работы. Немаловажным фактором также является кроссплатформенность — возможность подключаться с разных устройств и разных операционных систем. Все это можно легко реализовать с помощью OpenVPN. Однажды настроенный сервер OpenVPN будет работать годами и полностью удовлетворять требованиям безопасности.

OpenVPN легко настроить и легко использовать на любых компьютерах и мобильных устройствах — клиенты есть для Windows, Linux, MacOS, iOS и Android. В зависимости от настройки можно даже использовать его для обеспечения безопасности при Web-серфинге с публичных Wi-Fi точек и мобильных соединений. Также его можно использовать для обеспечения анонимности и смены собственного IP-адреса на IP-адрес удаленного сервера. Возможность использования AES-шифрования соединений позволяет обеспечить конфиденциальность передаваемых данных и делает бесполезным перехват трафика. Злоумышленник просто не сможет его расшифровать и использовать в своих целях.

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

Вначале создаем сервер VScale с любой конфигурацией и операционной системой Ubuntu 16.04 Через несколько секунд можно подключиться к нему любым SSH-клиентом.

Сменим пароль суперпользователя root

Обновим источники приложений и операционную систему до актуального состояния

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

Переходим в каталог с утилитой и подготавливаем переменные для генерации сертификатов

Задаем переменную длины ключа:

Это стандартное значение. Если требуется повышенная безопасность, то можно установить значение 2048. Однако следует помнить, что нагрузка на сервер будет изменяться пропорционально этому значению.

Остальные параметры заполняются в соответствие с вашими пожеланиями, например

Включаем использование наших переменных

Очищаем папку с ключами

Генерируем корневой сертификат. В процессе генерации утилита будет использовать уже указанные нами данные в переменных, поэтому нажимаем Enter на все вопросы.

Генерируем таким же образом сертификат сервера. Отвечаем Y на запрос о подписывании сертификата.

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

Генерируем ключ Диффи-Хеллмана:

В результате в папке /usr/share/easy-rsa/keys у нас теперь лежат наши сертификаты и ключи.

Копируем все наши сгенерированные сертификаты и ключи:

Приступаем к конфигурированию сервера. В этом примере мы сконфигурируем сервер таким образом, чтобы при подключении к нему с любого устройства весь интернет-трафик заворачивался в туннель и таким образом сменим собственный IP-адрес на IP-адрес нашего сервера VScale.

Вносим в него следующие строки:

Сохраняем конфигурационный файл и проделаем еще несколько простых действий. Вначале следует разрешить форвардинг пакетов, для этого отредактируем /etc/sysctl.conf

и убираем символ “#”. Затем сохраняем файл. Но для того, чтобы через наш туннель можно было бы ходить в интернет на сервере нужно включить механизм NAT — трансляции сетевых адресов. Для этого воспользуемся iptables. ens3, в нашем примере, это внешний интерфейс сервера.

Чтобы созданное нами правило пропуска трафика не удалилось после перезагрузки сервера установим пакет iptables-persistent:

При установке на вопрос о сохранении текущих правил IPv4 отвечаем утвердительно. Теперь перезагружаем сервер и проверяем, что OpenVPN успешно запущен:

Приступаем к настройке со стороны клиента. Вне зависимости от используемой операционной системы нам всего лишь требуется четыре файла: корневой сертификат сервера (ca.crt), персональный сертификат клиента и соответствующий ему ключ (macbook.crt и macbook.key), а также конфигурационный файл для клиента. Первые три файла у нас уже есть на сервере в папке /etc/openvpn/keys — их можно легко скачать с сервера с помощью SFTP. А вот конфигурационный файл нам нужно создать вручную. Создаем на компьютере-клиенте отдельную папку и помещаем туда сертификаты. Затем создаем конфиг для клиента с любым именем и расширением ovpn:

Сохраняем файл и устанавливаем клиентское приложение. Вариантов множество — для Windows и Linux лучше использовать официальное приложение, которое можно скачать по ссылке https://openvpn.net/index.php/open-source/downloads.html

Пользователи MacOS могут воспользоваться прекрасной бесплатной программой TunnelBlick, которую можно скачать на сайте разработчика— https://tunnelblick.net/downloads.html

После установки клиента для Windows достаточно лишь скопировать конфигурационный файл и сертификаты в папку C:Program FilesOpenVPNconfig и запустить подключение. Пользователи Linux могут использовать Network Manager для создания нового VPN-соединения и указания пути к конфигурационному файлу. В случае MacOS с установленным TunnelBlick — достаточно двойного клика по ovpn-файлу и система сама импортирует новый профиль соединения.

Заключение

После успешного подключения интернет-трафик клиента будет заворачиваться в шифрованный туннель, а IP-адрес изменится на IP-адрес сервера VScale. Приятной работы!

Записки программиста

Установки и настройка OpenVPN в Ubuntu Linux за 5 минут

Постоянные читатели этого блога, скорее всего, уже пару-тройку раз в своей жизни настраивали OpenVPN. Но думается, что новичкам данная заметка будет интересна и полезна. Из нее вы узнаете, как за пять минут поднять собственный VPN сервер, а также зачем он, собственно, нужен. Ну хорошо, учитывая время на регистрацию в каком-нибудь Amazon’е, DigitalOcean, Vscale.io или FastVDS и оплату VDS, пожалуй, потребуется не пять минут, а «целых» пятнадцать.

Итак, зачем же кому-то ходить в сеть через VPN? На то есть целый ряд причин. Например, чтобы ваши пароли, передаваемые по HTTP, не утекли, когда вы сидите с открытых WiFi точек неизвестного происхождения. Да и вообще, даже вашему обычному провайдеру не обязательно знать, на какие сайты вы ходите. Еще — чтобы не палить свой IP в IRC сетях и прочих сервисах, с которыми вы работаете. Им знать ваше местоположение тоже совсем ни к чему. Также вам может захотеться попробовать какой-нибудь новый сервис, который пока что недоступен для пользователей с российским IP. Кроме того, трафик между вами и VPN сервером не только шифруется, но и сжимается, что нередко может создать ощущение более быстрого интернета. Еще OpenVPN может быть полезен в ряде других случаев, например, для доступа сотрудников ко внутренним ресурсам компании, когда они не в офисе.

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

Чтобы поднять свой VPN, вам потребуется собственный сервер с Ubuntu Linux (или любым другим Linux/*BSD, но тогда вам будет довольно сложно следовать инструкциям данной заметки), а также права root’а на нем. Если сервер у вас уже есть, хорошо. Если нет, то не расстраивайтесь. В наши дни купить подходящий VDS/VPS можно за смешные 5$ в месяц или даже меньше. Компаний, предлагающих соответствующие услуги — десятки, некоторые были названы в начале заметки. Лично я рекомендую присмотреться к DigitalOcean. Но не поленитесь изучить вопрос самостоятельно, так как к моменту прочтения вами этих строк ситуация на рынке VDS может измениться.

Заходим на сервер, становимся root’ом, говорим:

Раньше в OpenVPN входила утилита под названием easy-rsa, предназначенная для генерации ключей и сертификатов. Начиная с версии 2.3 эту утилиту из пакета выпилили, поэтому придется скачать и собрать ее самостоятельно:

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

Выполнение последней команды может занять несколько минут.

Переносим полученные ключи и сертификаты в каталог /etc/openvpn/:

В том же каталоге создаем файл server.conf:

Попробуем запустить OpenVPN. При запуске от вас будет требоваться ввести пароль. Соответственно, после ребута поднимать OpenVPN придется руками. Но поскольку мы настраиваем персональный VPN, вряд ли это представляет собой бОльшую проблему, чем ключи, лежащие в открытом виде, или еще хуже — сохраненные пароли. Запускаем:

Сервер должен слушать порт 1194. Если это не так, курим /var/log/syslog.

Теперь что касается клиентской стороны. Нам понадобятся файлы client1.crt, client1.key и ca.crt:

Создадим файл client.conf:

client
proto tcp
dev tun
# . замените на настоящий ip адрес сервера
remote 123.45.67.89 1194

# следующие две строчки актуальны только для *nix систем
# на практике они не очень удобны, так как OpenVPN не сможет
# нормально все за собой почистить по завершению работы

# user nobody
# group nogroup

persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
comp-lzo
verb 3

Подрубаемся к серверу, внимательно читаем логи:

В соседнем терминале говорим:

Если все было сделано правильно, вы обнаружите, что пинги успешно доходят до 10.128.0.1 (первая команда), но пакеты через него никуда не проходят (вторая команда). Это потому что мы забыли настроить на сервере NAT. Что мне лично кажется странным. Я смутно припоминаю, что когда в свое время я поднимал OpenVPN на FreeBSD, подобного шага не требовалось. Впрочем, я могу и ошибаться.

На сервере открываем файл /etc/sysctl.conf и раскомментируем в нем строчку:

Чтобы не пришлось перезагружаться, говорим:

… где 123.45.67.89 — это IP сервера. Переподключаемся клиентом, попробуем зайти на какие-нибудь 2ip.ru или eax.me/ip — теперь все должно работать. Если это не так, курим логи. Если все ОК, сохраняем правила фаервола на сервере:

… и проверяем, что в файле /etc/network/interfaces есть строчка:

Сервер OpenVPN, разумеется, придется перезапустить руками.

Осталось сделать последний штрих на клиенте. Дело в том, что (1) запускать openvpn в отдельном терминале и следить, не упал ли он там, неудобно. Кроме того, (2) если на клиенте сказать:

… где 192.168.0.1 — DNS вашего провайдера (выводится утилитой nm-tool), вы обнаружите, что резолвинг доменов сломался, а следовательно клиент все еще использует DNS провайдера. Можно убить двух зайцев, сказав:

… и настроив VPN через NetworkManager (иконку сети в правом верхнем углу Unity). Делается это несложно, фактически нужно повторить текстовый конфиг клиента при помощи галочек и полей ввода. Понять, какая галочка какой строчке в конфиге соответствует, очень легко. Главное — не полениться залезть во всякие продвинутые свойства сети и прочие разделы настроек. Если же вы где-то ошибетесь, проблему можно с легкостью диагностировать при помощи файла /var/log/syslog.

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

Дополнение: Я столкнулся с такой проблемой, что OpenVPN не переподключался к серверу после выхода ноутбука из спящего режима. Исправить ситуацию помогла команда sudo pkill —signal SIGHUP —exact openvpn , выполняемая сразу после выходя из спящего режима. Для этого соответствующая команда была дописана в скрипт, который я использую для входа в спящий режим, откуда она вызывается с небольшой задержкой. Чтобы это работало, у пользователя должно быть право говорить sudo без пароля. Кроме того, в конфиге сервера OpenVPN мне пришлось убрать параметр keepalive , а в клиентском конфиге добавить ping-restart 0 .

Дополнение: Вы можете держать OpenVPN и веб-серер (например, Nginx) на одном порту. Для этого веб-сервер должен слушать, к примеру, 127.0.0.1:4443, а у OpenVPN в конфиге следом за port 443 нужно написать port-share 127.0.0.1 4443 . Конкретно порт 443 интересен тем, что на нем обычно живет HTTPS. Поэтому интернет-провайдеры редко режут или как-то модифицируют трафик, идущий на этот порт. Если держать VPN на другом порту, он может оказаться недоступен по Wi-Fi в каком-нибудь кафе или аэропорте.

Дополнение: Вас также могут заинтересовать статьи, посвященные sshuttle и Tor. А из поста про роутер на базе Raspberry Pi вы узнаете, как можно завернуть в VPN сетевой трафик сразу всех ваших устройств.

В этом руководстве вы настроите сервер OpenVPN на сервере Ubuntu 18.04, а затем настроите доступ к нему из Windows, macOS, iOS и / или Android. В этом руководстве все этапы установки и настройки будут максимально простыми для каждой из этих установок.

Шаг 1 — Установка OpenVPN и EasyRSA

Для начала обновите индекс пакетов вашего VPN-сервера и установите OpenVPN. OpenVPN доступен в репозиториях Ubuntu по умолчанию, поэтому вы можете использовать его apt для установки:

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

Как упоминалось в предварительных условиях, мы будем строить ЦС на отдельном сервере. Причина такого подхода заключается в том, что если злоумышленник сможет проникнуть на ваш сервер, он сможет получить доступ к вашему секретному ключу CA и использовать его для подписи новых сертификатов, предоставляя им доступ к вашей VPN. Соответственно, управление ЦС с автономного компьютера помогает предотвратить доступ неавторизованных пользователей к вашей VPN. Также обратите внимание, что рекомендуется держать CA-сервер выключенным, когда он не используется для подписи ключей, в качестве дополнительной меры предосторожности.

Чтобы приступить к созданию инфраструктуры CA и PKI, wget загрузите последнюю версию EasyRSA как на своем компьютере CA, так и на сервере OpenVPN . Чтобы получить последнюю версию, перейдите на страницу « Релизы» официального проекта EasyRSA GitHub , скопируйте ссылку на скачивание для файла, оканчивающегося на .tgz, и вставьте его в следующую команду:

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

Шаг 2 — Конфигурирование переменных EasyRSA и построение CA

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

После этого easyrsaснова вызовите скрипт, следуя за ним с build-caопцией. Это создаст ЦС и создаст два важных файла — ca.crtи ca.key- которые составляют открытую и закрытую стороны сертификата SSL.

  • ca.crtэто файл открытого сертификата CA, который в контексте OpenVPN сервер и клиент используют для информирования друг друга о том, что они являются частью одной и той же сети доверия, а не того, кто выполняет атаку «человек посередине». По этой причине вашему серверу и всем вашим клиентам потребуется копия ca.crtфайла.
  • ca.keyэто закрытый ключ, который машина CA использует для подписи ключей и сертификатов для серверов и клиентов. Если злоумышленник получит доступ к вашему ЦС и, в свою очередь, к вашему ca.keyфайлу, он сможет подписывать запросы на сертификаты и получать доступ к вашему VPN, нарушая его безопасность. Вот почему ваш ca.keyфайл должен быть только на вашем компьютере CA, и в идеале ваш компьютер CA должен оставаться в автономном режиме, если не подписывает запросы на сертификат в качестве дополнительной меры безопасности.

Общее имя — это имя, используемое для ссылки на этот компьютер в контексте центра сертификации. Вы можете ввести любую строку символов для общего имени ЦС, но для простоты нажмите, ENTER чтобы принять имя по умолчанию.

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

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

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

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

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

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

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

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

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

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

Изменения, которые вы внесли в server.conf файл примера до этого момента, необходимы для функционирования OpenVPN. Изменения, описанные ниже, являются необязательными, хотя они также необходимы для многих общих случаев использования.

Шаг 6 — Настройка сетевой конфигурации сервера

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

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

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

Настройка OpenVPN на Ubuntu: серверная часть

Введение

VPN — виртуальная частная сеть, которая позволяет обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет ).

В нашем случае мы рассмотрим создание надежной и защищенной сети VPN на основе ненадежной сети Интернет при помощи продукта OpenVPN в рамках операционной системы Ubuntu 16.04.

OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном , без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL ( https://ru.wikipedia.org/wiki/OpenVPN ).

Установка необходимых пакетов

Команды будем выполнять от суперпользователя.

Приступим к установке ПО:

easy-rsa — программа которая служит для создания и ведения инфраструктуры открытых ключей (PKI) в командной строке (CLI). В нашем случае мы будем использовать ее для выполнения действий с ключами и сертификатами, необходимыми для работы OpenVPN .

Демон OpenVPN будет работать у нас от имени непривилегированного пользователя openvpn. Добавим его:

Создание инфраструктуры открытых ключей (PKI)

Далее займемся созданием ключей и сертификатов при помощи easy-rsa. Скопируем необходимые файлы в /etc/openvpn/ и перейдем в эту директорию:

Далее для удобства создания сертификатов в /etc/openvpn/easy-rsa/vars изменим следующие строки:

Производить работу с текстовыми файлами вы можете, используя удобные Вам текстовые редакторы (например, vi или nano).

  • 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» # Отдел в компании

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

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

и удалить существующие ключи:

Приступаем к созданию удостоверяющего центра (CA):

В ходе установки Вам потребуется проверить корректность данных, используемых для запроса на создание сертификата (certificate request). Если Вы предварительно изменили значения переменных в /etc/openvpn/easy-rsa/vars, то Вам достаточно будет просто нажимать Enter. Также, по желанию, Вы сможете указать пароль, который будет защищать приватный ключ удостоверяющего центра. Хорошо запомните его или запишите в надежном месте!

Аналогичным образом создаем остальные ключи и сертификаты.

Сертификат сервера OpenVPN, где «server» — имя сервера:

Ключ Диффи-Хеллмана служит для использования одноименного криптографического протокола, который позволяет двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи (создание ключа может занимать от нескольких секунд до нескольких минут, не прерывайте процесс):

Ключ клиента, где «user_1» — имя клиента:

Ключ HMAC для дополнительной защиты от DoS-атак и флуда:

Сертификаты с ключами будут помещаться в директорию /etc/openvpn/easy-rsa/keys:

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

Установка и настройка OpenVPN для Ubuntu

Технология VPN хорошо известна как способ безопасного доступа к закрытым ресурсам компаний, а также различному контенту, будь то аудио, видео или архивные документы. Она позволяет создать приватную сеть, перенаправляя документы на один компьютер ресурсами другого или нескольких. Virtual Private Network широко используется во всех современных браузерах. Без неё редко обходится удалённая работа сотрудника крупной и важной организации. Настройка OpenVPN Ubuntu актуальна не только для технических специалистов и поборников высокой безопасности, но и всех тех, кто не желает мириться с высокой стоимостью лицензионного контента в странах, где доступ к нему ограничен.

В Linux настройка виртуальных сетей тонкая.

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

Установка OpenVPN — это применение свободно распространяемой технологии виртуальных частных сетей. Она возможна как в Windows, так и в Linux-образных ОС. Поскольку в среде Linux тонкая настройка всех параметров этой функции проще, мы рассмотрим именно её. Тема Виртуальных Частных сетей широко освещается на множестве тематических сайтов и форумов, благодаря чему приобщится к ней смогли как профессионалы, так и новые приверженцы технологий безопасности во всём мире. Установка OpenVPN Ubuntu позволяет не только повысить уровень сохранности личных данных, но и правильно организовать свою деятельность в сети.

Зачем использовать именно ВПН, а не другие способы защиты личной информации? Этот способ достаточно настроить лишь однажды. Все данные будут автоматически проходить через сервер частной сети, сразу в зашифрованном виде.

Что нужно знать в теории?

OpenVPN — это достаточно функциональное, быстрое и гибкое ПО, которое позволяет работать с SSL VPN. Оно обладает открытым исходным кодом. Это значит, что каждый желающий может использовать его возможности по отдельности, а также модифицировать код программы для собственных нужд.

На деле такая технология предлагает использование небезопасных сетей так, как если бы они обладали мощной защитой. Это будет очень актуально, если:

  1. Вы используете для доступа в интернет-соединение со слабой защитой.
  2. В месте вашего пребывания действует цензура на доступ к информации.
  3. Вы находитесь в месте с точками доступа Wi-Fi для общественного пользования.
  4. Вам нужно хорошо скрыть своё местонахождение от других пользователей сети.
  5. Вы хотите ещё лучше защитить свои личные данные и пароли.

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

Базовые понятия

Туннель — это безопасное, защищённое соединение, которое использует ресурсы небезопасной сети (в этом случае интернета), и позволяет обмениваться информацией по частному каналу, настроенному только на доверенные устройства.

Клиент — это программа, которая устанавливается на оборудование, где нужно обеспечить канал обмена данными сервером. Этот канал обладает защитой.

Сервер — компьютер или место, где хранятся учётные записи пользователей виртуальной частной сети. Использование сервера позволяет ускорить работу программ и уменьшить трафик (объём передаваемых данных).

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

Переходим к практике

Чтобы выполнить настройку своего сервера OpenVPN Ubuntu, потребуется приобрести свой сервер с установленной Ubuntu Linux. На нём необходимо получить права root. В настоящее время приобрести решение можно по невысокой цене, а количество компаний, которые предлагают такие услуги — всё больше. Сама по себе установка OpenVPN Ubuntu не потребует значительных затрат времени.

Приступаем к установке и настройке

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

Эти инструкции начнут установку OpenVPN. Далее необходимо установить и подготовить к работе утилиту для создания ключей и сертификатов:

«cd /tmp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
apt-get install unzip
unzip master.zip
cd easy-rsa-master
./build/build-dist.sh
tar xvzf ./EasyRSA-git-development.tgz
cd EasyRSA-git-development»

Далее нужно провести генерацию ключей и сертификатов:

«./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-full server
./easyrsa build-client-full client1
./easyrsa gen-dh»

После генерации необходимо перенести полученные данные в /etc/openvpn/:

«mv ./pki/dh.pem /etc/openvpn/dh.pem
mv ./pki/private/client1.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client1.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/»

Создайте в том же каталоге файл server.conf с такими параметрами:

«mode server
dev tun
server 10.128.0.0 255.255.255.0
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
tls-server
ca ca.crt
cert server.crt
key server.key
dh dh.pem
proto tcp-server
port 1194
client-to-client
comp-lzo
keepalive 10 120
verb 4
cipher AES-256-CBC
user nobody
group nogroup
max-clients 10»

Далее необходимо ввести данные для клиентской стороны. Потребуется создать несколько новых файлов.

«mkdir vpn
cd vpn
scp vpn-server:/etc/openvpn/client1.crt ./
scp vpn-server:/etc/openvpn/client1.key ./
scp vpn-server:/etc/openvpn/ca.crt ./»

Здесь в строке remote требуется написать IP-адрес сервера так, как показано в примере.

«client
proto tcp
dev tun
remote 123.45.67.89 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
comp-lzo
verb 3»

Далее необходимо изучить log-файлы на сервере на предмет ошибок:

В соседнем окне терминала необходимо ввести команду:

Если всё было сделано правильно, вы обнаружите, что 10.128.0.1 успешно пингуется. Однако отправки пакетов получателю происходить не будет, так как на сервере не настроен NAT. Нам ещё потребуется выполнить этот шаг.

На сервере необходимо открыть файл с названием /etc/sysctl.conf и убрать знаки комментария со строки «net.ipv4.ip_forward=1», сделав её активной.

Далее вы можете перезагрузить компьютер, или ввести строку:

Затем необходимо ввести:

«iptables -A FORWARD -s 10.128.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.128.0.0/24 -m state
—state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.128.0.0/24
-j SNAT —to-source (адрес сервера)»

Далее, попробуйте перейти на сервис проверки IP. Если всё прошло удачно, сохраните правила на сервере:

Установка OpenVPN сервера на Ubuntu Linux для подключения клиентов Mikrotik. Часть 1. Настройка сервера OpenVPN

Доброго времени суток!
Сегодня речь пойдет о необычной установке сервера OpenVPN. Необычная она тем, что клиентские части будут реализованы не на Linux и даже не на Windows, а на Mikrotik OVPN-client (на аппаратных устройствах Mikrotik). Сразу необходимо ответить, что данная конфигурация сервера OpenVPN может работать в среде гетерогенных сетей, что является непосредственным преимуществом при изобилии используемых устройств, как программных так и аппаратных. Так как статья вышла довольно-таки обширной, было решено разбить её на 2 части:

  1. Выделенный «белый» ip-адрес
  2. Привязанное к нему доменное имя (по желанию)
  3. Сервер под управлением ОС Ubuntu Linux
  1. Установить серверную часть OpenVPN на сервер
  2. Сгенирировать сертификат пользователя для подключения к серверу
  3. Настроить на устройстве Microtik OVPN-client
  4. Установить соединение с сервером

Установка и настройка сервера будет производиться под суперпользователем root, но для вашего удобства, в каждой команде будет добавлена команда sudo. Итак, начнем:

Сперва обновим репозитории и установленные пакеты:

Затем установим сервер OpenVPN и набор скриптов для генерации самоподписанных сертификатов:

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

Далее начинаем редактировать данный файл:

В первую очередь, необходимо поменять сетевой протокол, на котором будет работать сервер openvpn, так как клиент ovpn на устройствах Mikrotic работает только через udp, на самом деле это не столь страшно, скорее это унификация, иными словами, клиенты на других ОС не будут испытывать трудностей при подключении, потому что, как правило они работают с любым из протоколов:

Далее сразу укажем путь к сертификатам и закрытому ключу, который разместим в директории keys по пути /etc/openvpn/

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

Теперь необходимо указать пул виртуальных ip-адресов, которые будут выдаваться клиентам, в нашем случае, это 10.1.2.0 с маской 24 (255.255.255.0)
Находим:

Комментируем и добавляем чуть ниже строку:

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

Если нужно, чтобы клиенты могли «видеть» друг друга, то находим строку:

и приводим ее к виду:

. ВНИМАНИЕ-ВАЖНО. Затем следует самое главное, нужно выбрать метод шифрования, есть только один вариант, который поддерживается клиентом ovpn Mikrotik, находим секцию:

и добавляем в конце 2 новые строки:

так как на Mikrotik не поддерживается компрессия lzo, на сервере ее необходимо отключить , путем комментирования строки:

И разкомментируем данные строки, чтобы получилось:

При желании можно указать путь до лог-файлов.

На этом настройка демона OpenVPN закончена. Сохраняем, закрываем:

Для работы OpenVPN требуются сертификат сервера и сертификаты клиентов, выпущенные одним сертификационным центром (Certification Authority или CA). Мы будем издавать так называемые «самоподписанные сертификаты» используя набор скриптов easy-rsa установленные на начальном этапе.

Далее создаем директорию, для хранения наших сертификатов:

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

И подставляем свои значения, например:

Сохраняем изменения и выходим.

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

в консоли должно появится что то вроде:

Переходим в директорию easy-rsa:

Затем инициализируем PKI (PKI — Public Key Infrastructure) — Инфраструктура открытых ключей — набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей:

в ответ будет выведено следующее:

Далее необходимо очистить нашу директорию от старых генераций, на случай если они были (лучше проделывать эту процедуру в любом случае):

Итак, создадим центр сертификации (Certification Authority или CA)

Далее просто соглашаемся со всем, для этого, достаточно при каждом запросе нажимать на кнопку Enter. Если Вы обратите внимание, то можете заметить, что переменные берутся из ранее отредактированного файла /etc/openvpn/easy-rsa/vars Данная команда запускается всего 1 раз, так как в нашем случае, CA всего один.

После этого, необходимо сгенерировать сертификат для самого сервера:

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

подтверждаем издание сертификата введя значение «y»

И также нажимаем Enter.

Далее утверждаем еще один запрос и также нажимаем Enter:

В случае удачной генерации, выведется следующее сообщение:

Теперь необходимо скопировать сгенерированный сертификат в корневую директорию OpenVPN:

После копирования, можете убедиться в наличии фалов в корневой директории:

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

теперь необходимо создать файл, для логирования всех сообщений сервера OpenVPN:

На этом, настройка серверной части завершена, можно попробовать запустит демон и проверить его статус:

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

Если же, с запуском возникли проблемы:

и тут же видим сообщения, например, если не создать директорию ccd, демон не запустится и будет ругаться на ее отсутствие:

Генерация сертификатов для клиентов.

Чтобы наши клиенты (устройства Mikrotik) могли подключаться к данному серверу, необходимо сгенирировать также для них клиентские сертификаты. Сертификаты должны быть названы на английском языке и без_пробелов, например artem, mikrotik1, client1 и т. д.:

переходим в директорию СА:

и запускаем генерацию:

Подтверждаем запросы нажатием Enter, как и в предыдущие разы и утверждаем 2 последних запроса вводом значения «y»

Сертификат пользователя client1 сгенерирован! Для использования его в Mikrotik, необходимо скопировать 2 файла на устройство. Каждый администратор может выбрать удобный для себя способ, мы рекомендуем использовать WinSCP. Для начала нужно подготовить эти 2 файла для транспортировки. Переходим в директорию keys и назначаем права:

Далее запускаем на Windows ранее скачанный WinSCP и создаем «новое подключение» до нашего OpenVPN сервера и нажимаем Login:

Если появится запрос на добавление сертификата, нажимаем утвердительно «Да» (Yes)

Далее появится привычный двухоконный файловый менеджер, здесь в правой части отображается сервер, а в левой ваша рабочая станция на Windows. В правой части,используя переход (..) перемещаемся в директорию /etc/openvpn/easy-rsa/keys:

и копируем 2 файла (client1.crt, client2.key) на наш ПК:

Теперь у вас есть файлы сертификата пользователя, их необходимо скопировать на устройство Mikrotik и настроить ovpn-клиент для подключения к серверу.

Ссылка на основную публикацию