Web интерфейс для openvpn

web интерфейс для openvpn

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

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

В какой-то момент я решил, что мне это надоело и начал поиск более удобного решения этого вопроса.

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

В конечном итоге я остановился на такой связке — сервер freebsd 10, установленный webmin и модуль OpenVPN-admin.

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

1. Редактировать настройки сервера. 2. Генерировать сертификаты пользователей. 3. Задавать пользовательские настройки.

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

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

Установка openvpn

Итак, у нас имеется:

FreeBSD websrv.local 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401

Перво-наперво обновляем порты:

# portsnap fetch update

И устанавливаем openvpn:

# cd /usr/ports/security/openvpn # make install clean

Добавляем openvpn в автозагрузку:

# echo 'openvpn_enable=»YES»' >> /etc/rc.conf

Больше пока ничего не делаем.

Установка и настройка webmin

Ставим webmin:

# cd /usr/ports/sysutils/webmin # make install clean

Добавляем webmin в автозагрузку:

# echo 'webmin_enable=»YES»' >> /etc/rc.conf

После установки запускаем настройку. Я сразу же меняю стандартный порт webmin на что-то экзотическое. Это пусть и не сильно, но повышает безопасность сервера.

# /usr/local/lib/webmin/setup.sh

Я все настройки оставляю по-умолчанию, только, как уже сказал, меняю порт, например на 11111 и в конце на вопрос:

Use SSL (y/n): y

отвечаю положительно.

После настройки, запускаем webmin:

# /usr/local/etc/rc.d/webmin start

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

https://ip-adress:11111/

Настройка Webmin OpenVPN admin

Теперь скачиваем модуль для webmin

http://www.openit.it/index.php/en/downloads?task=view.download&cid=27

На всякий случай скопирую себе, если ссылка умрет:

//serveradmin.ru/files/openvpn-2.6.wbm.gz

Добавим модуль в webmin. Идем в раздел Webmin -> Webmin Configuration -> Webmin Modules, выбираем 

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

Сам модуль располагается в разделе Servers -> OpenVPN + CA. Отправляемся туда. Первым делом вы увидите сообщение:

OpenVPN executable not found

The OpenVPN package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.

Модуль не обнаружил установленный openvpn. Поможем ему это сделать. Создадим папку:

# mkdir /usr/local/etc/openvpn

Снова отправляемся в управление модулем. Нас встречает уже другое сообщение:

openssl.cnf batch file not found

The OpenSSL package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.

Соглашаемся с предложением установить OpenSSL. Жмем Click here и ждем окончания установки.

Теперь все готово. Можно генерировать корневой сертификат сервера. Идем в Servers -> OpenVPN + CA, заполняем поля формы и жмем Save:

Мы сформировали корневые сертификаты сервера. Проверить их можно в разделе модуля Certification Authority List. Сверху в списке будет единственный наш сервер.

Теперь создадим сервер openvpn. Идем в раздел VPN List и нажимаем New Vpn server. Получаем ошибку:

No server keys configured

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

Для сервера выбираем в выпадающем списке Server, остальные поля оставляем как есть. Если задать пароль, то при подключении клиента будет выводиться запрос на ввод пароля. Если это не нужно, то поле пароль оставляем пустым:

Создали два сертификата. Теперь идем создавать сервер. В разделе VPN List нажимаем New Vpn server. Тут нам открывается длинная форма для ввода настроек сервера. Я не буду подробно останавливаться на настройках. Это стандартные параметры файла конфигураций openvpn, в интернете много описаний на эту тему. Я приведу скриншоты своих настроек.

Обращаю лишь внимание на пункт Encrypt packets with cipher algorithm (option cipher) Я там выбрал AES-128-CBC 128 bit default key (fixed) Это не случайный выбор. С другими значениями у меня были ошибки при подключении клиентов, сейчас я уже не помню какие, но методом проб и ошибок я пришел к этому значению. С ним все нормально работает.

Сохраняем настройки. В списке серверов появился наш сервер:

Дальше добавим клиента. Нажимаем в строке нашего сервера на ссылку Client list и жмем кнопку New Vpn client. Выбираем единственный созданный нами сертификат client1 и заполняем форму с настройками клиента. Там все можно оставить по-умолчанию, кроме одного параметра remote (Remote IP) — тут указываем внешний адрес нашего сервера. В разделе 

Если нажать на ссылку Export, скачается архив со всеми необходимыми сертификатами и файлом конфигурации пользователя. Это очень удобно. Этот архив можно в готовом виде передавать клиенту. В нем будет все, что необходимо для подключения. Сохраним его для тестового подключения, к которому у нас все готово. Идем в начальную страницу модуля и жмем кнопку Start VPN. В ответ получаю ошибку:

Command Execution Error /usr/local/etc/rc.d/openvpn start.

Чтобы разобраться в чем проблема, смотрим лог messages. Можно через консоль, можно тут же в webmin. Видим там строки:

websrv root: /usr/local/etc/rc.d/openvpn: WARNING: /usr/local/etc/openvpn/openvpn.conf is not readable. websrv root: /usr/local/etc/rc.d/openvpn: WARNING: failed precmd routine for openvpn

Все ясно. Сервер не стартовал, потому что ищет настройки в файле /usr/local/etc/openvpn/openvpn.conf, а у нас его нет. Вместо него модуль openvpn admin создал файл websrv.local.conf Я не стал разбираться в чем тут дело.

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

Делается это так:

# echo 'openvpn_configfile=»/usr/local/etc/openvpn/websrv.local.conf»' >> /etc/rc.conf

Пробуем снова запустить сервер через openvpn admin. Сервер успешно стартовал. Поднялся интерфейс tun0 с заданным адресом:

tun0: flags=8051 metric 0 mtu 1500 options=80000 inet6 fe80::20c:29ff:fe19:9976%tun0 prefixlen 64 scopeid 0x3 inet 10.0.0.1 —> 10.0.0.2 netmask 0xffffffff nd6 options=21 Opened by PID 66606

В каталоге /usr/local/etc/openvpn/websrv.local созданы 3 папки: bin, ssd, logs. В ssd располагается файл настроек нашего пользователя client1. Его можно править как непосредственно тут, так и через webmin. В папке с логами лежат логи и файл ipp.txt, в котором сохраняются ip адреса, выданные клиентам, с тем, чтобы в случае повторного подключения выдать тот же адрес.

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

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

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по Freebsd

Рекомендую полезные материалы по Freebsd:
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности.Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.

Источник: https://serveradmin.ru/web-interfeys-openvpn-ustanovka-i-nastroyka/

Веб менеджер OpenVPN клиентских ключей VPNFace Lite

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

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

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

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

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

Так родился проект VPNFace — набор серверных скриптов для управления пользовательскими ключами OpenVPN серверов, и веб панель управления к ним.

А через несколько дней разработки, я поймал себя на мысли, что уже где-то 25% закладываемого функционала никогда не будут востребованы этим самым «обычным пользователем», и к названию добавилась приставка Lite, а основной концепт проекта изменился с конструктора общего назначения на узкозаточеный инструмент, что заодно ещё и значительно сократило время разработки до релиза.

Конечно — ну никогда такого же не было — зачем ещё один OpenVPN управлятор? Сказать честно — мысль о других проектах впн менеджеров пришла ко мне в голову когда основное ядро уже работало, а я пилил всякие мелочи. Поначалу огорчившись, что так сглупил и не провёл даже минимального исследования (так как не люблю особо плодить велосипеды), но после изучения вышеперечисленых проектов, понял, что мой тоже имеет свою нишу.

Ключевые особенности:

  1. Функциональный минимализм: обычному пользователю при взаимодействии с vpn в качестве администратора требуется всего несколько функций — создать ключ, заблокировать, и разблокировать. Вряд ли он подумает о том, что бы создать ещё один впн сервер, если у него есть работающий, или полезть менять данные центра сертификатов. Мало кому понадобятся красивые графики трафика, и функционал ентерпрайз сервера, при цели спокойно пользоваться телеграмом.
  2. Программный минимализм: единственная программа, необходимая пользователю — официальный OpenVPN клиент, доступный на всех системах и устройствах. Панель управления ключами — веб приложение, работающее в браузере. Администраторская авторизация осуществляется ключом vpn.
  3. Полуфиксированная конфигурация: 80-и процентам пользователей необходимо одно и то же, и их не волнует какие ip адреса внути впн сетей (они даже не догадываются о том что они там есть), ещё 15% требуют немного больше, но, аналогично — одно и тоже, оставшиеся 5% пишут аналогичные штуки сами, реализовывая в них всё как им надо, так что о них можно не переживать. Но тем не менее панель можно вручную подключить к уже работающим openvpn серверам, или подправить данные сертификатов перед стандартной установкой.
  4. Абсолютная непривязанность к хостинг компаниям или другим сторонним сервисам — копий в спорах о самом волшебном хостинге сломано не мало, это остаётся полностью на выбор пользователя. Скрипту более важна операционная система сервера — он написан под Ubuntu/Debian системы, но они есть у всех хостеров. Система спокойно встанет и во внутренней домашней сети, и в корпоративной.

Источник: https://habr.com/post/412815/

Quick Start Guide

this guide will help you understand the basics for setting up and deploying the OpenVPN Access Server

OpenVPN Access Server consists of three major components:

    1. OpenVPN Server
    2. Admin Web Interface/Admin UI
    3. Connect Client

OpenVPN Server: 
The VPN server is the underlying component in OpenVPN Access Server that does all of the background work; routing, tunneling, encryption, user management, authentication etc. OpenVPN Access Server comes with a Web GUI that helps to manage the underlying components of the VPN server.

Admin Web Interface: 
The Admin Web Interface makes for an easier management interface in OpenVPN Access Server.

In the Admin Web Interface an administrator can manage options such as layer 2 or layer 3 routing, user permissions, server network settings, authentication and web server certificates.

By default an administrator can access the Admin Web Interface by visiting this address in a web browser: https://openvpnasserverip:943/admin (Please paste this url into your browser and replace «openvpnasip» with the IP or hostname you allocated to your openvpn-as instance)

Connect Client: 
The Connect Client Interface is a component of OpenVPN Access Server that allows users to connect to the VPN directly through their web browser. The Connect Client also gives the user options to download their configuration files which can be userd on other OpenVPN clients.

— OpenVPN Connect Client
— OpenVPN Connect Client for Mac
— OpenVPN Community Client (For Linux/Windows) 

Initial Configuration:
In order to install OpenVPN Access Server there are a few things that will need to be looked at; — Linux Distribution

— CPU Architecture

Note: If you decide to use one of our virtual appliances please refer to one of these guides instead:

— VMware Virtual Appliance
— Hyper-V Virtual Appliance

Linux Distribution: You will need to make sure you download the package that corresponds with the current OS Distro, we currently support these Linux Distros: — Ubuntu — RHEL — Fedora — CentOS — openSUSE

— Debian

Click here to download the OpenVPN Access Server packages

CPU Architecture:

Читайте также:  Подключение к lxc контейнеру centos 7 по ssh в proxmox

You will need to make sure you install the correct package depending on your CPU Architecture (32bit or 64bit)
Installing the OpenVPN-AS Package:

To Install the OpenVPN-AS package in Ubuntu or Debian you will need to run this command:dpkg -i openvpnasdebpack.debTo install the OpenVPN-AS package in CentOS, RHEL, or Fedora you will need to run this command:rpm -i openvpnasrpmpack.

rpmThe Admin Account for OpenVPN-AS needs to be setup through terminal by doing the following:Change the password:passwd openvpnYou will then be prompted to set a password for the user openvpn, after setting the password you can login to the Admin UI with the Username openvpn and the password you set.

Note: In some circumstances for certain configurations you may need to run the complete ovpn-init script terminal: /usr/local/openvpn_as/bin/ovpn-init
Configuring the Admin Web Interface:

After you have completed the Initial Configuration Tool you should then be able to access the Admin Web Interface through your preferred web browser.

You should have noticed an link to the Admin Web Interface after you completed the Initial Configuration Tool, if you missed it you can access the Admin Web Interface by typing the following in your browsers address bar: https://openvpnasip:943/admin (Please replace «openvpnasip» with the IP you allocated to your openvpn-as instance)
You can now go ahead and login with your openvpn admin credentials. Once logged in you will see the following screen:

Configuring Server Network Settings:
If you want the OpenVPN Access Server to be reachable from the internet you will need to set the Hostname or IP address to a hostname or IP that is facing the public internet. Please refer to the screenshot below:


VPN Settings:

Источник: https://openvpn.net/quick-start-guide/

Поднимаем свой VPN с OpenVPN

Всем привет! Когда-то я писал статью о том, как сделать свой VPN, используя PPTP и сегодня я решил продолжить тему поднятия своего VPN-Сервера. Устанавливать я буду OpenVPN. Производить установку планирую на VPS от Fornex, приобретенный на черную пятницу, с установленной CentOS 7. Начнем.

OpenVPN

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

Установка OpenVPN

Для начала нам необходимо подключить Epel-репозиторий, в котором можно будет найти OpenVPN:

yum install epel-release

Ну а теперь можно и сам OpenVPN установить:

yum install openvpn

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

Как я уже говорил, для аутентификации пользователей мы будем использовать сертификаты. Для работы с сертификатами существует специальный набор скриптов — easy-rsa. Скачаем их:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

и распакуем:

unzip master.zip

Заходим в папку со скриптами:

cd easy-rsa-master/easyrsa3

Скопируем файл vars.example, сохранив его как vars:

cp vars.example vars

И выполним инициализацию:

./easyrsa init-pki

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

./easyrsa build-ca

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

  • ca.key — секретный ключ;
  • ca.crt — публичный.

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

./easyrsa gen-req server nopass

И подпишем его:

./easyrsa sign-req server server

Нас попросят подтвердить, что это нужный сертификат, а так же ввести пароль от удостовряющего центра сертификатов. Создадим еще и ключ Диффи-Хелмана:

./easyrsa gen-dh

Скопируем все наши сертификаты поближе к OpenVPN:

cp pki/ca.crt /etc/openvpn/ca.crt
cp pki/dh.pem /etc/openvpn/dh.pem
cp pki/issued/server.crt /etc/openvpn/server.crt
cp pki/private/server.key /etc/openvpn/server.key

Ну и создадим сертификаты для пользователя:

./easyrsa gen-req client nopass
./easyrsa sign-req client client

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

Файл настроек OpenVPN находится по пути /etc/openvpn/server.conf, но его нет… Давайте создадим, добавив него следующее содержимое:

port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig 10.10.0.1 255.255.255.0
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3
push «redirect-gateway def1»
push «route 0.0.0.0 0.0.0.0»
push «dhcp-option DNS 8.8.8.8»

Откроем порт:

firewall-cmd —add-service openvpn —permanent firewall-cmd —add-port=1194/tcp —zone=public —permanent
firewall-cmd —add-masquerade —permanent
firewall-cmd —reload

Проверим, включился ли masquerade:

firewall-cmd —query-masquerade

Если выводит yes, то всё хорошо. Подправим файл /etc/sysctl.conf, добавив в него следующую строку:

net.ipv4.ip_forward = 1

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

sysctl -p

И запускаем OpenVPN:

systemctl start openvpn@server

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

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

client
dev tun
remote IP 1194
proto tcp
persist-key
persist-tun
resolv-retry infinite
nobind
comp-lzo
verb 3
cipher AES-256-CBC
keysize 256
remote-cert-tls server
key-direction 1

File /etc/openvpn/ca.crt

File pki/issued/client.crt

File pki/private/client.key

Не забудьте поставить в этом конфиге IP вашего сервера(IP), а так же вставить содержимое указанных файлов. Таким образом мы создаем 1 файл, в котором сразу указаны и настройки клиента, и сертификаты. Если вы хотите разделить на файлы(то есть сертификаты раздавать файлами отдельно от конфига), то можно создать такую конфигурацию клиента:

client
dev tun
remote IP 1194
proto tcp
persist-key
persist-tun
resolv-retry infinite
nobind
comp-lzo
verb 3
cipher AES-256-CBC
keysize 256
remote-cert-tls server
key-direction 1
ca /Path/To/ca.crt
cert /Path/To/client.crt
key /Path/To/client.key

Альтернативна — OpenVPN AS

Если вам всё это показалось сложным, то можно воспользоваться альтернативным вариантом — OpenVPN AS. Данная версия OpenVPN имеет удобный web-интерфейс, а так же поставляется с двумя бесплатными лицензиями(пользователями). Для установки OpenVPN AS необходимо выполнить следующие команды:

wget http://swupdate.openvpn.org/as/openvpn-as-2.1.12-CentOS7.x86_64.rpm
rpm -i openvpn-as-2.1.12-CentOS7.x86_64.rpm
passwd openvpn

На этом установка завершена, осталось лишь открыть 943 порт(web-интерфейс), а так же необходимые для OpenVPN порты:

firewall-cmd —add-port=943/tcp —zone=public —permanent
firewall-cmd —add-port=443/tcp —zone=public —permanent
firewall-cmd —add-port=1194/udp —zone=public —permanent
firewall-cmd —reload

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

Заключение

Надеюсь данная статья кому-нибудь пригодится и поможет поднять свой VPN сервер без всякого труда. Спасибо за внимание.

Источник: https://web-wost.ru/podnimaem-svoy-vpn-s-openvpn/

OpenVPN Access Server. Установка и настройка

– полнофункциональное SSL VPN программное решение, включающее в себя непосредственно сервер, административный веб интерфейс и клиентские программы под различные платформы (Windows, Mac, Linux) для соединения с сервером. Базовая (бесплатная) лицензия рассчитана на двух клиентов, и этого вполне достаточно, если использовать OpenVPN AS в личных целях.

Установка и настройка OpenVPN AS гораздо проще стандартной установки OpenVPN, без каких-либо пользовательских интерфейсов (UI). Ещё одно преимущество OpenVPN AS в том, что пакет содержит в себе клиентские программы под Android и IOS. Таким образом вы без проблем сможете подключаться к серверу с планшетов и смартфонов. И так, установка и базовая настройка.

Имеется VPS с 64-х битной Debian 7 и двумя сетевыми интерфейсами (локальный и смотрящий в Интернет). На стороне сервера должны быть включены NAT и TUN/TAP. О выборе хостинга для этих целей я уже писала в статье о настройках VPN на базе PPTP.

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

Начнём. Предполагается, что всё необходимое у нас имеется и функционирует. Переходим на сайт OpenVPN и выбираем свою ОС. Как я уже сказала, у меня Debian 7, поэтому скачиваем на сервер пакет под эту ОС.wget http://swupdate.openvpn.org/as/openvpn-as-2.0.7-Debian7.amd64.debУстанавливаем.dpkg –i openvpn-as-2.0.7-Debian7.amd64.debВсё.

OpenVPN AS теперь установлен и работает. Все сопутствующие настройки и правила iptables пропишутся автоматически. Изменения в iptables так же будут вноситься по мере настройки сервера через UI.

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

passwd openvpnДля доступа к панели управления используем следующую ссылку: https://YourIpAddress:943/adminГде «YourIpAddress» — внешний IP сервера. Используем в качестве логина openvpn и в качестве пароля то, что задали выше.По умолчанию тут в общем всё уже работает. Можно внести некоторые изменения. Пример:Вкладка Server Network Settings.

Тут можно указать тип соединения (TCP/UDP), если есть необходимость. По умолчанию включены оба. Можно выбрать какие интерфейсы будут слушаться. Для соединения, конечно же, необходим внешней. Но если вы подключены к сети, то доступа к консоли сервера, или другим ресурсам VPS у вас не будет.

Дело в правилах iptables и при том, что внешне вроде как бы всё разрешено, фаервол не пропускает соединения с внешнего IP адреса сервера. Другими словами, если на этом сервере у вас что-то ещё, кроме OpenVPN, то пока вы подключены к OpenVPN, доступа к этим ресурсам у вас не будет.

Если VPN сервер будет слушать все сетевые интерфейсы (включая eth1 – интерфейс локальной сети), то через консоль по ssh, или через файловый менеджер по sftp вы сможете соединиться с сервером через локальный адрес. То есть не ssh root@внешний_ip, а ssh root@локальный_ip. Если Admin UI так же будет доступен через локальный интерфейс, то доступ к нему так же будет возможен по локальному адресу, если у вас поднято VPN соединение. В общем, мне было лень искать причину, и я просто использую локальный IP для доступа к Admin UI, когда мне это нужно.

Вкладка VPN Settings.

Сетевой адрес – маска виртуальной подсети. Адреса из этого диапазона будут раздаваться клиентам. Можно указать статичный адрес. Это по умолчанию отключит возможность множественных подключений.

Так же в этой вкладке настраивается NAT и условия соединения: Должен ли клиент выходить в Интернет через шлюз VPN? Должен ли весь трафик клиента идти через VPN? В самом низу можно указать DNS серверы: Будут ли использоваться DNS клиента? Будут ли использоваться DNS основного сервера клиентом? Так же можно назначить свои DNS.

Вкладка Advanced VPN Settings.

Могут ли клиенты VPN иметь доступ друг к другу? Если «да», то клиенты сети будут видеть друг друга. Например, в Windows во вкладке «Сеть» будут отображаться компьютеры других пользователей. Множественные сессии. Если стоит галка, то под одним и тем же аккаунтом к сети могут присоединиться несколько устройств.

Не будет работать, если клиенту назначен статичный IP. Ниже можно указать локальные подсети, доступные из VPN. Если не указывать ничего, то клиенты VPN не будут видеть друг друга не смотря на настройки выше. VPN Mode Settings – настройки виртуальных сетевых интересов или моста для использования физического интерфейса. В моём случае NAT.

По умолчанию оно же.

Во вкладке User Permission можно назначать права администратора и закрывать доступ к сети для определённых клиентов. А так же разрешить доступ без пароля. Имеется ввиду, что при соединении с VPN пароль не запрашивается.

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

Не забываем нажимать кнопку «применить изменения» каждый раз после сохранения изменений в админ-панели. Собственно, базовые настройки закончены.

Далее в браузере открываем https://YourIpAddress:943, вводим свои данные и ниже выбираем «Login». Тут мы видим ссылки на различные клиенты.

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

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

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

Для Linux скачиваем файл по ссылке «Yourself (autologin profile)» (если пароль не требуется) и помещаем его в любую удобную директорию. Предположим, что файл скачался в /home/user/Downloads. Устанавливаем на ПК OpenVPN.sudo apt-get install openvpnДля Debian/Ubuntuyum install openvpnДля .rpm дистрибутивов (RedHat/Fedora/CentOS/OpenSUSE и т.д.

)Сервер не работает с OpenVPN ниже версии 2.1. Проверяем версию.openvpn –versionЕсли всё хорошо, то настраиваем соединение.cd ~/Downloads
sudo openvpn —config client.ovpnГде «client.ovpn» — скаченный файл настроек. По тому же принципу настраивается соединение на роутере. Но только на альтернативных прошивках. Показываю на примере прошивки Gargoyle.

К сожалению, на моём допотопном роутере не всё так гладко. С настойками по умолчанию Gargoyle не работает с tun серверами. Для этого скаченный файл помещаем в любую удобную директорию. Имеется ввиду, что раз вы используете альтернативную прошивку, то знаете, как попасть в сам роутер и уж тем более знаете, что там кастрированный Linux.

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

Предположим файл у нас в директории /etc/openvpn. Тогда:cd /etc/openvpn openvpn —config client.ovpnДожидаемся окончания. В моём случае (видимо из-за древнего роутера) окончания можно ждать до морковкиной загниви. Главное, что все основные процессы прошли без ошибок.

Такие как настройка маршрутизации и непосредственно работа с tun. Далее переходим в настройки самого роутера и во вкладке OpenVPN выбираем ручную настройку. Если настройки и сертификаты не прописались сами при выполнении предыдущих команд. Все эти настройки и сами сертификаты есть в скаченном файле.

Читайте также:  Взятие и сдача крепости порт-артур

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

Для верности можно привести их к такому виду:setenv FORWARD_COMPATIBLE 1
client
server-poll-timeout 4
nobind
remote SERVER_IP 8090 udp
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

Где SERVER_IP – IP нашего сервера.

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

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

Теоретически, все эти пляски с бубном вокруг роутера не обязательны. Всё это должно было подгрузиться при выполнении команды openvpn —config client.ovpn на стороне роутера. Но не у всех оно срабатывает как надо.

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

Источник: https://www.newalive.net/114-openvpn-access-server-ustanovka-i-nastroyka.html

Простая настройка OpenVPN с фиксированными адресами клиентов

В этой заметке подробно описана процедура настройки OpenVPN (virtual private network – виртуальная частная сеть), в рамках модели сервер-клиент и способ фиксации адресов клиентов в виртуальной сети, на базе сертификатной аутентификации. Эта технология позволяет быстро и экономично поднимать виртуальные локальные сети на базе существующих физических или интернета.

Стоит заметить, что компания OpenVPN предлагает использовать свой продукт OpenVPN Access Server (пакет openvpn-as) – сервер с возможностью настройки и контроля доступа через web-интерфейс, но, к сожалению, количество клиентов для него ограничено лицензией, поэтому опишем процедуру настройки пакета openvpn.

Прежде всего определимся с адресным диапазоном. Необходим один внешний фиксированный IP адрес для VPN-сервера (в том случае если VPN будет работать через интернет), условно обозначим его 9.9.9.9

Диапазон внутренних адресов виртуальной сети мы предлагаем использовать такой: 192.168.10.2 — 192.168.10.99

Часть I – настройка сервера

Установим пакет из репозиториев, в Debian/Ubuntu это:

sudo apt-get install openvpn

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

cd /usr/share/easy-rsa

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

sudo nano vars

В файле vars измените следующие значения:

export KEY_DIR=»/etc/openvpn/keys» # путь к папке где будут лежать ключи export KEY_COUNTRY=»RU» # это и следующие значения изменяйте по-собственному усмотрению export KEY_PROVINCE=»MS» export KEY_CITY=»Moscow» export KEY_ORG=»СompanyName»

export KEY_EMAIL=»some@address.ru»

Следующие команды рекомендуем выполнять под root’ом, дабы не возникло проблем с правами:

su mkdir /etc/openvpn/keys mkdir /etc/openvpn/ccd source ./vars ./clean-all ./build-dh ./pkitool —initca ./pkitool —server server ./pkitool client openvpn —genkey —secret ta.key

mv ./ta.key /etc/openvpn/keys

Эти команды создают необходимые папки и генерируют сертификаты для сервера и клиентов с данными введенными в файл vars.
Создадим файл настроек:

nano /etc/openvpn/openvpn.conf

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

mode server # указывает программе работать в режиме сервера tls-server # активирует работу Transport Layer Security (криптографический протокол) сервера proto tcp-server # выбираем протокол TCP (если необходим UDP, тогда: proto udp) dev tap # используемый тип интерфейса — L2 туннель (для L3-туннеля: dev tun) port 1200 # указываем порт, по которому будет работать OpenVPN daemon # программа будет работать в режиме демона, если нет в этом необходимости — просто раскомментируйте строку tls-auth /etc/openvpn/keys/ta.key 0 # активирует дополнительный уровень аутентификации ca /etc/openvpn/keys/ca.crt # путь к корневому сертификату cert /etc/openvpn/keys/server.crt # путь к сертификату сервера key /etc/openvpn/keys/server.key # ключ сервера dh /etc/openvpn/keys/dh2048.pem # файл алгоритма Diffie-Hellman client-config-dir /etc/openvpn/ccd # путь к каталогу индивидуальных клиентских конфигураций ifconfig 192.168.10.1 255.255.255.0 # устанавливает виртуальный адрес сервера ifconfig-pool 192.168.10.2 192.168.10.99 # устанавливает диапазон виртуальных адресов для клиентов push «route 192.168.10.0 255.255.255.0 192.168.10.1» # эта команда будет выполняться на клиентских компьютерах, во время инициализации OpenVPN, она будет активировать роутинг так, чтобы клиенты автоматически использовали openvpn-сервер как шлюз для этой подсети duplicate-cn # включает возможность использования одного ключа несколькими клиентами verb 3 # указывает уровень отладки cipher DES-EDE3-CBC # шифрование по алгоритму DES-EDE3-CBC persist-key # будет загружать ключи в режиме persist, то есть их перезагрузка не потребуется в случае разрыва соединения log-append /var/log/openvpn.log # путь к файлу лога persist-tun # активирует работу tun/tap устройств в режиме persist

comp-lzo # активирует использование сжатия

Всё, если процедура прошла без ошибок, то сервер готов. В случае init перезапустите его командой:

sudo /etc/init.d/openvpn restart

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

sudo openvpn —config /etc/openvpn/openvpn.conf

Часть II – настройка клиента

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

sudo apt-get install openvpn
sudo mkdir /etc/openvpn/keys

С сервера надо взять 4 файла:

ca.crt client.crt client.key

ta.key

и скопировать их в папку /etc/openvpn/keys клиента.

Создаем файл-настроек клиента:

sudo nano /etc/openvpn/client.conf

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

tls-client # указывает программе работать в режиме клиента proto tcp-client # активирует протокол TCP remote 9.9.9.9 # внешний адрес сервера dev tap # используемый тип интерфейса — L2 туннель port 1200 # номер openvpn-порта сервера cd /etc/openvpn # указывает на директорию по-умолчанию pull # указывает принимать команды от сервера tls-auth /etc/openvpn/keys/ta.

key 1 # активирует дополнительный уровень аутентификации ca /etc/openvpn/keys/ca.crt # путь к корневому сертификату сервера cert /etc/openvpn/keys/client.crt # путь к сертификату клиента key /etc/openvpn/keys/client.key # путь к ключу клиента cipher DES-EDE3-CBC # шифрование по алгоритму DES-EDE3-CBC log-append /var/log/openvpn.

log # путь к файлу лога

comp-lzo # активирует использование сжатия

Клиент готов, в случае установленного init можно запускать:

sudo /etc/init.d/openvpn restart

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

sudo openvpn —config /etc/openvpn/client.conf

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

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

sudo route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.10.1 tap0

Также необходимые подсети вы можете добавить в конфигурационный файл сервера /etc/openvpn/openvpn.conf, добавив строки подобно этой:

push «route 192.168.5.0 255.255.255.0 192.168.10.1»

Это даст возможность не поднимать каждую подсеть вручную.

Часть III – настройка фиксированных адресов

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

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

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 source ./vars ./pkitool client1

./pkitool client2

Создаем файл для client1:

sudo nano /etc/openvpn/ccd/client1

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

ifconfig-push 192.168.10.51 255.255.255.0

Аналогичным образом сделаем и для client2:

sudo nano /etc/openvpn/ccd/client2

Где добавим строку:

ifconfig-push 192.168.10.52 255.255.255.0

Такая настройка сделает адрес client1 – 192.168.10.51, а client2 – 192.168.10.52.
К этому стоит добавить, что эти файлы в папке ccd (параметр – client-config-dir) являются отдельными конфигурационными файлами клиентов, можете добавить в них какие-либо параметры по-своему усмотрению.

Настройка клиента для использования фиксированного адреса производится аналогично тому, как описано выше, единственное отличие в шагах, это то, что вместо client.crt и client.key вам надо скопировать и указать в файле конфигурации client1.crt и client1.key или client2.crt и client2.key соответственно.

О настройке OpenVPN-клиентов в системе Windows читайте здесь. Описание возможных параметров и команд по настройке OpenVPN вы можете найти здесь.

Источник: https://oss-it.ru/233

OpenVPN — Документация Ideco UTM — Компания «Айдеко»

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

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

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

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

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

Организация туннеля между двумя серверами Ideco UTM

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

Для настройки туннеля перейдите в меню Сервер -> Интерфейсы и создайте новый интерфейс нажатием на кнопку «Добавить». Выберите тип интерфейса «OpenVPN».

Меню выбора подключения по OpenVPN представлено на фрагменте экрана ниже.

После создания интерфейса необходимо его настроить. Для этого нам предстоит определить все параметры, описанные в этой таблице.

ПараметрОписание
Имя интерфейса Кратко опишите назначение интерфейса в инфраструктуре вашей сети.
Включен Отметьте для того чтобы активировать интерфейс.
Внешний IP-адрес Укажите внешний публичный адрес этого сервера.
Локальный порт Укажите UDP-порт для установления OpenVPN на стороне этого сервера.
Удалённая локальная сеть Укажите адрес локальной сети удалённого сервера. В зависимости от этого адреса автоматически пропишется маршрут.
Удаленный внешний IP-адрес Укажите публичный IP-адрес удаленного сервера, с которым нужно организовать защищенный канал связи.
Удалённый порт Укажите UDP-порт для установления OpenVPN на стороне удалённого сервера.
Удалённый туннельный IP-адрес Укажите защищённый адрес удалённого сервера. По умолчанию это 10.128.0.0, защищённый адрес на удалённом Ideco UTM должен отличаться от защищённого адреса на этом сервере.
Сгенерировать ключ Сгенерируйте публичный ключ, если удаленные сервера должны подключаться к этому серверу. Как правило, центральный офис предоставляет публичные ключи для подключения удаленных офисов к нему по этому ключу, а удаленные офисы используют ключ главного сервера для подключения к серверу по этому ключу.
RSA-ключ в текстовой форме Позволяет скопировать содержимое ключа в текстовой форме и отправить его администратору удалённого сервера по ICQ, почте и т.д.
Скачать ключ Позволяет сохранить публичный ключ этого сервера на локальной машине для дальнейшей передачи на удаленный сервер. В дальнейшем удаленный сервер будет подключаться к этому серверу по выданному ему ключу. Как правило, используется в центральном офисе. Выгрузите ключ для дальнейшей передачи его на сервер в удаленном филиале.
Отправить ключ Используется для помещения публичного ключа удаленного сервера на этот сервер для дальнейшего подключения к удаленной стороне по этому ключу. Как правило, используется в филиалах. Так как мы настраиваем подключение в головном офисе, то мы не сохраняем на него сторонние ключи, предназначенные для подключения клиентов.

Форма настройки интерфейса для сервера в центральном офисе показана ниже.

Сохраняем настройки интерфейса в головном офисе, нажав кнопку «Сохранить».

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

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

Также для корректного функционирования OpenVPN-туннеля необходимо настроить некоторые параметры. Для этого в web-интерфейсе перейдите в меню Безопасность -> Дополнительные настройки и выполните следующие действия:

  • отключите проверку обратного пути (RP_FILTER).

Проверить это можно по индикатору состояния OpenVPN интерфейса. Маршруты между локальными сетями настраиваются автоматически, если правильно заполнено поле «Удалённая локальная сеть» на обоих серверах.

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

Организация point-to-point (peer-to-peer, p2p) туннеля м/у Ideco и сторонним open vpn сервером

Ideco UTM может быть подключен к удаленному unix-подобному openvpn серверу в режиме p2p с использованием pre-shared-key (PSK). Для этого нужно:

  1. Создать и настроить openvpn интерфейс на UTM, заполнив все параметры подключения. В поле «Удаленный туннельный IP-адрес» следует указать адрес openvpn сервера в туннеле, в данном примере это 172.16.0.2. Это не адрес на сетевой карте удаленного сервера, а адрес сервера внутри создаваемого м/у серверами туннеля. Адрессацию для устройств (UTM, openvpn сервер) выберите самостоятельно. Туннельная сеть должна отличаться от сетей на интерфейсах ideco и от сети за openvpn-сервером. В этой статье подключение описано на примере сети 172.16.0.0/24.
  2. Сгенерируйте PSK ключ на UTM и скопируйте его. Позже он будет использован при настройке openvpn-сервера.
  3. Для openvpn сервера создайте конфигурационный файл, примерно следущего содержания :

    Параметры ifconfig, local, remote и route отредактируйте в соответствии с вашими настройками сетей.

  4. Скопированный с UTM PSK ключ поместите в /etc/openvpn/keys/static.key.
Читайте также:  Настройка ssl в apache на centos

Источник: https://doc.ideco.ru/display/ICS/OpenVPN

Организация каналов между офисами при помощи OpenVPN на платформе Linux

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

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

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

Прежде всего несколько слов о том, что такое OpenVPN — это свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом.

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

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

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

Схема сети и маршрутизация

Мы специально не стали разворачивать для OpenVPN отдельную конфигурацию в наше лаборатории, а воспользовались уже существующими виртуальными машинами. В качестве сервера центрального офиса мы использовали роутер на базе Ubunutu Server 14.04 LTS, за которым находится сеть 192.168.

31.0/24, в которой находится рабочая станция под управлением Windows 10. В филиале OpenVPN установлен на сервер с Debian 8, который принадлежит сети 192.168.18.0/24, в которой находится рабочая станция с Windows 8.1 и которая выходит в интернет через простой роутер начального уровня.

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

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

В случае, когда OpenVPN расположен на одном из узлов сети ситуация несколько иная. Так, например, пакеты к сети 192.168.31.0/24 будут также направлены шлюзу, который их просто отбросит, так как диапазоны частных сетей («серые» IP) не маршрутизируются.

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

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

В нашем случае потребуется маршрут (на роутере или на клиентах):

192.168.31.0 mask 255.255.255.0 192.168.18.131

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

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

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

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

apt-get install openvpn easy-rsa

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

Скопируем рабочую директорию easy-rsa в папку с настройками OpenVPN:

cp -r /usr/share/easy-rsa /etc/openvpn

В своей работе easy-rsa использует библиотеку openssl и содержит конфигурационные файлы для разных версий библиотеки. В современных системах повсеместно используется openssl-1.0.x поэтому сразу делаем символическую ссылку на нужный конфигурационный файл:

ln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

Теперь откроем файл /etc/openvpn/easy-rsa/vars и отредактируем в нем следующие строки, указав собственные учетные данные, например, так:

export KEY_COUNTRY=»RU»export KEY_PROVINCE=»BEL»export KEY_CITY= «Belgorod»export KEY_ORG=»Interface LLC»export KEY_EMAIL=»admin@interface31.lab»

export KEY_OU=»Office»

Сохраним файл и перейдем к созданию собственного CA, для этого перейдем в директорию easy-rsa и загрузим переменные:

cd /etc/openvpn/easy-rsa
source ./vars

Затем произведем очистку и инициализацию нашего центра сертификации:

./clean-all
./build-ca

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

https://www.youtube.com/watch?v=KVud9o5U9fI

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

После выполнения данной операции в папке /etc/openvpn/easy-rsa/keys появятся файлы ca.crt и ca.key.

Первый является сертификатом с публичным ключом и должен присутствовать на всех узлах OpenVPN сети, а файл с расширением .key — закрытый (приватный) ключ и доступ к нему должен быть ограничен. Файл ca.

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

Закончив с центром сертификации перейдем к формированию ключей и сертификатов сервера. Но сначала создадим файл параметров Диффи-Хеллмана.

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

./build-dh

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

Наконец сформируем ключи собственно для сервера:

./build-key-server server

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

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

Теперь перейдем к настройке самого OpenVPN. Прежде всего создадим директорию для хранения ключей, несмотря на то, что можно указать пути к папке с ключами easy-rsa, мы все-таки советуем хранить серверные ключи отдельно.

mkdir /etc/openvpn/keys

Перейдем в папку с ключами easy-rsa и скопируем необходимые ключи и сертификаты:

cd /etc/openvpn/easy-rsa/keys
cp ca.crt dh2048.pem server.crt server.key /etc/openvpn/keys

Затем распакуем и скопируем в /etc/openvpn шаблон файла конфигурации:

gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn

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

Откроем данный файл (/etc/openvpn/server.conf) и перейдем к его редактированию, если не указано иное, то приведенные ниже опции следует найти и привести к указанному виду, при необходимости раскомментировав. Опции перечислены в порядке их следования в файле.

port 1194proto udp

dev tun

Данные опции установлены по умолчанию и задают порт, протокол и тип туннеля, менять их не следует, однако на плохих каналах иногда имеет смысл использовать протокол tcp. Ниже добавим опцию, указывающую топологию создаваемой VPN-сети:

topology subnet

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

ca keys/ca.crtcert keys/server.crtkey keys/server.key

dh keys/dh2048.pem

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

Зададим диапазон OpenVPN сети:

server 10.8.0.0 255.255.255.0

Следующая опция указывает файл для хранения выданных клиентам IP-адресов, так как OpenVPN прекрасно умеет назначать адреса мы не видим смысла делать это вручную:

ifconfig-pool-persist ipp.txt

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

client-config-dir ccd

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

route-gateway 10.8.0.1

Зададим маршрут к клиентской сети, если сетей несколько — то строк тоже должно быть несколько. Данная опция указывает OpenVPN при запуске создать маршруты в системе для указанных подсетей для направления предназначенных им пакетов в туннель.

route 192.168.18.0 255.255.255.0

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

push «route 192.168.31.0 255.255.255.0»

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

keepalive 10 120

Данная опция устанавливает интервал проверки узла (10 сек) и время после которого, при отсутствии ответа, клиент считается неактивным.

Укажем тип применяемого шифрования, на выбор предлагается три вида шифра, но Triple-DES имеет самые большие накладные расходы, поэтому выбирать следует между Blowfish и AES. Однозначно дать рекомендации здесь трудно, но следует учитывать, что AES де-факто является промышленным стандартом и аппаратно поддерживается в процессорах Intel.

cipher AES-128-CBC

Включим сжатие:

comp-lzo

В целях безопасности понизим права запущенного сервера:

user nobody
group nogroup

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

persist-key
persist-tun

Укажем расположение логов:

status /var/log/openvpn-status.log
log /var/log/openvpn.log

Следующие опции задают подробность лога и количество повторяющихся в логе сообщений:

verb 3
mute 20

Для отладки проблем с подключением уровень лога следует поднять до 5-6.

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

mkdir /etc/openvpn/ccd

Теперь можно попробовать запустить сервер:

service openvpn start

Убедимся в наличии сетевого интерфейса туннеля командой

ip a

И проверим таблицу маршрутизации:

ip route

Как видим — необходимые маршруты добавлены автоматически.

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

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

cd /etc/openvpn/easy-rsa
source ./vars

Выполним генерацию клиентских ключей и сертификатов командой:

./build-key client1

где client1 — имя ключа и сертификата.

На компьютер клиента нам нужно передать ca.crt, client1.crt и client1.key, последний файл является секретным и не должен передаваться в открытом виде по незащищенным каналам.

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

touch /etc/openvpn/ccd/client1

Откроем этот файл и внесем в него строки:

iroute 192.168.18.0 255.255.255.0

Данная команда создает маршрут в OpenVPN сети, направляя пакеты предназначенные сети 192.168.18.0 на внутренний адрес данного клиента. В таблице маршрутов ОС данный маршрут не отображается, но без него маршрутизация в OpenVPN сети правильно работать не будет.

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

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

apt-get install openvpn

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

mkdir /etc/openvpn/keys

Скопируем файл с шаблоном конфигурации клиента:

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

И перейдем к его редактированию:

clientdev tun

proto udp

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

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

remote ovpn.example.com 1194

Вместо доменного имени можно указывать IP-адрес, например, так:

remote 111.222.333.444 1194

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

resolv-retry infinite

Понижаем права службы после запуска (если конфигурационный файл предназначен для Windows-машин данные опции не нужны):

user nobody
group nogroup

Обязательно проверяем наличие:

persist-key
persist-tun

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

ca keys/ca.crtcert keys/client1.crt

key keys/client1.key

Следующая опция предотвращает потенциальные атаки класса «человек посередине»:

ns-cert-type server

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

cipher AES-128-CBC

Включаем сжатие:

comp-lzo

Задаем расположение логов и их детализацию:

status /var/log/openvpn-status.loglog /var/log/openvpn.logverb 3

mute 20

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

service openvpn@client start

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

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

Например, мы добавили такой маршрут на клиентском ПК c Windows 8.1:

route add -p 192.168.31.0 mask 255.255.255.0 192.168.18.131

После чего без каких-либо проблем смогли получить доступ к компьютерам в сети офиса (добавленный вручную маршрут мы выделили на скриншоте).

А также в обратном направлении.

Обратите внимание, что в этом случае никаких дополнительных маршрутов к сети 192.168.18.0 на клиентском ПК прописывать нет необходимости.

Источник: https://interface31.ru/tech_it/2016/09/organizaciya-kanalov-mezhdu-ofisami-pri-pomoshhi-openvpn-na-platforme-linux.html

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