Установка и настройка openvpn на windows или linux

Содержание:

Какие SSL сертификаты, ключи использует OpenVPN? Где ключи OpenVPN должны размещаться?

  • ca.crt — файл открытой части сертификата CA, который используется сервером и клиентом OpenVPN, чтобы информировать друг друга о том, что они входят в единую сеть доверия и что между ними отсутствует потенциальный злоумышленник в качестве посредника. В связи с этим, копия файла ca.crt потребуется для вашего сервера и для всех ваших клиентов.
  • ca.key — закрытый ключ CA, используемый для подписания ключей и сертификатов серверов и клиентов. Если злоумышленник получит доступ к CA и файлу ca.key, он сможет подписывать запросы сертификатов и получать доступ к вашей VPN, что нарушит ее безопасность. Поэтому файл ca.key должен храниться только на компьютере CA, и для дополнительной безопасности компьютер CA следует выключать, когда он не используется для подписывания запросов сертификатов.
Файл Машина Назначение Доступ
ca.crt Сервер и клиенты Сертификат корневого СА Публичный
ca.key Только на сервере Необходим для подписи других сертификатов Секретный
dh{n}.pem Только на сервере Diffie Hellman параметры Публичный
vpnspar.crt Только на сервере Сертификат сервера Публичный
vpnspar.key Только на сервере Ключ сервера Секретный
darkfire.crt Только на клиенте Сертификат клиента Публичный
darkfire.key Только на клиенте Ключ клиента Секретный

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

Для установки OpenVPN-клиента выполните:

emerge openvpn

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

Создайте директорию сертификатов:

mkdir /etc/openvpn/keys

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

cp /var/calculate/easy-rsa/pki/ca.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/issued/client.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/private/client.key /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/ta.key /etc/openvpn/keys/

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

Отредактируйте файл настроек OpenVPN-клиента следующим образом:

/etc/openvpn/openvpn.conf

client
# протокол, устройство, метод сжатия
proto udp
dev tun
compress lzo
# удалённый сервер, порт
remote vpn.domain.org 1194
# оставлять без изменений устройство и файлы ключей при перезапуске туннеля
persist-tun
persist-key
remote-cert-tls server
# ключи и сертификаты
ca keys/ca.crt
cert keys/client.crt
key keys/client.key
tls-auth keys/ta.key 1
# лог
status /var/log/openvpn-status.log

Вместо впишите сетевое имя вашего VPN-сервера.

Failover upgrade procedure

NOTE: Before you begin, make sure that you do backups of both nodes. Use these .

OpenVPN Access Server comes with a built-in failover mode you can deploy on your local LAN network. It allows one primary node to handle all tasks, with a secondary standby node. The secondary node comes online automatically, taking over all tasks, if your primary node fails. This is done with a method called UCARP using VRRP heartbeat network packets. For more details, refer to Setting up high-availability failover mode on our site.

It’s important to keep both Access Server nodes updated with the same versions. We also recommend following a specific upgrade procedure to avoid triggering the failover unnecessarily. This should also ensure that you have a way to easily restore connectivity in the rare event that anything goes wrong with the upgrade.

Begin by making a backup of the failover node and then taking it offline. First make the backup and then, shut down the (virtual) machine where your failover installation of Access Server is installed.

Keeping your primary node online, make a backup and then begin with your upgrade steps. To upgrade using the repository, please click on the Software Repository section on this page. To upgrade using the package installer, please click on the Package Files section on this page.

Once you have completed the upgrade of your primary node, validate that everything is working as expected. Once the primary node is good to go, you can bring the failover node online and perform the same upgrade steps there as well. The failover node won’t actually do anything while the primary node is online. So you can now safely upgrade it to the latest version. Afterwards give it a few minutes to get a configuration update from your primary node before you start testing failover functionality.

At an opportune time, we recommend testing to see if the failover system is working properly. To do this, take the primary node down and check to see that your connections and Admin Web UI work as expected.

Replace entire appliance or cloud image

If you are in the situation that your appliance of cloud image is really outdated, and/or your installation has an old and no longer supported operating system, you should consider installing a new one. Please refer to our migration or reinstallation guide for this. It describes how to backup your system and restore the configuration to another Access Server. We recommend this step if your Linux OS is too old. Upgrade your entire OS and start over with a new Access Server installation. When you restore your data and license keys, you’ll be up and running again.

Usually, this kind of migration or reinstallation can be done in a way where you can keep the current system up and running while you set up a new system in parallel. Then, you can test it before you do the actual switch.

Установка и настройка VPN cервера на основе OpenVPN для первого примера

На этапе выбора куда, собственно, все это ставить, я бы рекомендовал указать директорию, у которой путь идет без пробелов (например C:\), т.к. могут быть проблемы с работой некоторых скриптов. На этапе выбора компонент обязательно указываем OpenSSL Utilities и OpenVPN RSA Certificate Management Scripts:

Устанавливаем. В процессе установки адаптера может появиться сообщение о необходимости установить VPN драйвер. Соглашаемся и жмем «Установить»:

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

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

Для того, чтобы создать защищенное соединение, в OpenVPN используется аутентификация на цифровых сертификатах стандарта Х.509.

  • Цифровой сертификат представляет собой специальный файл, при помощи которого, например, сайт показывает, что ему можно доверять, или вы можете подписать сертификатом почтовое сообщение/документ и отправить его другому человеку, который по этому сертификату поймет, что файл действительно пришел от вас, а не от кого-то другого, и при этом он не был изменен;
  • Цифровой сертификат невозможно подделать, но можно попытаться подменить (но это легко определить, посмотрев кем был выдан такой сертификат). Любой сертификат веб-сайта или организации подписывается вышестоящим по иерархии сертификатом (сертификатом удостоверяющего центра).

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

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

Возможные проблемы при работе с OpenVPN

Диагностировать большинство возникающих ошибок можно с помощью опции verb в конфигах клиента и сервера. В примерах выше значение данного параметра выставлялась в 0 — могут быть такие варианты:

  • 0 — покажет только фатальные ошибки.
  • 4 — вывод предупреждений, ошибок и важных сообщений.
  • 5, 6 — подробный вывод ошибок. Удобно для решения проблем.
  • 9 — подробный вывод всех сообщений.

Ниже приведены наиболее часто возникающие проблемы и способы их решения.

1. no package openvpn available

Описание: при попытке установить сервер, получаем ошибку.

Причина: не настроен репозиторий для данного пакета.

Решение: устанавливаем EPEL репозиторий:

yum install epel-release

2. failed to start openvpn robust and highly flexible tunneling application on server

Описание: при запуске сервера получаем данную ошибку.

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

Решение: открываем лог /var/log/openvpn/openvpn.log и смотрим, с каким сертификатом проблема. Проверяем, что все файлы скопированы и что мы не забыли сгенерировать все сертификаты.

3. Постоянно разрывается соединение

Описание: с периодичностью от 1 до 5 минут постоянно рвется соединение с сервером. После нескольких минут переподключается.

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

Решение:

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

Способ 2. Можно настроить сервер openVPN для выдачи различных IP-адресов, независимо от сертификата. Для этого открываем конфигурационный файл:

vi /etc/openvpn/server.conf

… и добавляем:


duplicate-cn

Перезапускаем сервис:

systemctl restart openvpn@server

Установка OpenVPN (Windows, Linux, Android)

Чтобы установить OpenVPN на Windows, необходимо выполнить следующие действия:

  • зайти на сайт https://openvpn.net/community-downloads/;
  • выбрать соответствующую версию OpenVPN client для своей ОС;

  • скачать установочный файл;
  • запустить его и дождаться полной инсталляции.

Для установки на Linux порядок действий будет следующим:

  • установить репозиторий EPEL – yum install epel-release;
  • задать инсталляцию OpenVPN – yum install openvpn;
  • для Linux Ubuntu применить apt install openvpn.

На всех Android-гаджетах OpenVPN устанавливается таким образом:

  • скачать приложение OpenVPN Connect из магазина Google Play;
  • дождаться завершения инсталляционного процесса.

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

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

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

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

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

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

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

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

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

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

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

Важно. В базовых репозиториях, зачастую отсутствует новейшая версия пакета

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

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

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

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

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

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

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

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”

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

Для установки OpenVPN-сервера выполните:

emerge openvpn

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

Создайте директорию сертификатов:

mkdir /etc/openvpn/keys

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

cp /var/calculate/easy-rsa/pki/ca.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/dh.pem /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/issued/server.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/private/server.key /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/ta.key /etc/openvpn/keys/

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

Отредактируйте файл настроек OpenVPN-сервера следующим образом:

/etc/openvpn/openvpn.conf

# порт, протокол, устройство, метод сжатия
port 1194
proto udp
dev tun
compress lzo
# ключи и сертификаты
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 
# диапазон выделяемых IP, маршрут по умолчанию, DNS
server 192.168.10.0 255.255.255.0
# топология сети
topology subnet
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
# перезапуск туннеля при необходимости
keepalive 10 120
# права демона openvpn
user openvpn
group openvpn
# оставлять без изменений устройство и файлы ключей при перезапуске туннеля
persist-tun
persist-key
# информация о текущих соединениях
status /var/log/openvpn-status.log

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

Важно

Многие подсоединенные к Интернет машины с OpenVPN-клиентом будут периодически взаимодействовать с сервером DHCP, чтобы возобновить аренду своих IP-адресов. Опция может мешать клиенту связаться с локальным DHCP-сервером (потому что DHCP-сообщения будут направляться через VPN), приводя к потере аренды IP-адреса.

Запустите сервер и добавьте в автозапуск:

/etc/init.d/openvpn start

rc-update add openvpn

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

Разрешите пересылку пакетов между сетевыми интерфейсами:

/etc/sysctl.conf

net.ipv4.ip_forward = 1

Для принятия изменений выполните:

sysctl -p /etc/sysctl.conf

Передача клиенту опции заставит весь IP-трафик, порождаемый на клиентской машине, пройти через сервер OpenVPN. Сервер должен быть настроен на обработку этого трафика — например, путем отправки в Интернет через NAT. Чтобы направить трафик клиента в Интернет через NAT, выполните:

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

Вместо eth0 укажите локальный сетевой интерфейс сервера.

Сохраните правила маршрутизации и добавьте их в автозапуск:

/etc/init.d/iptables save

rc-update add iptables

Создаем сертификаты для OpenVPN

Сертификаты мы можем создать несколькими способами. Разберем 2 — на роутере Mikrotik и с помощью утилиты на компьютере с Windows.

Способ 1. На Mikrotik’е.

Проще и быстрее всего сгенерировать сертификаты на самом роутере.

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

> /certificate add name=template-ca country=»RU» state=»Sankt-Petersburg» locality=»Sankt-Petersburg» organization=»Organization» unit=»DMOSK» common-name=»CA» key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign

> /certificate sign template-ca ca-crl-host=127.0.0.1 name=»ca»

* первая команда создает файл-шаблон запроса, на основе которого мы генерируем сертификаты второй командой. В шаблоне мы указываем опции для сертификата — так как сам сертификат самоподписный, можно указать любые значения и это никак не отразится на его использовании (стоит только указать корректные значения для стойкости шифрования key-size и срока действия сертификата days-valid).

2. Генерируем сертификат сервера OpenVPN:

> /certificate add name=template-server country=»RU» state=»Sankt-Petersburg» locality=»Sankt-Petersburg» organization=»Organization» unit=»DMOSK» common-name=»SERVER» key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server

> /certificate sign template-server ca=»ca» name=»server»

* как и в примере выше, мы сначала создали файл запроса и на его основе — сам сертификат. В качестве центра сертификации мы указываем созданный ранее сертификат ca.

Способ 2. На Windows.

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

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

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

И так, заходим на сайт OpenVPN и переходим на страницу загрузки. Скачиваем openvpn-install для нашей операционной системы, например, Windows 7 или 10:

Запускаем установку клиента — снимаем все галочки, оставляем EasyRSA 2 Certificate Management Scripts:

Завершаем установку. После чего в папке C:\Program Files\OpenVPN\easy-rsa создаем файл vars.bat со следующим содержимым:

* где для нас имеют значение:

  • HOME оставляем, если не меняли путь установки программы по умолчанию.
  • KEY_DIR — каталог, куда будут генерироваться сертификаты.
  • KEY_CONFIG может быть разным — его лучше посмотреть в файле vars.bat.sample или по названию соответствующего файла в папке easy-rsa.
  • KEY_NAME желательно, чтобы соответствовал полному имени VPN-сервера; остальные опции можно заполнить произвольно.
  • опции KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL, KEY_CN, KEY_OU — атрибуты для сертификата. Их можно оставить, как в данном примере или задать свои собственные.

В этой же папке C:\Program Files\OpenVPN\easy-rsa создаем каталог keys — в нем будут создаваться сертификаты.

Запускаем командную строку от имени администратора:

Переходим в каталог easy-rsa:

cd %ProgramFiles%\OpenVPN\easy-rsa

Запускаем vars.bat:

vars.bat

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

clean-all.bat

Снова запускаем vars.bat (после clean переопределяются некоторые переменные):

vars.bat

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

build-ca.bat

На все запросы нажимаем Enter (по умолчанию, будут подставлены значения, которые мы указали в файле vars.bat).

Генерируем сертификат для сервера:

build-key-server.bat server

* где server — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.

Готово — в каталоге C:\Program Files\OpenVPN\easy-rsa\keys мы найдем 3 сертификата — ca.crt, server.crt. server.key:

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

Импорт сертификатов

Заходим в настройки роутера — переходим в раздел Files — кликаем по Upload и выбираем наши 3 сертификата:

Кликаем по OK. Нужные нам файлы окажутся на роутере.

Переходим в System — Certificates:

Кликаем по Import:

… и по очереди импортируем:

  1. ca.crt
  2. server.crt
  3. server.key

* импорт делаем именно в такой последовательности.

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

Сервер

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

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

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

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

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

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

Запускаем сервер:

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

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

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

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

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

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. В файле находим следующую строку и удаляем перед ней символ “;”, таким образом раскомментируем ее:

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

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

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

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

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

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

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

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

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

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

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

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

Для ОС Debian 7:

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

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

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

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

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

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

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

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

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

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

Проверка работы

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

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 443-85-60

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

700
300

Как сгенерировать ключи и выполнить их шифрование, алгоритм Diffie-Hellman

Для каждой пары ключей существуют свои собственные сертификаты, обеспечивающие безопасность передачи информации. Управлять ими можно специальным приложением Easy-rsa, которое запускается и работает в командной строке, аналогично консоли Линукс. Консоль открывается через нажатие клавиш Win + R и ввода в появившемся окне слова cmd.

Как работать с конфигурационным файлом

Загрузив соответствующий конфигурационный файл, нужно внести его вместо одноименного файла/скрипта, найти который можно в папке OpenVPNeasy-rsa. Директория располагается на диске C в Program Files. Или укажите тот путь, куда вы запланировали установку виртуальной частной сети.

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

countryName_default
stateOrProvinceName_default
localityName_default
0.organizationName_default
emailAddress_default

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

Как генерировать ключи в Центре Сертификации

1. Для начала следует переименовать два файла при помощи командной строки:

2. Затем, чтобы создать новый ключ/сертификат, понадобится запуск скрипта:

В окне будут возникать различные предложения, большинство из них можно подтверждать кнопкой Enter. А для поля KEY_CN (Common Name) следует ввести оригинальное название и его же продублировать для поля name.

3. Так же генерируются сертификаты серверу. В этой строке вместе server нужно ввести оригинальное имя:

4. Система начнет спрашивать, следует ли подписывать сертификаты для создаваемых ключей от имени Центра сертификации? Введите «да» — y (yes).

Как генерировать клиентский ключ и сертификат

Всем юзерам виртуальной сети понадобится генерировать свои индивидуальные SSL-сертификаты.

Можно воспользоваться специальной опцией, которая позволяет присваивать 1 сертификат сразу нескольким пользователям. Она называется «dublicate-cn» и размещается в файле server.ovpn. Однако такой ход небезопасен.

Рассмотрим, как сгенерировать сертификат клиенту client2:

Внимание: под переменной client2 подразумевается вносимое название файла. Далее следует ввести client2 в запрос строчки Common Name

Работа с алгоритмом Диффи-Хеллмана

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

Перенос сгенерированных ключей/сертификатов

Все созданные данные располагаются в подпапке easy-rsakeys. Следующие наименования файлов следует перенести в другую подпапку — config, которая располагается в том же месте:

• dh2048.pem/dh1048.pem

• server.key

• ca.crt

• server.crt

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

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

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

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files

2. Скопируйте файл с примером конфигурации в этот каталог:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

3. Откройте этот файл в текстовом редакторе и внесите изменения:

nano ~/client-configs/base.conf

3.1. Найдите директиву , которая сообщает клиенту адрес сервера OpenVPN. Укажите здесь IP-адрес вашего VDS-сервера:

remote IP_адрес_сервера 1194

3.2. Раскомментируйте директивы user и group, удаляя “;”:

user nobody
group nogroup

3.3. Найдите директивы ca, cert и key и закомментируйте их, добавив #:

3.4. Добавьте настройки и с такими же значениями, как в файле , а также директиву  со значением 1.

cipher AES-128-CBC
auth SHA256
key-direction 1

3.5. Добавьте следующие закомментированные строки, которые будут необходимы для клиентов на Linux, использующих файл /etc/openvpn/update-resolv-conf. Для таких клиентов потребуется раскомментировать эти строки в сгенерированном клиентском файле конфигурации OpenVPN.

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

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

Скрипт для генерации конфигов

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

1. Создайте и откройте файл внутри директории :

nano ~/client-configs/make_config.sh

2. Вставьте в него следующий блок директив:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

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

4. Сделайте его исполняемым:

chmod 700 ~/client-configs/make_config.sh

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

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

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

Для создания файлов без пароля (это облегчит автоматические соединения), используйте команду build-key:

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

В процессе создания файлов нажимайте Enter для подтверждения (все необходимые значения уже введены). Не задавайте challenge password. При завершении процесса дважды укажите y в ответ на запросы о подписи и подтверждении создания сертификата.

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

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

Если всё прошло успешно, в директории будет создан файл :

Этот файл необходимо передать соответствующему клиенту. Скачать конфигурацию можно по SFTP.

Схема сети для второго примера VPN

У нас сеть домашний компьютер на Windows 10 x64, на нем развернута виртуалка на Debian 8, которая будет использоваться в качестве файлового хранилища, еще одна виртуалка, которая будет выступать VPN сервером, и рабочий ноутбук на Windows 10. Мы хотим с рабочего ноутбука подключиться к VPN серверу и иметь доступ ко всем локальным ресурсам домашней сети.

На маршрутизаторе мы имеем внешний адрес 87.215.46.32, внутренний адрес 192.168.1.1. на домашнем компе мы имеем внутренний адрес 192.168.1.2, а также 192.168.94.2 для подсети VMWare.

На виртуальном клиенте мы имеем адрес 192.168.94.110 и именно этот адрес нам понадобится для удаленного доступа к нему. На виртуальном VPN сервере мы имеем адрес 192.168.94.100. В качестве VPN подсети я выбрал всю ту же 10.10.20.0 с префиксом /24 (маска 255.255.255.0).

Собственно, теперь перейдем к настройке этого примера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector