OpenVPN — полнофункциональное средство построения виртуальных частных сетей (Virtual Private Networks, VPN), организации удалённого доступа, безопасного использования Wi-Fi и решения ряда других задач, связанных с безопасностью передачи данных, базирующееся на SSL. Работает в пространстве пользователя, не требует модификации ядра. Поддерживает большое количество операционных систем, в том числе Linux, FreeBSD и Windows.
Последнее обновление OpenVPN
была выпущена 3 июня 2013 года.
Основные возможности новой версии:
- Поддерживаются Windows Vista, как x86. так и x64.
- OpenVPN GUI устанавливается при помощи Windows installer.
- Поддерживается topology subnet, которая позволяет легко создавать tun-подсети по одному адресу на клиента.
- Для того чтобы открыть адаптер TAP-Win32 не нужны права администратора
- Поддерживаются криптографические смарт-карты (PKCS #11)
- Поддерживается multihome для того чтобы использовать UDP-туннели на устройствах с несколькими сетевыми интерфейсами.
- Поддерживается port-share, которая даёт возможность OpenVPN и HTTPS-серверам использовать совместно 443 порт TCP.
Производительность OpenVPN
Максимальное количество соединений и трафика, который может обработать OpenVPN, определяется возможностями платформы, в частности:
Что такое VPN — Для чего его используют — Установка и Настройка Бесплатного OpenVPN Сервера с нуля
- пропускной способностью сети;
- вычислительными возможностями системы;
- архитектурными ограничениями операционной системы (количество сокетов, количество процессов).
Результаты замеров производительности OpenVPN представлены в [1] и в [2].
Использование OpenVPN
Создание статического ключа
%# openvpn —genkey —secret static.key
Работа через прокси-сервер
Openvpn умеет создавать туннели через прокси-сервер.
proto tcp-server port 56321
remote vpn.example.com 56321 http-proxy cache.internal.net 8080 proto tcp-client
Инструменты для настройки
OpenVPN — программа с текстовым интерфейсом. Её настройка производится путём редактирования её конфигурационного файла или путём задания нужных аргументов командной строки.
Тем не менее, существует ряд сторонних программ, предназначенных для выполнения настройки OpenVPN и имеющих графический интерфейс.
OpenVPN GUI | Microsoft Windows | Да | http://openvpn.se |
Tunnelblick | Mac OS X | Да | http://code.google.com/p/tunnelblick |
Viscosity | Mac OS X | Нет | http://viscosityvpn.com |
Shimo | Mac OS X | Нет | http://www.shimoapp.com |
OpenVPN | DD-WRT | Да | DD-WRT |
TomatoVPN | Tomato (firmware) | Да | TomatoVPN |
TunnelDroid | Android | Да | TunnelDroid Source, Market Download |
Пару слов про OpenVPN,VPN бесплатно
Дополнительная информация
- Welcome to OpenVPN (англ.) — домашний сайт проекта
Материалы по OpenVPN на xgu.ru
- OpenVPN
- Два шлюза в Интернет и OpenVPN
- OpenVPN в Windows
- OpenVPN Bridge — передача тегированного трафика через VPN
- OpenVPN Proxy ARP
Криптография |
Kerberos • EAP • Host-based аутентификация в OpenSSH |
Шифрование LVM • LUKS |
VPN • IPsec • OpenVPN • SSL • OpenSSL • TLS • SSH |
Шифрование звонков в Asterisk • SRTP |
Источник: xgu.ru
Протокол OpenVPN: как работает, какое подключение быстрее, UDP или TCP
February 01, 2023 Ирен Смотричева
Развернуть
Проверенный ВПН
OpenVPN — протокол шифрования с открытым исходным кодом, поддержкой AES-256 и SSL 3.0. Подключение с использованием UDP и TCP делает его гибким VPN-протоколом в плане настройки для конечного пользователя.
OpenVPN
#1. ExpressVPN — ВПН без логов. Доступ к контенту без ограничения. 30-дней возврат денег. 3 месяца подарок при подписке (до 49% скидка) #2. NordVPN — Самый надежный VPN, Работает на всех устройствах, приватные DNS на каждом сервере. Скидка 59% при оплате за 2 года #3. PureVPN — Шифрование AES-256, 6500+ серверов в 140+ странах, 7 дней бесплатного тестирования, 31 день возврат денег. #4.
Surfshark — Лучшее предложение: $59 за 2 года. Протестировано на Windows, Android и MacOS. Раздельное туннелирование, доступен тестовый период. #5. CyberGhost — Быстрые серверы для видео, до 7 устройств на аккаунт, не хранит логов,45 дней тестовый период (офис в США) Рекомендованные сервисы Другие ВПН сервисы
Преимущества исходного кода
- просматривать исходный код протокола, совершенствовать его и/или устранять ошибки;
- использовать его в сочетании со сторонними плагинами или скриптами, увеличивая производительность, стабильность работы;
- оставаться независимыми от компании-разработчика — к примеру, SSTP принадлежит Microsoft и может быть использован для анализа действий в сети, перехвата личных данных.
- OpenVPN используют практически все VPN-провайдеры, предварительно перерабатывая исходный код протокола. Поэтому принцип его работы, скорость и нагрузка на систему будет отличаться от сервиса к сервису.
Как это работает
OpenVPN создает защищенное соединение по принципу клиент-сервер, обходя HTTP и NAT. Передача трафика ведется с использованием 1 из 2 транспортных протоколов:
- UDP — обмен данными с сервером происходит без подтверждений или повторной передачи информации. Такое соединение быстрее, подходит для онлайн-игр или воспроизведения потокового видео.
- TCP — обладает функцией исправления ошибок, когда перед отправкой следующего пакета данных, протокол проверяет, чтобы он дошел или отправляет его повторно. Дополнительные действия уменьшают пропускную способность, увеличивают задержку.
При соединении с сервером, OpenVPN сперва пытается установить связь по UDP, а уже после переключается на TCP.
Общедоступные сети передают трафик по протоколам HTTP, FTP, SMTP, POP3 и IMAP, из-за чего приходится использовать TCP. Причина в том, что он задействует порт 443, совместимый c защищенным HTTPS-трафиком.
Защита данных и платформы
Тип шифрования определяет провайдер. Зачастую — это 256-битное OpenSSL или AES-шифрование. Реже, встречается AES-128. Также реализована защита по стандартам:
- Cammellia;
- 3DES;
- CAST-128;
- Blowfish.
Реализовано подключение к частным подсетям, выходящим за пределы выделенных под OpenVPN-серверов. Реализовали протокол на всех актуальных платформах:
- персональных компьютерах и ноутбуках на Windows, Mac, Linux;
- мобильных устройствах под iOS и Android;
- маршрутизаторах с Free/Open/NetBSD и Solaris.
Скорость и задержки
Согласно тестам, проведенным командой разработчиков другого протокола с открытым кодом WireGuard, OpenVPN c 256-битным AES шифрованием, аутентификацией HMAC-SHA2-256 в режиме UDP разгоняется до 256 Мбит/с, наблюдается задержка в 1.541 мс. При тех же условиях, WireGuard демонстрирует 1011 Мбит/с и 0.403 мс.
Такая разница обусловлена высокой степенью шифрования у OpenVPN и запуском тестов на ПК с урезанными процессорами от Intel из U-серии. При наличии мощного ПК и скоростного соединения, показатель скорости и отклика будет “комфортный”.
Лучшие VPN с поддержкой OpenVPN
Топовые провайдеры используют протокол как в десктопных, так и мобильных версиях клиента. Расскажем о лучших из них и упомянем их особенности.
Источник: 10best-vpn.com
OpenVPN, краткое описание
В данном сообщении изложено краткое описание OpenVPN (http://openvpn.net/) на основании личного опыта, в основном для ОС Windows (хотя многое применимо и для других ОС). Наверняка здесь есть какие-нибудь ошибки, неточности и неполнота, ну что же — принцип «as is».
Описание периодически обновляется в меру появления новой информации и времени
Текущие стабильные версии (2006-ноябрь):
OpenVPN 2.0.9 для Windows — http://openvpn.net/release/openvpn-2.0.9-install.exe
OpenVPN-GUI 1.0.3 для Windows — http://openvpn.se/files/binary/openvpn-gui-1.0.3.exe
или сборный комплект http://openvpn.se/files/install_packages/openvpn-2.0…1.0.3-install.exe
1. Описание команд и основных опций (и их применимость на сервере и клиенте)
- Внешние файлы ключей, сертификатов и т.п.
Примечание: Параметры указывающие на файлы можно (или даже желательно) указывать с полными путями. Для Windows символ «» указывается как «\», пути с пробелами брать в кавычки, например: «C:\Program Files\OpenVPN\config\ca.crt». Если путь не указан, то используется каталог . config
- secret file_name — указание имени файла ключа для режима static-key. Допустим также параметр [direction], позволяющий асимметрично использовать ключи, например, «secret static.key 0» с одной стороны и «secret static.key 1» с другой, однако для этого ключи должны быть 2048-битовые, в версиях 2.* по умолчанию они именно такие.
- Для расширенных режимов TLS надо указать или имена раздельных файлов ключей и сертификатов:
- ca file_name (сервер, клиент) — сертификат СА (центра сертификации)
- cert file_name (сервер, клиент) — сертификат данного узла, подписанный СА
- key file_name (сервер, клиент) — ключ шифрования данного узла
- dev [tun | tap] (сервер, клиент) — указание типа интерфейса и режима работы: tun = L3-туннель, tap = L2-туннель
- dev-node TAP-interface-Name (сервер, клиент) — указание использование конкретного интерфейса, актуально если их в ситеме несколько и они по разному настроены в ОС (например, один tap и включён в мост, а второй — tun)
- proto [tcp-server | tcp-client | udp] (сервер, клиент) — протокол, по умолчанию UDP
- port 1194 (сервер, клиент) — номер порта, default=1194 (на клиенте для tcp-client игнорируется и используется динамический порт). См.также lport (указание локального порта) и rport (указание удалённого порта).
- mode — задаёт режим работы сервера. По умолчанию OpenVPN работает в p2p-режиме, при указании mode server он работает в режиме сервера с многими клиентами.
- tls-server, tls-client — использование режима TLS
- ifconfig Local-IP Remote-IP/NetMask (сервер, клиент) — задаёт конфигурацию интерфейса.
Для dev tun: ifconfig Local-IP Remote-IP — указывает IP-адрес локального интерфейса и адрес второй стороны туннеля. Важно, что в режиме клиент-сервер в отличие от режима static-key второй стороной туннеля является не адрес сервер и не адрес клиента, а адрес виртуального интерфейса виртуального OpenVPN-роутера, см. описание в п.3.
Для dev tap: ifconfig Local-IP NetMask — указывает IP-адрес и маску локального интерфейса
- server network netmask (сервер) — макрокоманда конфигурации сервера. Задаёт сеть и маску для всей OpenVPN-сети. Первый адрес из этой сети назначается интерфейсу сервера, остальные выделяются клиентам. Не используйте эту макрокоманду для режима L2-моста, для этого есть server-bridge.
Реально команда, например, server 10.8.0.0 255.255.255.0 раскрывается так (в скобках комментарии)
Для режима dev tun:
mode server
tls-server
ifconfig 10.8.0.1 10.8.0.2 (серверу назначается первый адрес из первой подсети /30)
ifconfig-pool 10.8.0.4 10.8.0.251 (остальной блок адресов выделяется клиентам)
route 10.8.0.0 255.255.255.0 (системе объявляется маршрут на всю OpenVPN-сеть)
if client-to-client:
push «route 10.8.0.0 255.255.255.0» (если включен режим client-to-client, то клиентам также передаётся маршрут на всю OpenVPN-сеть)
else
push «route 10.8.0.1» (иначе, если не включен режим client-to-client, клиентам передаётся только маршрут на сервер)Для режима dev tap:
ifconfig 10.8.0.1 255.255.255.0 (серверу назначается первый адрес)
ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0 (остальной блок адресов выделяется клиентам)
push «route-gateway 10.8.0.1» (клиентам объявляется адрес шлюза, через который, при необходимости, они могут назначать маршруты) - server-bridge gateway netmask pool-start-IP pool-end-IP (сервер) — макрокоманда конфигурации сервера для режима L2-моста. Важно то, что в этом режиме IP-параметры мостового интерфейса настраиваются в системе! Здесь же параметр gateway может указывать или на этот же IP-адрес мостового интерфейса или на следующий шлюз в этой сети.
Реально команда, например, server-bridge 10.8.0.4 255.255.255.0 10.8.0.128 10.8.0.254 раскрывается так (в скобках комментарии)
mode server
tls-server
ifconfig-pool 10.8.0.128 10.8.0.254 255.255.255.0 (клиентам выделяется диапазон, указанный в макрокоманде)
push «route-gateway 10.8.0.4» (параметр gateway передаётся клиентам как шлюз) - remote host (сервер) — в режиме tcp-server этот параметр на сервере работает как фильтр и принимает соединения ТОЛЬКО от указанного host.
- client-to-client (сервер) — разрешает обмен трафиком между клиентами для режима dev tun
- ifconfig-pool-persist File_Name [Time_in_seconds] (сервер) — задаёт файл, в котором на указанное время (по умолчанию 600 сек) кэшируются выданные адреса клиентам, что позволяет при переподключении выдать клиенту тот же адрес.
- ifconfig-pool-linear (сервер) — задаёт для dev tun режим распределения адресов клиентам не подсетями /30, а «поштучно», то есть /32. Несовместим с Windows!
- management localhost 8329 (сервер, клиент) — открыть порт 8329 на интерфейсе 127.0.0.1 для управления (см. http://openvpn.net/management.html)
- route network/IP [netmask] [gateway] [metric] (сервер, клиент) — добавляет указанный маршрут в ОС после установления соединения. Значения параметров по умолчанию:
netmask по умолчанию равно 255.255.255.255.
gateway по умолчанию равно параметру, указанному в команде route-gateway или второму параметру команды ifconfig в режиме dev tun. То есть, по умолчанию исользуется шлюз в «OpenVPN-сеть». Если же нужно параметр указать (например, если нужно задать метрику), то это же значение можно указать ключевым словом vpn_gateway. Кроме того есть ещё ключевое слово net_gateway — это основной шлюз, который был в ОС до установления OpenVPN-соединения. - iroute network [netmask] — применяется в client-connect script или в client-config-dir файле, указывает OpenVPN-серверу, что данная сеть находится за соответствующим клиентом. Важно, что это только указание OpenVPN-серверу, для задания этого маршрута самой ОС надо указывать route или в конфиге сервера или вообще в самой ОС.
- route-method exe (сервер, клиент) — указывает OpenVPN-у, что добавление маршрута надо делать не через API, а через route.exe. См. также в секции «Некоторые распростанённые проблемы и методы решения»
- route-delay 10 (сервер, клиент) — см. в секции «Некоторые распростанённые проблемы и методы решения»
- client-config-dir Dir_Name (сервер) — использовать из указанного каталога дополнительные индивидуальные файлы для конфигугации каждого клиента, файлы должны называться так же как и CN клиента (Common Name, то есть то что укзывается при конфигурации ключа клиента командой build-key, см.далее). Расширения у файла быть не должно, то есть, например, для клиента client1 файл так и должен называться — client1
- push «команда» — указывает серверу передать «команду» клиенту. Например, команда в конфиге сервера push «ping 10» — это не команда ping 10 самому серверу, а указание серверу передать команду ping 10 клиенту. Описание самих команд для push даны отдельно. Это могут быть route, route-gateway, route-delay, redirect-gateway, ip-win32, dhcp-option, inactive, ping, ping-exit, ping-restart, setenv, persist-key, persist-tun, echo
- push-reset (сервер, но в client-config-dir-файле) — указывает, что для данного клиента надо проигнорировать все глобальные команды push. Однако все push-команды из самого client-config-dir-файла будут исполнены.
- ifconfig-push Local-IP Remote-IP/NetMask (сервер) — применяется в client-connect script или в client-config-dir файле, задаёт конфигурацию интерфейса соответствующего клиента.
Для dev tun: ifconfig Local-IP Remote-IP — указывает IP-адрес локального интерфейса клиента и адрес второй стороны туннеля. Важно, что в режиме клиент-сервер второй стороной туннеля является не адрес сервер и не адрес клиента, а адрес виртуального интерфейса виртуального OpenVPN-роутера, см. описание в п.3.
Для dev tap: ifconfig Local-IP NetMask — указывает IP-адрес и маску локального интерфейса
- client — макрокоманда режима клиента, исполняется так:
pull (указывает клиенту принимать от сервера команды, которые на сервере заданы как push)
tls-client - nobind (клиент) — указание использовать динамический порт на клиенте, актуально только для udp, т.к. для tcp на клиенте всегда используется динамический порт.
- remote host [port] (клиент) — указание второй стороны, host может быть как DNS-именем, так и IP-адресом. Клиент обязан иметь эту строку, причём она может быть не одна — это обеспечивает возможность подключения к разным интерфейсам сервера (отказоустойчивость) или распределение нагрузки.
- remote-random (клиент) — использовать в случайном порядке одну из нескольких строк remote
- resolv-retry infinite (клиент) — пытаться бесконечно определить адрес сервера (при указании его по имени), чтобы «обойти» проблему с завершением попытки установления соединения при отказе DNS или сбое внешних соединений
- redirect-gateway [local] [def1] (клиент) — переключение шлюза на удалённый, есть 2 доп.параметра — local (см.manual) и def1 — изменяет маршрут не методом удаления старого маршрута 0.0.0.0/0 и назначением нового, а методом назначения двух более узких маршрутов 0.0.0.0/1 и 128.0.0.0/1
- dhcp-option DNS 192.168.1.254 (клиент) — использование удалённого DNS
- dhcp-option WINS 192.168.1.254 (клиент) — использование удалённого WINS
- comp-lzo (сервер, клиент) — сжатие трафика
- status openvpn-status.log (сервер, клиент) — периодически сохранять информ. о текущем состоянии в указанный файл, это текстовый файл.
- log openvpn.log или log-append openvpn.log (сервер, клиент) — сохранять или добавлять лог в указанный файл
- keepalive 10 60 (сервер) — макрокоманда «пинговать» противоположную сторону туннеля с указанным периодом 10 сек, при отсутствии встречных пингов в течение 60 сек считать туннель упавшим и запускать пересоединение. Полезно также для поддержания статуса работающего udp-потока в транзитных NAT-шлюзах.
Реально исполняется так (в скобках комментарии):
Для mode server:
ping 10 (сервер посылает OpenVPN-ping каждые 10 секунд. Не путать с ping в IP — здесь на OpenVPN-ping удалённая сторона не отвечает, поэтому эти пакеты надо отправлять с обеих сторон)
ping-restart 120 (при отсутствии встречных пакетов, то есть от клиента, в течении 120 сек сервер перезапускает клиентскую сессию. Не путать, перезапускается НЕ ВЕСЬ OpenVPN-СЕРВЕР!)
push «ping 10» (сообщить клиентам пинговать сервер каждые 10 секунд)
push «ping-restart 60» (сообщить клиентам, что при отсутствии пингов от сервера в течение 60 секунд, клиент должен перезапустить свою сессию).
Для mode p2p:
ping 10
ping-restart 60
2. Простейшая конфигурация static-key — 1 сервер + 1 клиент одновременно:
2.1. Генерация статического ключа — ярлык в меню или «openvpn —genkey —secret static.key»
Этот общий ключ должен быть на обеих сторонах — и на сервере и на клиенте
2.2. Server.ovpn
Источник: 7d3.ru