Категория: Инструкции
OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.
Хотим соединить в одну виртуальную сеть несколько локальных сетей в офисах, географически расположенных в разных местах, посредством Интернета.
Хотим иметь доступ в рабочую локальную сеть из дома или в поездке
Имея сервер с белым IP есть желание выходить в сеть с этого IP (например если этот IP за пределами страны или сети, в которой блокируются определенные ресурсы в Интернете)
Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.
(для 14.04 LTS ) С лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает(не найдет easy-rsa), тогда делаем следующее:
Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов
Редактируем файл переменных
Здесь можно заполнить например так:
копируем конфиг openssl
Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей
Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars. поэтому можно ничего не менять.
Создаем ключ сервера
A challenge password []: Заполняется произвольным значением, насколько я понял это нужно только для создания ключа и больше нам не потребуется. Кто знает точно поправьте статью.
В конце соглашаемся с запросом на подпись и добавление сертификата в базу.
Можно сразу создать ключи для клиента, перейдя в соответствующую часть статьи. Я вынес в отдельный раздел, т.к. ключи клиента могут генерироваться не один раз, чтобы было понятнее с чего начать в том случае когда нужно добавить клиента
Создаем ключ Диффи-Хеллмана
Cоздаем ключ для tls-аутификации
Создадим директорию для клиентских конфигов
Можно запускать наш сервер OpenVPN
Смотрим список интерфейсов
Если среди прочих видим
значит VPN-сервер завелся. Если нет, то смотрим лог
Если сервер имеет «белый» IP то никакой маршрутизации на стороне сервера настраивать не нужно. Если сервер находится в локальной сети за NAT роутера то необходимо настроить маршрутизацию.
Для того, чтобы клиенты могли достучаться до сервера нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1). клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера). Кроме того устройствам в локальной сети нужно сообщить, что для доступа к сети за OpenVPN-сервером нужно обращаться к нему. Но проще задать этот маршрут на роутере, который обслуживает локалку.
Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client
В /etc/sysctl.conf расскомментируем #net.ipv4.ip_forward=1 после чего
Ключи клиента создаются на сервере
Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов
Создаем ключ клиента
В данном случае название ключа - client. Каждый ключ должен быть со своим именем.
Если хотим защитить ключ паролем, то генерируем его другой командой
В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.
Теперь нужно не забыть скопировать ключи (ca.crt, client.crt, client.key, ta.key ) на клиента OpenVPN в /etc/openvpn/keys/
Можно запускать наш клиент OpenVPN
Машина с openvpn уже готова работать с сервером в чём можно убедится
Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.
Также как в случае с сервером.
Если ваши цели были - только организовать VPN сеть или соединится с изолированной сетью (например из дома с локальной сетью на работе), то эта часть статьи вам не нужна.
Если же вы хотите организовать доступ из VPN сети в интернет с IP адреса сервера, то вам нужно настроить на сервере NAT. Сделать это можно следующей командой (на сервере):
Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.
Для того что бы настройки iptables сохранились после перезагрузки нужно их дополнительно сохранить:
К конфиге клиента client.conf нужно добавить строчку
Скрипт revoke-full создаст CRL-файл (certificate revocation list, список отозванных сертификатов) с именем crl.pem в подкаталоге keys. Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в /etc/openvpn, туда и копируем.
Это бывает полезно, например для клиента с ключем защищенным паролем, т.к. всё равно при старте системы такое соединение не поднимется в виду отсутствия пароля для ключа. Да и в том случае, если вы сделали ключ с паролем, значит, скорее всего, вам не нужно постоянное соединение.
VPN-сервер на ВМ Virtualbox (1 ядро i5-4670)
Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ/с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!
Форвардинг на хоста
Клиент Windows 7, OpenVPN 2.3 64, FX-6300
Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% - 40% на 1/6 ядер.
С конфигом выше - 14 МБ/с
Отключаем сжатие ;comp-lzo - прибавка не более 1 МБ/с - до 15 МБ/с
Отключаем аутентификацию auth none +2 МБ/с - до 17 МБ/с
Отключаем шифрование cipher none +2 МБ/с - до 19 МБ/с
Сжатие comp-lzo сжимает хорошо сжимаемые файлы в 2 раза хуже, чем zlib, зато почти не влияет не загрузку ЦП (в десятки раз быстрее). Проверял на копировании установленного в Windows Libreoffice 5. Сжатие в zip с помощью архиватора 7z дало результат около 35%, сжатие comp-lzo по статистике сетевого интерфейса - около 70%.
Максимальный прирост при отключении сжатия, шифрования и аутентификации составил около 35%. Не думаю, что это стоит того, чтобы отключать механизмы защиты, но ситуации бывают разные.
Может кому-то как мне будет интересно влияние опций на производительность и не придется тратить время на проведение замеров, хотя я бы с удовольствием ознакомился с результами других людей. Изначально тестил для себя, поэтому точных замеров не проводил, потом решил поделиться результатами.
Подробную инструкцию по установке, настройке и подключению клиентского приложения OpenVPN GUI
на семейство операционных систем Windows ,
вы можете найти на нашем форуме по ссылке https://www.freeopenvpn.ru/forum/viewtopic.php?id=6
Выберите из таблицы на странице со списком VPN серверов интересующую вас страну и скачайте файлы конфигурации OpenVPN (UDP | TCP). Для тех, кто не владеет информацией, поясним: UDP и TCP - это протоколы подключения. UDP является более скоростным протоколом, но и потребляет больше энергии на мобильных устройствах, к тому же может быть недоступен в некоторых сетях. TCP может работать немного медленнее, но позволяет подключиться через прокси-серверы и имеет широкую доступность.
Далее вам следует импортировать скачанные файлы конфигурации в систему:
Windows: скопируйте файлы .ovpn в папку
C:\Program Files\OpenVPN\config\;
Android, iOS, Mac OS: нажмите на файлы .ovpn в файловом менеджере и они импортируются самостоятельно.
Перед первым запуском приложения в ОС Windows. нажмите правой кнопкой мыши на ярлык OpenVPN, выберите "Свойства", откройте вкладку "Совместимость" и установите флажок у пункта "Запускать от имени администратора". После запуска, в трее появится иконка OpenVPN, нажмите на нее правой кнопкой, выберите в списке нужный вам файл конфигурации и установите соединение нажатием левой кнопки мыши.
В Linux запускайте OpenVPN командой:
sudo openvpn /путь до файла конфигурации .ovpn
В других операционных системах используйте графическую утилиту.
OpenVPN – тип частной виртуальной сети, позволяющий создать зашифрованный канал для обмена файлами между ее участниками и точку подключения для их выхода в интернет, используя общий шлюз. Чтобы создать VPN server или подключиться в качестве клиента к существующей сети понадобятся:
Технология, используемая в данной программе, позволяет создавать подключения «точка-точка» или клиента до сервера, даже расположенного за сетевым экраном. Причем никакая настройка последнего не потребуется.
Основные преимущества приложения для Windows 7 и Server 2008 r2:
Установку выполняем в каталог «OpenVPN», расположенный в корневой папке системного раздела.
Посмотрите ещё: Почему во время установки Windows 7 выдает ошибку
Чтобы server правильно функционировал, его необходимо запускать с администраторскими привилегиями.
Установка OpenVPN на Windows завершена.
Конфигурируем серверНастроить server немногим сложнее, чем клиента, потому выполняйте инструкции очень внимательно.
Если Windows не позволяет сохранить файл в указанную папку, запускаем текстовый редактор с администраторскими привилегиями и повторяем процедуру.
Дабы настроить client необходимо выполнить всего несколько действий, по сравнению с конфигурированием сервера, ведь не нужно генерировать сертификаты и ключи.
Здесь x.x –доменное имя или IP-адрес сервера OpenVPN, к которому подключается client, а 777 – порт сервера.
Посмотрите ещё: Таймер выключения компьютера Windows 7
Обращаем внимание на строку «Адрес IPv4».
(Visited 3 370 times, 12 visits today)
Столкнулся с необходимостью поднять OpenVPN. Случай мой оказался не стандартным. Cервер должен быть на Windows, клиентами же выступают пром. gsm-модемы. с линуксом на борту. Задача не простая, тут собран мой опыт по настройке OpenVPN, и варианты граблей с которыми мне пришлось в этом процессе столкнуться. Начну пожалуй с ресурсов которые мне в этом помогли:
Примеры настройки OpenVPNОсновные ресурсы с примерами настройки openVPN сервера и клиентов:
теперь ряд русскоязычных ресурсов:
# Эти параметры в среде windows — не дадут клиенту подключиться к серверу. их следует закоментировать или убрать.
user nouser
group nogroup
— Далее во избежание проблем с созданием сертификата клиента очищаем index.txt папке ssl
Сети связывать лучше посредством специальных устройств, нежели выделять для этого дела отдельный компьютер. Хорошая новость — есть огромное количество роутеров которые со спец прошивкой — поддерживают OpenVPN, если у вас возник вопрос «Какой роутер поддерживает OpenVPN» то поискать ответ можно тут:
Для себя, опытным путем, я выбрал роутер Asus RT-N10U, и настроил его под свой конфиг. Главное преимущество — возможность перепрошить его прямо в окне браузера. А дальше читайте в статье.
Конфиг OpenVPN Сервера, на Windows 7:Ну и собственно мой конфиг. Он прямо скажем не идеален, но вполне годен.
port 1194
proto udp
dev tap2
dev-node «vpn»
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
client-to-client #разрешить общение клиентов между собой подробнее см.ниже
topology subnet
route-method exe
route-delay 5
route 10.8.0.0 255.255.255.0
#PUSH START те данные которые мы передаем на клиент.
#push «dhcp-option gateway 10.8.0.1» — имело бы смысл с windows клиентами, у нас linux
push «persist-key»
push «persist-tun»
#PUSH END
duplicate-cn #позволяем нескольким клиентам пользоваться одним ключом
keepalive 10 120
#cipher AES-128-CBC #закоментировали алгоритм шифрования будет использован по умолчанию
comp-lzo
persist-tun
persist-key
persist-local-ip
persist-remote-ip
status openvpn-status.log
log c:\\OpenVPN\\log\\openvpn.log
verb 5
В нашем случае это GSM router IRZ RUH2, здесь я не даю подробной инструкции, просто конфиг, который у меня отлично работает. Ключи на модем я добавлял через upload в администрировании.
client
proto udp
dev tap2
remote 111.111.111.111 1194
ca ca.crt #ключи
key client.key
cert client.crt
route-method ipapi #если клиент Linux, exe если Windows
route-delay 5 #пауза для применения настроек 5-10 секунд
route 10.8.0.0 255.255.255.0 10.8.0.1 #прописываем на клиенте маршрут
route-gateway 10.8.0.1 #Шлюз
comp-lzo #сжатие
nobind #
persist-key #
persist-tun
verb 5
mute 20
В моем случае эта ошибка разрешилась с помощью изменения Hash Algorithm на SHA1 у клиента, т.е. приведение к тому же значению что и на сервере.
Authenticate/Decrypt packet error: cipher final failed— ошибка алгоритма шифрования. вероятно в настройках клиента и сервера указаны разные варианты cipher. Как вариант можно не указывать его вообще, тогда будет взят вариант по умолчанию (bf-cbc )
Не возможно подключиться к интерфейсу, если служба уже запущенаИдем в службы и выключаем её
При запуске сервера OpenVPN ошибкa: не возможно добавить маршрут в таблицу маршрутизацииРешение: Не хватает прав доступа, необходимо запустить сервер от имени администратора.
Клиент находит сервер, подключается, но не пингуется, или не может подключиться.— Необходимо на сервере внести в правила фаервола исключение для нашего сервиса.
Клиент находит сервер, но не пингуется.— Необходимо настроить маршрутизацию т.е. запустить запросы в нашу vpn сеть через наш tap интерфейс. В нашем случае мы можем запустить консоль Windows от имени админиcтратора и там вручную добавить маршрут к примеру:
route -p add 10.8.0.0 mask 255.255.255.0 10.8.0.1
-p — добавляем маршрут на постоянной основе, без этого аргумента при перезагрузки маршрут исчезнет.
10.8.0.0 mask 255.255.255.0 — задаем диапазон адресов для которых будет действовать маршрут, все пакеты идущие на адреса с 10.8.0.1 до 10.8.0.255.
10.8.0.1 — шлюз, gateway, на который будем слать пакеты. В нашем случае это сервер VPN соединения.
вылечилось добавлением openVPN в исключения фаервола.
Соответственно, для Windows систем, от XP до 7ки это можно сделать, выполнив в консоли следующую команду от имени администратора:
netsh firewall add allowedprogram program = C:\OpenVPN\bin\openvpn.exe name = «OpenVPN Server» ENABLE scope = ALL profile = ALL
Продолжение темы настройки openVPN:Lisp, склеивание линий под блоком.