OpenVPN - это программное приложение с открытым исходным кодом, которое реализует методы виртуальной частной сети (VPN) для создания безопасных соединений точка-точка или между сайтами в маршрутизируемых или мостовых конфигурациях и средствах удаленного доступа.
Эта статья содержит различные примеры конфигурации OpenVPN, которые требуют более подробных объяснений для достижения успешной конфигурации. Все приведенные примеры касаются двух или более маршрутизаторов CR.
Тип конфигурации OpenVPN
Прежде чем что-то настраивать, вы должны сначала узнать, какой тип соединения OpenVPN подходит вам лучше всего. Ключевыми моментами, которые следует здесь учитывать, являются тип соединения (TUN (туннель) или TAP (мост)), протокол передачи данных (протокол пользовательских дейтаграмм (UDP) или протокол управления передачей (TCP)) и аутентификация (TLS или статический ключ). ). Вот краткий обзор различий:
• Тип
• TUN (туннель) - имитирует устройство сетевого уровня и работает с пакетами уровня 3, такими как IP-пакеты. TUN используется для маршрутизации и подключения нескольких клиентов к одному серверу.
• TAP (мостовой) - имитирует устройство канального уровня и работает с пакетами 2-го уровня, такими как кадры Ethernet. TAP используется для создания сетевого моста между двумя сегментами Ethernet в разных местах.
• Протокол
• UDP - используется приложениями для доставки более быстрого потока информации, исключая проверку ошибок.
• TCP - набор протоколов, используемых устройствами для связи через Интернет и большинство локальных сетей. Он предоставляет приложениям способ доставки (и получения) упорядоченного и проверенного на поток ошибок потока информационных пакетов по сети.
• Аутентификация
• TLS - использует SSL / TLS + сертификаты для аутентификации и обмена ключами.
• Статический ключ - использует предварительно используемый Статический ключ. Может использоваться только между двумя пирами.
Обзор большинства из этих типов представлен в этой статье. Что касается TCP против UDP, мы будем использовать UDP для всех примеров. Выбор между TCP и UDP не влияет на остальную часть конфигурации, поэтому вы все равно можете следовать приведенным примерам независимо от того, какой протокол вы используете. Просто выберите тот, который соответствует вашим целям.
Аутентификация TLS
В этом разделе содержится руководство по настройке успешного подключения OpenVPN между клиентом и сервером OpenVPN с использованием метода аутентификации TLS на маршрутизаторах CR.
Генерация сертификатов / ключей TLS
________________________________________
Соединение, которое использует TLS, требует нескольких сертификатов и ключей для аутентификации:
* Server
** The root certificate file (Cetificate Authority)
** Server certificate
** Server key
** Diffie Hellman Parameters
* Client
** The root certificate file (Cetificate Authority)
** Client certificate
** Client key
Когда у вас есть все необходимые файлы, продолжайте следовать этому разделу руководства.
конфигурация
________________________________________
Теперь мы можем начать настройку экземпляров OpenVPN Server и Client. В этом примере мы будем создавать соединение типа TUN (туннель), которое использует протокол UDP для передачи данных и TLS для аутентификации. Мы будем использовать два маршрутизатора Termit: CRXX1 (сервер; IP-адрес локальной сети: 192.168.1.1; IP-адрес WAN (общедоступный статический): 193.186.223.42) и CRXX2 (клиент; IP-адрес локальной сети: 192.168.2.1); который будет подключен к виртуальной сети (с виртуальным адресом: 10.0.0.0):
Подводя итог, просто убедитесь, что Сервер и Клиенты используют одинаковые параметры (одинаковую аутентификацию, один и тот же порт, один и тот же протокол и т. Д.). Другим важным аспектом является IP-адрес виртуальной сети (в данном случае 10.0.0.0). Серверу и подключенным Клиентам будет присвоен IP-адрес, принадлежащий этой сети. Если вы создаете большую сеть, вы можете изменить маску виртуальной сети.
Со стороны клиента обязательно введите правильный Удаленный хост / IP-адрес (в данном случае 193.186.223.42). Это публичный IP-адрес сервера, а не виртуальный IP-адрес.
Аутентификация по статичному ключу
В этом разделе содержится руководство по настройке успешного соединения OpenVPN между клиентом и сервером OpenVPN с использованием метода аутентификации статического ключа на маршрутизаторах Termit.
Создание статического ключа
________________________________________
Соединение со статическим ключом использует предварительный общий доступ для аутентификации между сервером и одним клиентом. Вы можете сгенерировать статический ключ в самом маршрутизаторе или на ПК, который использует ОС на базе Linux.
Внутри роутера
________________________________________
Чтобы создать статический ключ в маршрутизаторе, подключитесь к устройству через интерфейс командной строки (CLI) или SSH (имя пользователя по умолчанию - root, пароль - пароль администратора вашего маршрутизатора, по умолчанию admin01). Интерфейс командной строки можно найти в веб-интерфейсе маршрутизатора в разделе «Службы». Чтобы подключиться к маршрутизатору через SSH, используйте приложение Terminal (введите ssh root@192.168.1.1; замените 192.168.1.1 на IP-адрес вашего маршрутизатора в локальной сети), если вы используете ОС на базе Linux. Или загрузите PuTTY, бесплатный клиент SSH и telnet, если вы используете Windows.
Когда вы подключитесь к маршрутизатору, перейдите в каталог (например, cd / etc / easy-rsa / keys /), где вы хотите сохранить статический ключ, и используйте эту команду:
# openvpn --genkey --secret static.key
Вновь сгенерированный статический ключ появится в том же каталоге, где вы ввели команду выше.
Извлечение ключа
________________________________________
Если вы используете ОС на базе Linux, извлечь файлы из маршрутизатора очень просто. Просто перейдите в каталог на вашем ПК, куда вы хотите переместить файлы, щелкните правой кнопкой мыши в любом месте и выберите опцию Открыть в терминале. В командной строке терминала используйте команду Secure Copy (scp) для копирования файлов с маршрутизатора. Полная команда должна выглядеть примерно так:
$ scp root@192.168.1.1:/etc/esy-rsa/keys/static.key ./
Root@192.168.1.1: /etc/easy-rsa/keys/static.key указывает путь к расположению статического ключа (замените IP-адрес на IP-адрес локальной сети вашего маршрутизатора); ./ обозначает, что вы хотите скопировать содержимое в каталог, в котором вы находитесь в данный момент.
Если вы используете Windows, вы можете копировать файлы с маршрутизатора с помощью WinSCP, бесплатного SFTP, SCP и FTP-клиента с открытым исходным кодом для ОС Windows. Используйте ту же информацию для входа в WinSCP, что и для CLI или SSH. После подключения к маршрутизатору с WinSCP копирование файлов должно быть достаточно простым: просто переместитесь в каталог, в котором вы сгенерировали ключ, выберите файл статического ключа и перетащите его в каталог на вашем ПК, где вы хотели бы его сохранить.
На ПК с Linux
________________________________________
Чтобы сгенерировать статический ключ на ПК с Linux, перейдите в каталог, в котором вы хотите, чтобы ключ появлялся, щелкните правой кнопкой мыши в любом месте этого каталога и выберите параметр «Открыть в терминале». В окне терминала выполните эту команду:
$ openvpn --genkey --secret static.key
Вновь созданный ключ должен появиться в каталоге, в котором вы были.
конфигурация
________________________________________
Если у вас есть статический ключ, вы можете начать настройку OpenVPN Server и Client экземпляров. В этом примере мы будем создавать соединение типа TUN (туннель), которое использует протокол UDP для передачи данных и статический ключ для аутентификации. Мы будем использовать два маршрутизатора CR: CR1 (сервер; IP-адрес локальной сети: 192.168.1.1; IP-адрес WAN (общедоступный статический): 193.186.223.42) и CR2 (клиент; IP-адрес локальной сети: 192.168.2.1); два маршрутизатора будут связаны через OpenVPN; Виртуальный IP-адрес Сервера будет 10.0.0.1; Клиента - 10.0.0.2:
Подводя итог, просто убедитесь, что Сервер и Клиенты используют одинаковые параметры (одинаковую аутентификацию, один и тот же порт, один и тот же протокол и т. Д.). Другими важными аспектами являются IP-адрес конечной точки локального туннеля и IP-адрес конечной точки удаленного туннеля. Обратите внимание, что эти два конкретных значения параметров инвертированы для отдельных конфигураций клиента и сервера, поскольку эти значения представляют противоположные вещи в зависимости от перспективы экземпляра.
Со стороны клиента обязательно введите правильный Удаленный хост / IP-адрес (в данном случае 193.186.223.42). Это публичный IP-адрес сервера, а не виртуальный IP-адрес.
TAP (мост) OpenVPN
В этом разделе приведено руководство по настройке успешного соединения OpenVPN TAP (мостовое) между клиентом OpenVPN и сервером на маршрутизаторах CR.
конфигурация
________________________________________
TAP используется для создания сетевого моста между двумя сегментами Ethernet в разных местах. В этом примере мы будем создавать соединение типа TAP (мостовое), которое использует протокол UDP для передачи данных и TLS для аутентификации. Мы будем использовать два маршрутизатора CR: CR1 (сервер; LAN IP: 192.168.1.1; WAN (общедоступный статический) IP: 193.186.223.42) и CR2 (клиент; LAN IP: 192.168.1.2); два маршрутизатора будут связаны через OpenVPN.Подводя итог, просто убедитесь, что Сервер и Клиенты используют одинаковые параметры (одинаковую аутентификацию, один и тот же порт, один и тот же протокол и т. Д.). Наиболее важным аспектом конфигурации TAP является то, что он просто соединяет два сегмента сети и не создает другую виртуальную сеть. Следовательно, как и в приведенном выше примере, маршрутизаторы должны находиться в одной подсети (в данном случае 192.168.1.0). Убедившись в этом, не забывайте, что маршрутизаторы не могут иметь один и тот же IP-адрес, только одну и ту же подсеть (например, если оба маршрутизатора имеют LAN IP 192.168.1.1, соединение не будет работать; если один имеет, например, 192.168.1.1, а другой 192.168.1.100, тогда соединение будет работать).
Для этого примера мы использовали аутентификацию TLS. Если вы хотите использовать другой метод аутентификации, обратитесь к соответствующему разделу этой статьи. Конфигурация аутентификации не будет отличаться из-за выбранного типа OpenVPN (TUN или TAP).
Со стороны клиента обязательно введите правильный Удаленный хост / IP-адрес (в данном случае 193.186.223.42). Это публичный IP-адрес сервера, а не IP-адрес локальной сети.
Дополнительная конфигурация
В этом разделе будут приведены примеры некоторых дополнительных конфигураций, связанных с OpenVPN, например, как получить доступ к частной локальной сети другого экземпляра OpenVPN или как использовать экземпляр OpenVPN в качестве прокси.
Доступ к локальной сети устройства
________________________________________
Возможно, вы захотите, чтобы ваши клиенты OpenVPN могли обращаться к устройствам, которые находятся в частной сети (LAN) устройства сервера или наоборот. Этот раздел предоставит инструкции о том, как это сделать.
Сервер от Клиента
________________________________________
Чтобы получить доступ к локальной сети другого экземпляра OpenVPN, вы должны иметь маршрут к этой сети с виртуальной удаленной конечной точкой в качестве шлюза. Вы можете добавить статические маршруты через командную строку, но эти маршруты удаляются автоматически, когда маршрутизатор перезагружается или когда соединение прерывается, хотя бы на мгновение. Чтобы решить эту проблему, вы добавляете постоянные статические маршруты через веб-интерфейс маршрутизатора на странице Сеть → Маршрутизация → Статические маршруты. Но этот метод также не является надежным, поскольку он означает, что если адрес когда-либо изменится, вам также придется изменить статический маршрут на всех связанных устройствах.
________________________________________
Другим способом получения доступа к частной сети OpenVPN-сервера от Клиента является указание сети в конфигурации OpenVPN-клиента. Для этого откройте окно конфигурации клиента и заполните следующие два поля:
Как видите, эти два поля: IP-адрес удаленной сети и IP-маска удаленной сети. Значения, помещенные в эти поля, указывают адрес локальной сети Сервера, и заполнение их автоматически добавит необходимый маршрут в таблицу маршрутизации, когда соединение OpenVPN будет установлено. Однако, если ваш OpenVPN-сервер имеет несколько клиентов, вам придется сделать это для всех из них. Если это так, используйте этот следующий метод.
________________________________________
Еще один метод - проталкивать необходимые маршруты через сервер OpenVPN. Этот метод является наиболее надежным, поскольку он создает маршрут к частной сети Сервера для всех подключающихся Клиентов. Следовательно, в случае изменения конфигурации вам нужно будет отредактировать только одно поле в конфигурации Сервера вместо того, чтобы редактировать все конфигурации Клиентов.
Для этого перейдите в окно конфигурации OpenVPN Server и найдите поле опции Push. Предположим, что IP-адрес сервера в локальной сети - 192.168.1.1. В этом случае используйте линию маршрута 192.168.1.0 255.255.255.0
Измените информацию так, чтобы она отражала вашу собственную конфигурацию. Не указывайте шлюз, потому что команда не будет работать. Правильный шлюз будет назначен автоматически.
Клиенты с сервера
________________________________________
Доступ к частным сетям Клиентов OpenVPN с Сервера немного сложнее, чем наоборот, потому что для этого Сервер должен знать о различных конкретных адресах и Общих именах конкретных Клиентов.
Для этого мы можем использовать функцию TLS Clients. TLS-клиенты - это способ более конкретно дифференцировать клиентов по их общему имени (CN), найденному в файле сертификата клиента. Его можно использовать для назначения определенных адресов VPN конкретным клиентам и привязки их к их адресам локальной сети, чтобы с других серверов можно было получить доступ к другим устройствам в локальной сети клиента.
Другими словами, клиенты TLS связывают общие имена (найденные в клиентских сертификатах) с частными сетями клиентов. Если сертификат не был подделан ни в одном из последующих поколений, общее имя должно совпадать с именем файла (без расширения типа файла). Например, сертификат с именем client1.crt, скорее всего, будет иметь общее имя client1.
Зная общие имена и IP-адреса локальной сети своих клиентов OpenVPN, вы можете создавать экземпляры клиентов TLS для каждого из них:
Кроме того, с клиентами TLS вы можете вручную назначать виртуальные локальные и удаленные адреса конечных точек для клиентов. Но эти поля не являются обязательными, и адреса будут назначаться автоматически, если они не отмечены.
Клиент клиенту
________________________________________
Для того, чтобы клиент-клиент работал, вы должны сделать три вещи:
• Создавать уникальные экземпляры клиентов TLS для каждого из клиентов.
• Нажмите необходимые маршруты через поле опции Push
• Включить функциональность «клиент-клиент» в конфигурации сервера
Клиенты TLS
________________________________________
Сначала настройте TLS-клиенты. Вы можете найти описание того, как это сделать, в разделе перед этим. Это необходимо в случае нескольких Клиентов, потому что Сервер будет не только проталкивать маршруты других Клиентов, но и маршруты в собственные сети Клиентов в их таблицы маршрутизации. Это может привести к недоступности маршрутизаторов Клиентов до тех пор, пока не будет разорвано соединение OpenVPN.
Клиенты TLS решают эту проблему, потому что конфигурация тогда "говорит" маршрутизатору не выдвигать определенные маршруты определенным Клиентам. Например, если маршрутизатор проталкивает маршрут 192.168.5.0 255.255.555.0 к клиенту с IP-адресом локальной сети 192.168.5.1, этот клиент не сможет подключиться к своей сети. TLS Clients предотвращает это - если у Клиента, например, IP-адрес локальной сети 192.168.5.1, он не получит маршрут 192.168.5.0 255.255.555.0.
Варианты push
________________________________________
Далее настройте необходимые параметры push. Вам нужно будет включить сети всех Клиентов, если вы хотите, чтобы они все общались друг с другом. Допустим, у вас есть три клиента, которые принадлежат к трем различным сетям локальной сети:
• 192.168.5.0
• 192.168.6.0
• 192.168.7.0
Чтобы дать им все необходимые маршруты, вы должны будете включить эти три варианта push:
route 192.168.5.0 255.255.255.0
route 192.168.6.0 255.255.255.0
route 192.168.7.0 255.255.255.0
Конфигурация должна выглядеть примерно так:
Включить клиент-клиент
________________________________________
Следующий и последний шаг - включить функциональность «клиент-клиент». Для этого перейдите в окно конфигурации сервера OpenVPN и поставьте галочку в опции Клиент-клиент:
Если вы сделали это и выполнили все предыдущие шаги в разделе, ваши клиенты OpenVPN теперь должны иметь возможность общаться друг с другом.
OpenVPN Proxy
________________________________________
OpenVPN-серверы могут использоваться в качестве прокси клиентами OpenVPN. Это означает, что клиенту будет присвоен общедоступный IP-адрес сервера OpenVPN, и он будет рассматриваться как использующий этот IP-адрес при просмотре Интернета, передаче данных или выполнении каких-либо других действий в Интернете. В этом разделе приведены инструкции по настройке и прокси OpenVPN на маршрутизаторах CR.
Варианты push
________________________________________
Первое, что вам нужно сделать, это настроить параметры Push в конфигурации сервера OpenVPN, который изменит маршрут WAN по умолчанию для клиентов на OpenVPN и назначит DNS-серверу IP-адрес локальной сети сервера OpenVPN. Для этого откройте окно конфигурации OpenVPN и добавьте эти параметры в поле параметров Push:
redirect-gateway def1
dhcp-option DNS 192.168.1.1
В этом контексте 192.168.1.1 - это IP-адрес LAN сервера OpenVPN. Замените это значение IP-адресом вашего собственного Сервера.
Переадресация зоны межсетевого экрана
________________________________________
Далее перейдите в раздел Сеть → Брандмауэр → Переадресация зоны. Нажмите кнопку Изменить, расположенную рядом с правилом vpn, и в следующем окне добавьте флажок рядом с wan как таковой:
Это перенаправит весь трафик WAN через туннель OpenVPN.
Чтобы проверить это, на устройстве позади клиента OpenVPN перейдите по ссылке http://www.whatsmyip.org/. Если на веб-сайте отображается публичный IP-адрес сервера OpenVPN, это означает, что прокси работает.
Удаленная настройка
Если у вас нет физического или локального доступа к маршрутизатору в целом, есть несколько вариантов удаленной настройки экземпляров OpenVPN.
Удаленный HTTP
________________________________________
Вы можете получить доступ к WebUI вашего маршрутизатора из удаленных мест, включив опцию Удаленный HTTP в Системе → Администрирование → Контроль доступа. Однако это будет работать только в том случае, если у вас есть общедоступный статический или общедоступный динамический IP-адрес (не общедоступный общий; вы также можете включить веб-правило SMS Utilities).
Примечание: перед включением любого типа удаленного доступа настоятельно рекомендуется изменить пароль администратора маршрутизатора по умолчанию, чтобы минимизировать риск злонамеренных удаленных подключений. Вы можете изменить свой пароль в разделе Система → Администрирование → Общие.
Удаленная настройка (утилиты SMS)
________________________________________
Вы можете отправлять конфигурации OpenVPN через инструмент удаленной настройки, расположенный в разделе «Сервисы» → «Утилиты SMS». Этот метод позволяет вам настроить OpenVPN (среди прочего) так же, как в разделе OpenVPN, а затем отправить эти конфигурации другому маршрутизатору с помощью SMS. Метод конфигурации идентичен обычной конфигурации OpenVPN. Таким образом, дополнительные инструкции не будут предоставлены здесь, но вы можете найти более подробную информацию по теме удаленной конфигурации здесь.
UCI
________________________________________
Еще одним способом будет использование правила SMS Utilities uci. Вы можете найти информацию о самой статье в руководстве по SMS Utilities и более подробную информацию о системе UCI в целом здесь.
Кроме того, мы предоставим основные конфигурации для OpenVPN-сервера и клиента, о которых говорится в этой статье, в «форме UCI». Это включает в себя OpenVPN TLS, статический ключ, настройки TUN, TAP для сервера и клиента. Вы можете скачать текстовый файл с этими конфигурациями, если перейдете по этой ссылке: Media: ovpn
Примечание: не забудьте изменить названия разделов и опций и их значения в соответствии с вашей конфигурацией.
Примечание 2: этот метод не предоставляет возможности отправлять сертификаты и, следовательно, должен использоваться только для редактирования существующих экземпляров OpenVPN, а не для создания новых.
внешние ссылка
https://github.com/OpenVPN/easy-rsa-old - Easy-RSA download
https://winscp.net/eng/download.php - WinSCP download
https://openvpn.net/index.php/open-source/documentation/howto.html - some additional information on OpenVPNs