Настройка OpenVPN на Windows и 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 на 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 в операционной системе на базе ядра Linux.

Устанавливаем OpenVPN в Linux

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

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

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

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

    Откройте меню и запустите консоль. Сделать это можно также путем нажатия комбинации клавиш Ctrl + Alt + T.

Пропишите команду sudo apt install openvpn easy-rsa для установки всех нужных репозиториев. После ввода нажмите на Enter.

Подтвердите добавление новых файлов, выбрав соответствующий вариант.

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

Шаг 2: Создание и настройка удостоверяющего центра

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

  1. Первоочередно создается папка для хранения всех ключей. Вы можете расположить ее где угодно, но лучше подобрать надежное место. Используйте для этого команду sudo mkdir /etc/openvpn/easy-rsa , где /etc/openvpn/easy-rsa — место для создания директории.

Далее в эту папку требуется поместить скрипты дополнения easy-rsa, а делается это через sudo cp -R /usr/share/easy-rsa /etc/openvpn/ .

В готовой директории создается удостоверяющий центр. Сначала перейдите в эту папку cd /etc/openvpn/easy-rsa/ .

Затем вставьте в поле следующую команду:

sudo -i
# source ./vars
# ./clean-all
# ./build-ca

Пока серверный компьютер можно оставить в покое и переместиться к клиентским устройствам.

Шаг 3: Конфигурация клиентских сертификатов

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

    Откройте консоль и напишите там команду sudo cp -R /usr/share/easy-rsa /etc/openvpn/ , чтобы скопировать все требуемые скрипты инструмента.

Ранее на серверном ПК был создан отдельный файл с сертификатом. Теперь его нужно скопировать и поместить в папку с остальными компонентами. Проще всего это сделать через команду sudo scp username@host:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys , где username@host — адрес оборудования, с которого производится скачивание.

Осталось только создать личный секретный ключ, чтобы в дальнейшем через него осуществлялось соединение. Сделайте это, перейдя в папку хранения скриптов cd /etc/openvpn/easy-rsa/ .

Для создания файла используйте команду:

sudo -i
# source ./vars
# build-req Lumpics

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

Осталось только отправить готовый ключ доступа на серверное устройство, чтобы подтвердить подлинность своего соединения. Делается это с помощью той же команды, через которую производилось скачивание. Вам нужно ввести scp /etc/openvpn/easy-rsa/keys/Lumpics.csr username@host:

/ , где username@host — имя компьютера для отправки, а Lumpics.csr — название файла с ключом.

На серверном ПК подтвердите ключ через ./sign-req

/Lumpics , где Lumpics — название файла. После этого верните документ обратно через sudo scp username@host:/home/Lumpics.crt /etc/openvpn/easy-rsa/keys .

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

Шаг 4: Настройка OpenVPN

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

    Сначала создайте файл конфигурации на серверном ПК с помощью команды zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf . При конфигурации клиентских устройств этот файл также придется создавать отдельно.

Ознакомьтесь со стандартными значениями. Как видите, порт и протокол совпадает со стандартными, однако отсутствуют дополнительные параметры.

Запустите созданный конфигурационный файл через редактор sudo nano /etc/openvpn/server.conf .

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

port 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

После завершения всех изменений сохраните настройки и закройте файл.

Работа с серверной частью завершена. Запустите OpenVPN через созданный конфигурационный файл openvpn /etc/openvpn/server.conf .

Теперь приступим к клиентским устройствам. Как уже было сказано, здесь тоже создается файл настроек, но на этот раз он не распаковывается, поэтому команда имеет следующий вид: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf .

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

client
dev tun
proto udp
remote 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verb 3 .

По завершении редактирования запустите OpenVPN: openvpn /etc/openvpn/client.conf .
Пропишите команду ifconfig , чтобы удостовериться в работе системы. Среди всех показанных значений обязательно должен присутствовать интерфейс tun0.

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

sysctl -w net.ipv4.ip_forward=1
iptables -A INPUT -p udp —dport 1194 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

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

Отблагодарите автора, поделитесь статьей в социальных сетях.

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

Настоящая частная виртуальная сеть или Virtual Private Network (VPN) — это зашифрованное соединенный туннель между двумя сетями, который соединяет две доверенные точки. Это не веб-протокол HTTPS, который считает доверенными всех клиентов. К VPN могут подключиться только те клиенты, которые имеют специальные ключи доступа.

Понятие VPN в наши дни стало очень растянутым, после появления частных виртуальных сетей, которые доверяют всем и распространения HTTPS. Многие из сетей VPN представляют из себя коммерческие решения с минимальным количеством настроек для обеспечения удаленного доступа сотрудников. Но не все доверяют этим решениям. Частная виртуальная сеть соединяет две сети в одну, например, сеть офиса и домашнюю сеть работника. Сервер VPN необходим для того чтобы сервер и клиент могли пройти аутентификацию друг с другом.

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

Установка OpenVPN

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

sudo apt install openvpn easy-rsa

Оба пакеты должны быть установлены как на сервере, так и на клиенте. Они понадобятся для настройки программы. Первый этап статьи установка и настройка openvpn завершен.

Настройка центра сертификации

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

Обратите внимание, что все секретные ключи должны находится в надежном месте. В OpenVPN открытый ключ называется сертификатом и имеет расширение .crt, а закрытый ключ так и называется ключом, его расширение — .key.

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

sudo mkdir /etc/openvpn/easy-rsa

Затем скопируем в эту папку все необходимые скрипты easy-rsa:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

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

sudo -i
# source ./vars
# ./clear-all
# ./build-ca

Первой командной мы переключаемся в консоль от имени суперпользователя, второй загружаем переменные окружения из файла ./vars. Команда ./clear-all создает папку keys если ее нет и очищает ее содержимое. И последняя команда инициализирует наш центр сертификации. Теперь в папке .keys появились все необходимые ключи:

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

Дальше нужно повторить процедуру копирования скриптов управления RSA, как мы это делали на сервере:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

Теперь нам нужно скопировать сертификат, файл с расширением .crt в папку /etc/openvpn на всех клиентах. Например, скачаем этот файл для нашего клиента с помощью scp:

sudo scp пользователь@хост:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys

Только теперь можно создать свой секретный ключ на основе сертификата CA:

sudo -i
# source ./vars
# build-req Sergiy

Обратите внимание, что ca.crt должен лежать в папке с ключами, иначе ничего не сработает. Теперь утилита создаст ключ, на основе которого, вы сможете подключиться к OpenVPN серверу, но вам еще осталось подписать его на сервере. Отправьте полученный .csr файл на сервер с помощью того же самого scp:

scp /etc/openvpn/easy-rsa/keys/Sergiy.csr пользователь@хост:

Затем уже на сервере в папке /etc/openvpn/easy-rsa нужно выполнить команду подписи сертификата:

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

sudo scp пльзователь@хост:/home/Sergiy.crt /etc/openvpn/easy-rsa/keys

Только после этого сервер и клиент имеют все необходимые ключи для подключения и установки связи. Осталось еще несколько настроек. Если вы планируете использовать шифрование TLS, то необходимо создать на сервере набор данных Диффи-Хафмана, для этого используйте команду:

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

Настройка OpenVPN

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

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

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

port и proto — порт и протокол, по которым будет работать программа;

port 1194
proto udp

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

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/ca.crt
key /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem

Настраиваем диапазон адресов для виртуальной сети, наш сервер будет доступен по первому из них — 10.8.0.1:

server 10.8.0.0 255.255.255.0

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

port 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

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

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

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf

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

remote — это ваш адрес сервера OpenVPN, адрес и порт должны совпадать с настроенными на сервере, например:

remote 194.67.215.125 1194

ca — ключ, который вы получили от центра сертификации, мы расположили его в папке /etc/openvpn/.

cert и key — это открытый и секретный ключи клиента, с помощью них вы и будете подключаться к серверу. Как вы помните, мы сохранили их в папке /etc/openvpn/easy-rsa/keys/.

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key

Остальные настройки можно оставить как есть. Вот файл настройки целиком, который вы можете скопировать:

client
dev tun
proto udp
remote 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verb 3

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

Готово, теперь все работает, если вы выполните ifconfig, то увидите что был добавлен интерфейс tun0:

Также вы можете попробовать выполнить ping адреса 10.8.0.1, именно этот адрес мы настроили для нашего сервера OpenVPN, пакеты ping будут нормально отправляться. Если пакеты не идут, или еще что-то не работает, обратите внимание на вывод обоих программ, возможно, возникли какие-либо ошибки или предупреждения, также убедитесь, что брандмауэр сервера разрешает доступ извне по udp для порта 1194. Еще можно запустить сервер или клиент, настроив в конфиге уровень подробности на максимум verb 9. Очень часто это помогает понять почему что-то не работает. Но вы еще не можете направлять трафик через туннель. Для этого нужно разрешить форвардинг и добавить несколько правил iptables. Сначала разрешаем транзит пакетов на сервере:

sysctl -w net.ipv4.ip_forward=1

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

iptables -A INPUT -p udp —dport 1194 -j ACCEPT

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

iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

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

Ubuntu → Настраиваем OpenVPN сервер Linux на примере Ubuntu

Хочу всех поприветствовать, я решил обновить статью по настройке OpenVPN сервера, с момента написания, утекло много воды, многое поменялось, многое не актуально, вот я и решил обновить записи и осветить нюансы в настройке это замечательной и полезной службы.
В этой статье я опишу настройку сервера, на примере версии OpenVPN v 2.3.2 настраивать буду на Ubuntu, но на остальных системах, все выполняется аналогичным образом, также мы настроим клиент на Linux (Ubuntu) и клиента Windows на примере Windows 10, но это я оформлю отдельными статьями, ссылки на них я приложу к этой статье.
Чтобы немного усложнить задачу сделаем еще разделение пользователей 2 основные группы ( обычные и привилегированные):
1) Обычные пользователи должны иметь возможность заходить в локальную сеть чтобы пользоваться ее ресурсами (принтеры, файловые серверы и т.п.) но выходить в интернет должен через свое подключение, в обход нашего OpenVPN сервера.

2) Привилегированные пользователи должны иметь возможность подключаться к нашему серверу и заходить в локальную сеть, при этом и в интернет они должны выходить через наш VPN сервер
Чуете как интрига закручивается?!

Примерная схема работы системы:

Предполагается что операционная система уже установлена, я не буду останавливаться на этом, для тестирования нам понадобится 2 машины с Ubuntu и одна WIndows 10 итого нам нужно 3 готовые системы.

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

1) Настроить OpenVPN сервер
2) Настроить удостоверяющий центр, для выпуска сертификатов (Certification authority)
3) Обеспечить доступ в интернет и локальную сеть пользователей подключенных к серверу ( настроить маршрутизацию )
4) Обеспечить возможность предоставления различных настроек разным клиентам OpenVPN сервера
5) Управление пользователями и удостоверяющим центром
6) Послесловие

В результате, нам останется настроить OpenVPN клиентов Linux и Windows после этого система станет полнофункциональной.
Вариант настройки OpenVPN клиента Ubuntu можно посмотреть в статье: Настраиваем OpenVPN клиент Linux
Ну с варинтом настройки OpenVPN клиента под Windows можно ознакомиться в статье: Настройка OpenVPN клиента на Windows 10. Там представлен пример для Windows 10, но на предыдущих операционных системах, все настраивается аналогично.

1-Настраиваем OpenVPN сервер

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

Поднимем права до root:

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

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

Но для начала, генерируем секретный ключ TLS, он нужен для того чтобы еще больше повысить уровень безопасности передаваемых данных, этот ключ должен быть на сервере и у каждого подключенного клиента!

Нам также необходимо создать директорию, в дальнейшем она нам понадобится:

Также нам понадобится перенастроить DNSMASQ, чтобы он обслуживал только клиентов VPN сервера

Нас интересует строка:

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

Перезапускаем службу DNSMASQ:

2 — Подниманием удостоверяющий центр

Это и настройкой назвать сложно, все уже готово, но в отличии от старых версий OpenVPN, теперь это все живет отдельно, а именно на github.com

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

Клонируем репозиторий easy-rsa

Переходим в директорию с easy-rsa настроим и актируем наш удостоверяющий центр

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

Я выложу свой, готовый, файл:

Я не буду останавливаться на расшифровке параметров, это вам в качестве домашнего задания, назначение их можно посмотреть в vars.example, но это уже сами.

Активируем удостоверяющий центр:

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

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

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

Вылезет сообщение вида:

DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time

Генерация занимает примерно 2 мин.

Наш сервер будет называться vpnserver (название по вашему усмотрению)
Генерируем для него ключ и сертификат:

Где:
nopass — отвечает за то чтобы не запрашивать пароль, по умолчанию он запрашивается, если пароль указать то при перезапуске OpenVPN сервера система будет требовать его ввода, иначе служба не запустится.

Нам выдаст нечто подобное:

writing new private key to ‘/etc/openvpn/easy-rsa/easyrsa3/pki/private/vpnserver.key.sol8RdbjZ7’
— Using configuration from /etc/openvpn/easy-rsa/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
commonName :PRINTABLE:’vpnserver’
Certificate is to be certified until Apr 16 13:07:43 2026 GMT (3650 days)

Сразу сгенериурем ключи для 2х наших клиентов, назовем их user и superuser

ПОМНИТЕ ОБ ЭТОМ: По хорошему, клиенты должны указать пароль для своих ключей, даже если ключи будут украдены, воспользоваться ими будет проблематично, но для тестов можно и не указать. Можно генерить ключи без пароля в тех случаях если планируется ставить OpenVPN клиента на маршрутизатор и чтобы каждый раз на него не лазить, то пароль не указываем.
Решать, как всегда, вам!

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

За дополнительными параметрами обращаемся к помощи:

OpenVPN настроен, теперь осталось его запустить

Если служба не запустилась, то лезем в лог

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

3 — Настраиваем маршрутизацию в интернет и локальную сеть пользователей подключенных к VPN серверу

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

Находим строку и снимаем с нее комментарий:

Далее нам необходимо настроить правила фаерволла iptables, добавляем правило:

Чтобы правила не сбрасывались после перезапуска сервера, нам их необходимо вписать в файл.
Самое простое это добавить записи в rc.local, эти правила со 100% вероятностью будут загружены при старте системы, правила добавляем перед записью exit 0

перезагружаем сервер полностью, чтобы изменения применились и проверить что привала IPTABLES загружаются нормально после рестарата

4 — Обеспечиваем возможность предоставления различных настроек разным клиентам OpenVPN сервера

Представим ситуацию, пользователь должен ходить в локальную сеть в через наш OpenVPN сервер, а в интернет через свое основное подключение, а другой пользователь должен ходить и в локлаьную сеть и в интрнет через наш VPN сервер, вот для этих целей нам понадобится директория ccd, которую мы создали в первом пункте.
Например:
У нас есть пользователь superuser тогда его запись будет иметь вид

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

Для пользователя user мы не создаем такой файл, в результате, к нему прилетят только те настройки которые указаны в server.conf, для него наш OpenVPN НЕ будет шлюзом по умолчанию и к нашему серверу будут прилетать только пакеты адресованные нашей локальной сети, ведь мы подсунули ему маршруты в файле server.conf, но не переназначили шлюз, также IP адрес ему будет предоставляться случайным образом.

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

Ну и нам осталось настроить клиентов и протестировать работу OpenVPN сервера и корректность маршрутизации пакетов между сетями.

5 — Управление пользователями и удостоверяющим центром

Удаление удостоверяющего центра

Если так получилось что вам необходимо полностью переделать удостоверяющий центр, то можно удалить директорию PKI в /etc/openvpn/easy-rsa/easyrsa3/pki и далее, повторить шаги из пункта 2, все ключи будут перевыпущены, все старые ключи работать перестанут, от слова, совсем!

Управление пользователями

Как отключать пользователей от сервера, для этого нужно отозвать сертификат, делается это так:
Отзыв сертификатов:

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

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

Краткая рекомендация

ERROR: Linux route add command failed: external program exited with error status: 2

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

На этом я закончу эту статью, надеюсь что она была вам полезной

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

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

Как работает OpenVPN?

По окончании настройки сервера и его запуске, он перейдет в режим готовности приема и перенаправления внешних защищенных SSL-соединений на виртуальный сетевой адаптер (tun/tap).

По желанию, маршрутизация сервера может быть настроена таким образом, чтобы Интернет-трафик клиентов проходил через сервер и становился трафиком сервера. В этом случае OpenVPN будет выполнять проксирование трафика (proxy).

Что требуется от операционной системы?

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

У сервера есть хотя бы один “белый” статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет. Если адрес динамический, но сервер все же остается быть доступным из глобальной сети — воспользуйтесь услугами DynDNS.

Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа “#” решетка в начале строки).

Должны быть верно указаны параметры сети — hostname, параметры DNS-серверов.

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

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

Все действия будем выполнять от пользователя root.

1. Обновляем информацию о репозиториях:

2. Устанавливаем текущие обновления системы и установленных программ:

3. Устанавливаем OpenVPN:

apt-get install openvpn

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

4. Аналогичным образом устанавливаем пакет easy-rsa:

apt-get install easy-rsa

Действия после установки.

Размещаем скрипты easy-rsa:

cd /etc/openvpn/ && make-cadir easy-rsa

Подготавливаем публичные ключи (PKI — Public Key Infrastructure):

1. Переходим в директорию /etc/openvpn/easy-rsa:

2. Создаем символьную ссылку на файл конфигурации openssl:

ln -s openssl-1.0.0.cnf openssl.cnf

3. Инициализируем скрипт vars:

Система сообщит: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

4. Выполняем ./clean-all

5. Для создания центра сертификации выполняем скрипт:

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

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

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

Следует обратить внимание, что процесс похож на генерацию сертификата центра сертификации, однако, перед подписанием сертификата программа задаст 2 уточняющих вопроса. Если все указано верно, отвечаем “y”.

Генерация клиентских ключей.

Аналогично генерации серверных ключей создаются и клиентские:

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

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

Следует помнить, что имена ключей должны быть уникальными. Один пользователь — один ключ с уникальным именем.

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

Генерация ключа Диффи-Хеллмана

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

Результат будет примерно таким.

По окончании работы программы, в директории /etc/openvpn/easy-rsa/keys/ появится файл dh2048.pem

Перемещение сертификатов и ключей

Сервер

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

1. Переходим в каталог с ключами:

2. Копируем только необходимые серверу файлы:

cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn

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

Клиенты

Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно разместить в директории /etc/openvpn на машине клиента, если она под управлением Linux-подобной ОС.

В ОС Windows их следует разместить в пользовательский каталог.

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

Сервер

Большинство устанавливаемых программ в ОС Linux имеют так называемые sample-файлы. Эти файлы содержат примеры настройки и объяснения их. OpenVPN не стал исключением. Распакуем серверный конфигурационный файл в директорию /etc/openvpn:

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

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

Для начала, проверяем какие файлы оказались в директории /etc/openvpn:

Открываем файл конфигурации:

И проверяем соответствие файлов прописанных в конфигурации с файлами находящимися в каталоге. Интересны строки после “SSL/TLS root certificate (ca), certificate (cert), and private key (key).”

Если имена отличаются от существующих, следует внести необходимые исправления. Выходим из редактора сочетанием клавиш Ctrl + X.

Проверим результат запуска:

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

1. Копируем файл клиентских настроек в домашний каталог пользователя:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root

2. Копируем сгенерированные ключи — client1.key, client1.crt, ca.crt:

cp client1.key client1.crt ca.crt /root

3. Редактируем файл конфигурации клиента:

4. Находим закомментированные строки “# The hostname/IP and port of the server”. Для параметра remote меняем my-server-1 на IP-адрес сервера или его доменное имя.

5. В том же файле, ниже, находим блок “#SSL/TLS parms.”. Редактируем имена ключей.

6. Выходим из редактирования сочетанием Ctrl + X. На вопрос о сохранении изменений отвечаем “Y”. Имя файла оставляем неизменным.

7. Переносим файлы client1.key, client1.crt, ca.crt и client.conf на компьютер клиента с которого будет происходить подключение к серверу OpenVPN.

Важно! Некоторые клиентские реализации OpenVPN работают только с файлами *.ovpn. В подобных случаях достаточно изменить расширение файл (переименовать) с client.conf на client.ovpn.

8. Подключаемся к серверу командой:

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

1. На сервере редактируем файл server.conf:

2. В файле находим следующую строку и удаляем перед ней символ “;”, таким образом раскомментируем ее:

push «redirect-gateway def1 bypass-dhcp»

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

4. Редактируем файл /etc/sysctl:

5. В конец файла добавляем следующую строку:

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

6. Разрешаем форвардинг пакетов без перезагрузки сервера:

echo 1 > /proc/sys/net/ipv4/ip_forward

7. Настроим NAT в iptables. Поочередно вводим команды:

iptables -A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -i tun+ -j ACCEPT

iptables -A FORWARD -i tun+ -j ACCEPT

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

Также их можно просто вписать в файл /etc/rc.local до строки “exit 0” или выполнить настройку firewall как это указано в нашей статье.

Сервер уже готов к использованию. Однако, задача проксировать весь трафик, а следовательно необходимо настроить форвардинг DNS-запросов. Настроим.

1. Устанавливаем dnsmasq

Если установка выполняется в ОС Ubuntu:

apt-get install dnsmasq

Несмотря на то, что в большинстве современных версий ОС Ubuntu dnsmasq уже предустановлен, в старых версиях необходимо выполнить так:

apt-get install dnsmasq && dpkg-reconfigure resolvconf

Возможно запустится диалоговое окно мастера установки. В нем будет 2 вопроса. В первом случае, на вопрос “prepare /etc/resolv.conf for dynamic updates” отвечаем “Yes”, а на следующий — “Append original file to dynamic file?” отвечаем “No”.

Для ОС Debian 7:

apt-get install dnsmasq resolvconf

2. Отредактируем файл настроек dnsmasq:

Добавим следующие параметры:

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

3. Редактируем файл сетевых настроек:

Требуется указать адрес DNS-серверов в соответствующих секциях настроек адаптера:

dns-nameservers 8.8.8.8 8.8.4.4

Возможно это действие уже произведено,. Повторно его выполнять не нужно.

4. Учитывая особенность запуска и последующей работы dnsmasq — возможность аварийного завершения до инициализации виртуального tun-адаптера, добавим следующую строчку в файл rc.local, перед “exit 0”:

5. Теперь разрешим клиентам OpenVPN-сервера использовать DNS. С помощью редактора nano раскомментируем строку:

push «dhcp-option DNS 10.8.0.1»

Фиксируем изменения в файле.

6. Перезагружаем сервер:

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

Системное администрирование и мониторинг Linux/Windows серверов и видео CDN

Статьи по настройке и администрированию Windows/Linux систем

  • Полезное
    • Карта сайта
    • Мой сайт-визитка
  • Рубрики
    • Linux
      • VoIP
      • Безопасность
      • Видеопотоки
      • Системы виртуализации
      • Системы мониторинга
    • Windows
    • Интересное
    • Сеть и Интернет
  • Мета
    • Войти
    • RSS Feed

OpenVPN. Установка и настройка client-server соединения

В предыдущей статье мы познакомились с простой, быстрой, но не очень безопасной настройкой VPN соединения в режиме point-to-point используя OpenVPN. Предыдущая настройка имеет серьезный недостаток: к серверу может одновременно подключиться только один клиент, и если секретный ключ будет скомпрометирован, его нужно будет менять как на серверной стороне, так и на клиентской (т.е. опять передавать ключ по безопасному каналу и генерировать новый). Также, если шифрованный трафик был записан – с получением ключа злоумышленник может декодировать его.
В данной статье пойдет речь о настройке безопасного OpenVPN соединения в client/server режиме с использованием сертификатов и возможностью их отзыва (CRL). В роли OpenVPN клиентов будут выступать Ubuntu 14.04, Windows 8.1 и телефон c Andro >

2. OpenVPN в режиме client-server

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

Таблица 2.1 – IP-адреса и название сертификатов/ключей удаленных узлов

Сертификат и ключ

Windows client Android client Ubuntu client Ubuntu VPN server Ubuntu LAN server


Рисунок 2.1 – Схема подключений

Все нужные данные у нас есть, приступаем к практике.

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

Для начала нужно настроить главный элемент любой VPN сети – VPN сервер. Логинимся и устанавливаем.

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

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

Для вышенаписанного client_server.conf нужно создать все упомянутые ключи и сертификаты.
Инструкцию по их созданию можно почитать в этой статье.
Создадим файл параметров Diffie-Hellman и tls-auth ключ.

Ключ ta.key – это тот же secret ключ из предыдущей статьи.
Будем полагать, что вы прочитали статью по созданию ключей или имеете свои клиентские и серверные ключи. Так же не забываем поставить права на папку с ключами и сменить владельца, так как у нас сервер запускается от имени nobody:nogroup.

2.1.2 Настройка обратной маршрутизации

Когда создается любой VPN туннель – всегда возникает вопрос маршрутизации. В нашем случаи VPN server должен маршрутизировать все пакеты от VPN клиентов в свою LAN сеть и обратно. Маршрут от клиентов к удаленной LAN сети через VPN туннель мы добавили (push директива в client_server.conf). Но нам также нужен обратный маршрут через LAN от каждого сервера в DATACENTER сети к VPN клиенту через VPN туннель. В данном случи мы можем прописать статические маршруты на каждом из DATACENTER серверов обратно к VPN клиенту, но это очень непрактичный и тугой вариант если количество серверов больше десятка. Мы просто добавим маскарадинг на VPN server-е, что позволит нам подменять IP каждого VPN клиента на IP VPN server-а.

Теперь каждый пакет VPN клиента будет идти через VPN туннель, после этого на VPN сервере source IP подменяется на IP VPN сервера (192.168.100.100) и уходит в DATACENTER сеть. После чего каждый хоп думает, что пакет пришел от их собрата и отправляет ответ обратно на VPN сервер, а сам сервер при получении пакета – отправляет его через туннель к клиенту.
Также нужно добавить возможность проброса пакетов между интерфейсами.

В нашем случаи этого достаточно для маршрутизации.

2.1.3 Запуск VPN сервера

Осталось только запустить VPN сервер и посмотреть логи, все ли хорошо.

Как видим, все гуд. Теперь можно, также, проверить статус подключений.

Как видим, пока у нас нет подключений.

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

Для настройки Linux клиента нам нужен установленный клиент, конфигурационный файл и сертификаты.
Установка OpenVPN клиент под Ubuntu 14.04 очень проста.

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

Осталось запустит клиент.

Как видим, мы успешно подключились к OpenVPN серверу. Теперь нужно проверить доступ к LAN серверу, которой доступен только по локальному IP в DATACENTER сети.

Как видим, все работает как положено. Также можно проверить статус сервера.

Как видим, у нас есть первый подключенный клиент.

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

Windows OpenVPN клиент можно скачать здесь. Установка стандартная. После установки можно создать отдельную папку со всеми нужными файлами/конфигурациями и закинуть в папку config (Путь — c:Program FilesOpenVPNconfig).

Теперь добавим конфигурационный файл с расширением *.ovpn (формат конфигурационных файлов для OpenVPN Windows клиентов).

Далее, нужно запустить OpenVPN GUI от имени администратора. Справа снизу появиться значок с запущенным клиентом. Теперь нужно подключиться.

Рисунок 2.1 – Меню подключения к удаленному OpenVPN серверу

Далее нужно ввести пароль на секретный ключ.


Рисунок 2.2 – Запрос на ввод пароля на ключ

После ввода пароля мы получим уведомление о успешном подключении.


Рисунок 2.3 – Успешное подключение

Теперь осталось пропинговать VPN сервер и LAN сервер.

Все ок. Теперь смотрим статус сервера.

Как видим, у нас теперь подключено два клиента. Осталось проверить подключение с мобильного устройства.

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

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


Рисунок 2.4 – Ключи в папке на телефоне

Далее нужно установить OpenVPN клиент. К примеру OpenVPN for Android.


Рисунок 2.5 – OpenVPN for Android приложение

После установки, запускаем приложение и нажимаем кнопку импортирования конфигурации.


Рисунок 2.6 – Внешний вид OpenVPN for Android приложения

Далее ищем нашу папку и выбираем mobile-client.ovpn файл.


Рисунок 2.7 – OpenVPN конфигурация

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


Рисунок 2.8 – Успешная импортация OpenVPN конфигурации

После сохранения у нас появится новое подключение с названием mobile-client. Вы также можете пройтись по настройкам, чтобы убедиться, что все ок.


Рисунок 2.9 – Вид нового OpenVPN подключения

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


Рисунок 2.10 – Вид запроса на ввод пароля для ключа

После ввода пароля и успешного подключения мы получим следующий вывод.


Рисунок 2.11 – Лог подключения

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


Рисунок 2.12 – Пинг удаленного OpenVPN сервера

Сервер доступен. На остаток проверим статус подключений на серверной стороне.

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

Настройка OpenVPN на Windows и Ubuntu

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

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

  • Ваш ПК (клиент);
  • Непосредственно VDS или VPS;
  • Конечная сеть, к которой вы обращались.

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

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

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

OpenVPN параметры для VDS/VPS

В первую очередь разберёмся с серверной частью программы, которые, практически всегда, располагаются на Ubuntu. В общем большинство хостингов использует Linux и его разновидности для повышения скорости работы. Вам придется приобрести выделенный сервер (VDS), что весьма недорого, где и будет находится ваш туннель OpenVPN.

Настойчивых рекомендаций давать нет смысла, подбирается индивидуально в зависимости от ваших требований по расположению, методу оплаты, качеству обслуживания и цене. К примеру вы можете присмотреться к сервису AdminVPS.ru или Mgnhost.ru, но их большое множество и нужно всё время мониторить обстановку, не поленитесь, скорости и характеристик VDS/VPS зависит немало.

Итак, настройка OpenVPN Ubuntu производится в несколько поочерёдных шагов, а именно:

  1. Инициализируйте ядро, используя параметры, где необходимо задать:

после этого перезагрузитесь;

  1. Перейдём к инициализации установки:

emerge openvpn bind bind-tools iptables – обычно занимает какое-то время, возможно даже долго;

  1. Следуйте в раздел /etc/init.d/ и внесите код в консоль

ln -s openvpn openvpn.vpnet

далее rc-update add openvpn.vpnet default

rc-update add named default

добавляем rc-update iptables default

  1. Теперь добавляем named, iptables и openvpn в автозапуск;
  2. Приступаем к процессу образования некоторых каталогов и их наполнение:

mkdir /etc/openvpn/vpnet/ + файл ключей/keys

создайте пустой лог в характерном реестре openvpn.log

  1. Следуем внутрь раздела /usr/share/openvpn/easy-rsa/, где вы найдёте элемент vars, после этого запускаем;
  2. Задайте соответствующие переменные в конфигурации сервера:

прописываем export KEY_DIR=»/etc/openvpn/vpnet/keys»

  1. Теперь следует создать ключи:

openvpn —genkey —secret ta.key

./pkitool запустите команду с флагами, поочерёдно —initca/—server vpsrv/vpclient

  1. Перенесите остатки информации в необходимое хранилище

mv ./ta.key /openvpn/vpnet/keys

  1. Теперь остались конечные настройки находящиеся в файле vpnet.conf:

tls-auth vpnet/keys/ta.key 0

ca, cert, key, dh — каждый параметр с новой строки и указываем ваш путь к соответствующим конфигам

ifconfig 10.10.0.1 255.255.255.0

следующий параметр — ifconfig-pool 10.10.0.2 10.10.0.128

log-append – путь к файлу-логу

  1. Производим запуск iptables:

/etc/init.d/iptables save, затем снова только с параметром start

  1. Перейдём к установке параметров IP адресов:

echo «sysctl net.ipv4.ip_forward = 1» >> /etc/sysctl.conf

  1. Теперь нужно настроить firewall

iptables -v -t nat -A POSTROUTING -o EXTERNAL_IF -s VPN_NET/24 -j SNAT —to-source SERVER_IP

  1. Снова вводим команду сохранения из 11-го пункта.

Теперь OpenVPN server настройка закончена, для применения его ещё необходимо выполнить один шаг – интеграция опций в клиент.

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

Большая часть выполнена, теперь возьмёмся за синхронизацию клиента и его доступа. Не стоит заострять своё внимание на том, что пример выполнен на Ubuntu, так настройка OpenVPN Windows 7 идентична дальнейшим действиям, выполняйте по аналогии. Последующее действие необходимо для синхронизации туннелей IP-адресов VPN сервиса.

  1. Инсталляция ПО и установка маршрута:

ln -s openvpn openvpn.vpnet-client

следующий этап — rc-update add openvpn.vpnet-client default

mkdir /etc/openvpn/vpnet/ + плюс каталог client_keys

Создаём конфиг vpnet-client.conf в папке openvpn

  1. Копируете данные доступа .crt и .key с VDS и переносите их в клиентский раздел ключей;
  2. Производим редактирование vpnet-client.conf:

далее port 5555

tls-auth, ca, cert, key — каждому параметру задайте характерный путь к ключам

Также добавьте журнал openvpn.log в оригинальный одноименный каталог.

[note] При необходимости сменить страну потока VPN, вам придется воспользоваться ещё одним дополнительным выделенным сервером и направлять трафик через оба VDS или каждый по отдельности. [/note]

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

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

Если у Вас остались вопросы по теме «Настройка OpenVPN на Windows и Ubuntu», то можете задать их в комментариях

Настройка OpenVPN на Windows и Ubuntu

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

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

  • Ваш ПК (клиент);
  • Непосредственно VDS или VPS;
  • Конечная сеть, к которой вы обращались.

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

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

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

OpenVPN параметры для VDS/VPS

В первую очередь разберёмся с серверной частью программы, которые, практически всегда, располагаются на Ubuntu. В общем большинство хостингов использует Linux и его разновидности для повышения скорости работы. Вам придется приобрести выделенный сервер (VDS), что весьма недорого, где и будет находится ваш туннель OpenVPN.

Настойчивых рекомендаций давать нет смысла, подбирается индивидуально в зависимости от ваших требований по расположению, методу оплаты, качеству обслуживания и цене. К примеру вы можете присмотреться к сервису AdminVPS.ru или Mgnhost.ru, но их большое множество и нужно всё время мониторить обстановку, не поленитесь, скорости и характеристик VDS/VPS зависит немало.

Итак, настройка OpenVPN Ubuntu производится в несколько поочерёдных шагов, а именно:

  1. Инициализируйте ядро, используя параметры, где необходимо задать:

после этого перезагрузитесь;

  1. Перейдём к инициализации установки:

emerge openvpn bind bind-tools iptables – обычно занимает какое-то время, возможно даже долго;

  1. Следуйте в раздел /etc/init.d/ и внесите код в консоль

ln -s openvpn openvpn.vpnet

далее rc-update add openvpn.vpnet default

rc-update add named default

добавляем rc-update iptables default

  1. Теперь добавляем named, iptables и openvpn в автозапуск;
  2. Приступаем к процессу образования некоторых каталогов и их наполнение:

mkdir /etc/openvpn/vpnet/ + файл ключей/keys

создайте пустой лог в характерном реестре openvpn.log

  1. Следуем внутрь раздела /usr/share/openvpn/easy-rsa/, где вы найдёте элемент vars, после этого запускаем;
  2. Задайте соответствующие переменные в конфигурации сервера:

прописываем export KEY_DIR=»/etc/openvpn/vpnet/keys»

  1. Теперь следует создать ключи:

openvpn —genkey —secret ta.key

./pkitool запустите команду с флагами, поочерёдно —initca/—server vpsrv/vpclient

  1. Перенесите остатки информации в необходимое хранилище

mv ./ta.key /openvpn/vpnet/keys

  1. Теперь остались конечные настройки находящиеся в файле vpnet.conf:

tls-auth vpnet/keys/ta.key 0

ca, cert, key, dh — каждый параметр с новой строки и указываем ваш путь к соответствующим конфигам

ifconfig 10.10.0.1 255.255.255.0

следующий параметр — ifconfig-pool 10.10.0.2 10.10.0.128

log-append – путь к файлу-логу

  1. Производим запуск iptables:

/etc/init.d/iptables save, затем снова только с параметром start

  1. Перейдём к установке параметров IP адресов:

echo «sysctl net.ipv4.ip_forward = 1» >> /etc/sysctl.conf

  1. Теперь нужно настроить firewall

iptables -v -t nat -A POSTROUTING -o EXTERNAL_IF -s VPN_NET/24 -j SNAT —to-source SERVER_IP

  1. Снова вводим команду сохранения из 11-го пункта.

Теперь OpenVPN server настройка закончена, для применения его ещё необходимо выполнить один шаг – интеграция опций в клиент.

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

Большая часть выполнена, теперь возьмёмся за синхронизацию клиента и его доступа. Не стоит заострять своё внимание на том, что пример выполнен на Ubuntu, так настройка OpenVPN Windows 7 идентична дальнейшим действиям, выполняйте по аналогии. Последующее действие необходимо для синхронизации туннелей IP-адресов VPN сервиса.

  1. Инсталляция ПО и установка маршрута:

ln -s openvpn openvpn.vpnet-client

следующий этап — rc-update add openvpn.vpnet-client default

mkdir /etc/openvpn/vpnet/ + плюс каталог client_keys

Создаём конфиг vpnet-client.conf в папке openvpn

  1. Копируете данные доступа .crt и .key с VDS и переносите их в клиентский раздел ключей;
  2. Производим редактирование vpnet-client.conf:

далее port 5555

tls-auth, ca, cert, key — каждому параметру задайте характерный путь к ключам

Также добавьте журнал openvpn.log в оригинальный одноименный каталог.

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

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

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