Tun driver что это
This project has been inactive since at least 2015. While the kernel extensions kept working for a few OS X releases, with Apple requiring notarization and moving away from kernel extensions in general (which is a good thing!), this project is no longer relevant.
What is it?
The TunTap project provides kernel extensions for Mac OS X that allow to create virtual network interfaces. From the operating system kernel's point of view, these interfaces behave similar to physical network adapters such as an Ethernet network interface. However, the virtual interface does not send the packets into a wire, but makes them available to programs running in the system.
The software comes as a pair of kernel extensions that create virtual network interfaces on the IP and Ethernet level, respectively. These kind of network interfaces are commonly referred to as tun and tap devices on Unix-like platforms. This way of interfacing with the operating system's network stack is available on many platforms (cf. the TUN/TAP wikipedia article).
Who needs it?
By design, virtual network interfaces can be very flexibly used by any program that wants to receive packets from and inject them into the network stack. Generally, tun and tap devices are most commonly used in two distinct application scenarios: The first one is VPN software (such as OpenVPN). In this scenario, the kernel sends its network packets to the tun or tap devices. The VPN software will then encrypt and forward them to the other side of the VPN tunnel where they get decrypted and delivered to their destination. The second area in which tun and tap devices are popular are system virtualization/emulation packages. In this case, the virtualized operating system instance talks to a fake network device (commonly a virtual Ethernet adapter). The virtualization software then creates a tap device and interconnects the two such that the host system can talk to the guest and vice versa.
How does it work?
The TunTap package is comprised of a pair of kernel extensions, one providing tun and one providing tap interfaces. They create a set of character devices /dev/tunX and /dev/tapX , respectively, where X is a number between zero and the maximum number of supported virtual interfaces. Once an application opens the character device, say /dev/tap0 , a virtual network interface is created in the system, which will be named accordingly, i.e. tap0 . The network interface can be assigned addresses just like any other network interfaces. After configuring the interface, packets that the kernel sends through this interface (as determined by the routing table) can be read one packet at a time from the character device. Likewise, packets written to the character device will be injected into the kernel's network stack. For tun interfaces, the packets that are read and written are IP packets. For tap interfaces, the packet format is Ethernet frames.
There is a mailing list available through the Sourceforge project that is meant for general discussion about the TunTap software, asking questions, reporting bugs etc. It is called tuntaposx-users . If you are interested, you can register or have a look at the archives.
Каковы различия между использованием dev tap и dev tun для openvpn? Я знаю, что разные режимы не могут взаимодействовать. В чем технические отличия, кроме просто слой 2 против 3 операции. Существуют ли разные характеристики производительности или разные уровни накладных расходов. Какой режим лучше. Какие функции доступны исключительно в каждом режиме.
Пожалуйста, объясните разницу? Что такое мост Ethernet и почему это плохо?если это нормально для создания vpn на уровне 3 (еще один прыжок между подсетями) - перейдите на tun.
если вам нужно соединить два сегмента Ethernet в двух разных местах - используйте команду tap. в такой конфигурации вы можете иметь компьютеры в одной подсети ip (например, 10.0.0.0/24) на обоих концах vpn, и они смогут напрямую «общаться» друг с другом без каких-либо изменений в своих таблицах маршрутизации. VPN будет действовать как коммутатор Ethernet. Это может звучать круто и полезно в некоторых случаях, но я бы посоветовал не делать этого, если вам это действительно не нужно. если вы выберете такую настройку моста 2-го уровня - будет немного мусора (то есть широковещательных пакетов), проходящего через ваш vpn.
при использовании tap у вас будет немного больше накладных расходов - помимо заголовков ip через туннель будет отправляться также 38B или более заголовков ethernet (в зависимости от типа вашего трафика - возможно, это приведет к большей фрагментации).
Я выбрал «tap» при настройке VPN для друга, который владел небольшим бизнесом, потому что его офис использует множество компьютеров под управлением Windows, коммерческих принтеров и файлового сервера Samba. Некоторые из них используют чистый TCP / IP, некоторые, кажется, используют только NetBIOS (и, следовательно, нуждаются в широковещательных пакетах Ethernet), а некоторые я даже не уверен.
Если бы я выбрал «tun», я бы, вероятно, столкнулся с множеством сломанных сервисов - множество вещей, которые работали, пока вы находитесь в офисе физически, но потом сломались бы, когда вы уходили за пределы площадки и ваш ноутбук не мог «видеть» устройства в подсети Ethernet больше.
Я всегда настраиваю Tun. Tap используется мостовым соединением Ethernet в OpenVPN и представляет беспрецедентный уровень сложности, с которым просто не стоит беспокоиться. Обычно, когда требуется установить VPN, она необходима сейчас , и сложные развертывания не осуществляются быстро.
OpenVPN FAQ и HOWTO Ethernet Bridging являются отличными ресурсами по этой теме.
По моему опыту, Tun проще в настройке, но он не обрабатывает столько сетевых конфигураций, так что вы столкнетесь с гораздо более странными сетевыми проблемами. Напротив, тап немного сложнее в настройке, но как только вы это сделаете, он, как правило, «просто работает» для всех.Если вы планируете подключать мобильные устройства (iOS или Android) с использованием OpenVPN, то вам следует использовать TUN, так как в настоящее время TAP не поддерживается на них OpenVPN :
TAP поддерживается на Android через стороннее приложение: клиент OpenVPN (разработчик: colucci-web.it)Недостатки TAP: . не может использоваться с устройствами Android или iOS
Я начал использовать tun, но переключился на tap, так как мне не нравилось использование подсети / 30 для каждого ПК (мне нужно поддерживать Windows). Я нашел это расточительным и запутанным.
Затем я обнаружил параметр «топология подсети» на сервере. Работает с RC 2.1 (не 2.0), но дает мне все преимущества tun (без мостов, производительности, маршрутизации и т. Д.) С удобством одного (последовательного) IP-адреса на (windows) машину.
Потому что мне трудно найти простой совет:
Вы можете использовать TUN, если вы просто используете VPN для подключения к Интернету .
Вам нужно использовать TAP, если вы хотите подключиться к реальной удаленной сети (принтеры, удаленные рабочие столы и т. Д.)
У меня был тот же вопрос несколько лет назад, и я попытался объяснить его в прямом выражении (которого я лично не нашел в других ресурсах) в своем блоге: Учебник по OpenVPN.
Надеюсь, это поможет кому-то
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки. Отличный пост! Я редко читаю целый пост, как этот, но этот я сделал. Я согласен с Марком Хендерсоном, хотя вы должны написать небольшое резюме и разместить ссылку после.Мои "правила большого пальца"
TUN - если вам нужен ТОЛЬКО доступ к ресурсам, напрямую подключенным к серверу OpenVPN-сервера на другом конце, и проблем с Windows нет. Здесь может помочь немного творчества, так как ресурсы «кажутся» локальными для сервера OpenVPN. (например, подключение CUPS к сетевому принтеру или общий ресурс Samba на другом компьютере, установленном на сервере OpenVPN.)
TAP - если вам нужен доступ к нескольким ресурсам (компьютерам, хранилищу, принтерам, устройствам), подключенным через сеть на другой конец. TAP также может потребоваться для определенных приложений Windows.
Преимущества:
TUN обычно ограничивает VPN-доступ к одному компьютеру (IP-адресу) и, следовательно, (предположительно), повышает безопасность благодаря ограниченному подключению к удаленной сети. Соединение TUN создаст меньшую нагрузку на VPN-туннель и, в свою очередь, на удаленную сеть, потому что только трафик на / с одного IP-адреса будет проходить через VPN на другую сторону. IP-маршруты к другим станциям в подсети не включены, поэтому трафик не передается через VPN-туннель, и за пределами сервера OpenVPN невозможна или практически отсутствует связь.
TAP - обычно позволяет пакетам свободно перемещаться между конечными точками. Это обеспечивает гибкость связи с другими станциями в удаленной сети, включая некоторые методы, используемые старым программным обеспечением Microsoft. TAP имеет присущие ему меры безопасности, связанные с предоставлением доступа извне «за брандмауэром». Это позволит большему количеству пакетов трафика проходить через VPN-туннель. Это также открывает возможность конфликта адресов между конечными точками.
Там являютсяразличия в задержке из-за уровня стека, но в большинстве сценариев конечного пользователя скорость соединения конечных точек, вероятно, является более значительным фактором задержки, чем конкретный уровень стека передачи. Если речь идет о задержке, было бы неплохо рассмотреть другие альтернативы. Нынешние мультипроцессоры уровня ГГц обычно преодолевают узкие места передачи через Интернет.
«Лучше» и «хуже» невозможно определить без контекста.
(Это любимый ответ консультанта: «Ну, это зависит . »)
Ferrari «лучше», чем самосвал? Если вы пытаетесь идти быстро, это может быть; но если вы пытаетесь перевозить тяжелые грузы, вероятно, нет.
Необходимо определить такие ограничения, как «потребность в доступе» и «требования безопасности», а также ограничения, такие как пропускная способность сети и ограничения оборудования, прежде чем можно будет решить, подходит ли TUN или TAP для ваших нужд.
Настройка TAP практически не требует дополнительной работы от человека, который его настраивает.
Конечно, если вы знаете, как настроить TUN, но не понимаете, что делаете, и просто следуете учебнику по туннелю, вы будете бороться за настройку TAP, но не потому, что это сложнее, а потому, что вы не знаете, что вы делаете. делает. Что легко может привести к сетевым конфликтам в среде TAP, а затем это выглядит сложнее.
Дело в том, что если вам не нужен учебник, потому что вы знаете, что делаете, настройка tap занимает столько же времени, сколько и настройка tun.
с помощью tap есть много решений о подсетях, я обнаружил, что проще всего использовать подсеть класса B. site1 (Network1) с использованием 172.22.1.0/16 site2 (network2) с использованием 172.22.2.0/16 site3 с использованием 172.22.3.0/16 и т. д.
Вы используете кран, и все клиенты вместе, как в огромной корпоративной сети.
Если, однако, у каждого сайта есть свой собственный DHCP, и он должен иметь, вы должны убедиться, что вы используете ebtables или iptables или dnsmasq, чтобы заблокировать распространение dhcp, чтобы выйти из строя. Однако ebtables снизит производительность. использование dnsmasq dhcp-host = 20: a9: 9b: 22: 33: 44, игнорирование, например, будет огромной задачей для установки на всех серверах dhcp. однако, на современном оборудовании влияние ebtables не так велико. только 1 или 2%
издержки крана, примерно 32 к Туну, тоже не такая большая проблема (может быть в незашифрованных сетях), но в зашифрованных сетях обычно AES вызывает замедление.
Например, на моем wrt3200acm в незашифрованном виде я получаю 360 Мбит / с. При использовании шифрования она снижается до 54-100 Мбит / с в зависимости от того, какой тип шифрования я выберу), но openvpn не выполняет шифрование на 1500 и 2-е шифрование на 32 служебных данных. Вместо этого он выполняет однократное шифрование на 1500 + 32 издержек.
Таким образом, влияние здесь минимально.
На старом оборудовании вы можете заметить большее влияние, но на современном оборудовании оно действительно сведено к минимуму.
Шифрование между двумя виртуальными машинами с поддержкой AES позволяет мне увеличить скорость передачи TAP до 120-150 Мбит / с.
Некоторые сообщают, что выделенные маршрутизаторы с поддержкой аппаратного шифрования AES достигают 400 Мбит / с! В 3 раза быстрее, чем может сделать i5-3570k (что в моей тестовой системе не может быть выше 150 Мбит / с при 100% использования 1 ядра). Мой другой конец: E3-1231 v3, тогда было примерно 7% загрузки ЦП, около Использовалось 25% ядра openvpn. Так что E3, скорее всего, может увеличить соединение в 3-4 раза.
так что у вас будет что-то между 360 Мбит / с и 600 Мбит / с при соединении между процессором E3-1231 v3, выполняющим шифр AES265, аутентификацию SHA256 и ta.key, сертификаты tls-шифр. Я также использовал самый высокий TLS-DHE-RSA-WITH-AES- 256-SHA256
Чтобы указать на это, с tap: wrt3200acm получает до 70-80 Мбит / с с шифрованием. i5-3570k добирается до 120-150 с шифрованием. E3-1231 v3 получает не менее 360 Мбит / с с шифрованием (это интерполируется из моих выводов в случаях 1 и 2, потому что у меня не было 2 E3-1231 v3 для тестирования.)
Это мои выводы, основанные на копировании окон в окна между двумя клиентами в 2 разных подсетях, подключенных с помощью openvpn TAP
Userland application can write IP frame to /dev/tunX
and kernel will receive this frame from tunX interface.
In the same time every frame that kernel writes to tunX
interface can be read by userland application from /dev/tunX
device.
1.2 What is the TAP ?
The TAP is a Virtual Ethernet network device.
TAP driver was designed as low level kernel support for
Ethernet tunneling. It provides to userland application
two interfaces:
- /dev/tapX - character device;
- tapX - virtual Ethernet interface.
Userland application can write Ethernet frame to /dev/tapX
and kernel will receive this frame from tapX interface.
In the same time every frame that kernel writes to tapX
interface can be read by userland application from /dev/tapX
device.
1.3 What platforms are supported by TUN/TAP driver ?
Currently driver has been written for 3 Unices:
Linux kernels 2.2.x, 2.4.x
FreeBSD 3.x, 4.x, 5.x
Solaris 2.6, 7.0, 8.0
1.5 How does Virtual network device actually work ?
Virtual network device can be viewed as a simple Point-to-Point or
Ethernet device, which instead of receiving packets from a physical
media, receives them from user space program and instead of sending
packets via physical media sends them to the user space program.
Let's say that you configured IPX on the tap0, then whenever
kernel sends any IPX packet to tap0, it is passed to the application
(VTun for example). Application encrypts, compresses and sends it to
the other side over TCP or UDP. Application on other side decompress
and decrypts them and write packet to the TAP device, kernel handles
the packet like it came from real physical device.
1.7 What is the difference between BPF and TUN/TAP driver?
BFP is a advanced packet filter. It can be attached to existing
network interface. It does not provide virtual network interface.
TUN/TAP driver does provide virtual network interface and it is possible
to attach BPF to this interface.
1.8 Does TAP driver support kernel Ethernet bridging?
Yes. Linux and FreeBSD drivers support Ethernet bridging.
Когда у нас появились сотрудники, работающие удаленно, пришлось думать над тем, как обеспечить им защищенный доступ к нашим хостинговым серверам, виртуальным выделенным серверам разработчиков Virtual Dedicated Server (VDS), сайтам обеспечения и сопровождения разработки и к другим ресурсам.
По соображениям безопасности доступ к этим ресурсам ограничен при помощи межсетевого экрана (файервола) по портам и адресам IP. Ежедневную перенастройку доступа при изменении динамических IP сотрудников едва ли можно назвать разумным решением.
Выход нашелся довольно быстро — это использование технологии виртуальных частных сетей Virtual Private Network (VPN) и ее свободной реализации OpenVPN. Эта реализация доступна практически для всех распространенных платформ, в том числе для планшетов и смартфонов. История развития OpenVPN насчитывает уже 12 лет (компания OpenVPN Technologies, Inc. была создана Francis Dinha и James Yona в 2002 году), так что это надежное и проверенное временем решение.
В нашей компании сеть VPN позволила предоставить защищенный доступ сотрудников к VDS, играющей роль сервера OpenVPN. И уже для фиксированного IP этого сервера был разрешен доступ к другим ресурсам компании. Попутно на сервере OpenVPN был установлен прокси Squid, что решило все проблемы доступа сотрудников с динамическими IP к защищенным ресурсам компании.
Надеюсь, что эта статья будет полезна тем, кто впервые столкнулся с необходимостью создания сети VPN или уже использует ее для решения тех или задач, а также тем, кто ищет замену коммерческим реализациям VPN.
С благодарностью приму замечания и предложения по содержимому статьи.
Оглавление
Немного теории
Если раньше для создания безопасного канала передачи данных крупным компаниям и организациям приходилось прокладывать (либо арендовать) кабели и защищать их от физического доступа злоумышленников, то теперь в этом нет необходимости. С помощью VPN можно создавать защищенные виртуальные каналы, работающие через безопасный "туннель" в Интернете. Такое решение может позволить себе любая, даже очень небольшая компания.
Конечно, если предъявляются повышенные требования к защите данных, необходимо применять сертифицированные средства и обращаться к специалистам. Однако уровень защиты, обеспечиваемый OpenVPN, позволяет использовать эту технологию для многих коммерческих приложений.
Почему сеть VPN называется виртуальной и частной?
Виртуальная она потому, что узлы сети объединяются не физическими линиями, а виртуальными соединениями, которые создаются программным обеспечением (ПО) VPN.
Сеть VPN частная, так как к ней могут подключаться только узлы компании, создавшей эту сеть, а не все желающие. На каждом узле сети VPN должно работать ПО VPN. Еще там должны находиться ключи и сертификаты, обеспечивающие узлам доступ к сети VPN и криптографическую защиту передаваемых данных.
Таким образом, сеть VPN может объединять ресурсы (серверы и рабочие станции) компании в единую безопасную виртуальную сеть, созданную на базе Интернета. И теперь сотрудники, работающие удаленно (из дома или из другой страны) будут находиться как бы в общей сети своей компании. Сеть VPN подходит и для консолидации территориально разделенных офисов компании.
Обмен данными по сети
ПО OpenVPN передает данные по сети с помощью протоколов UDP или TCP с применением драйвера TUN/TAP. Протокол UDP и драйвер TUN позволяет подключаться к серверу OpenVPN клиентам, расположенным за NAT.
Для OpenVPN можно выбрать произвольный порт, что позволяет преодолевать ограничения файервола, через который осуществляется доступ из локальной сети в Интернет (если такие ограничения установлены).
Безопасность и шифрование
Безопасность и шифрование в OpenVPN обеспечивается библиотекой OpenSSL и протоколом транспортного уровня Transport Layer Security (TLS). Вместо OpenSSL в новых версиях OpenVPN можно использовать библиотеку PolarSSL. Протокол TLS представляет собой усовершенствование протокола защищенной передачи данных уровня защищенных сокетов Secure Socket Layers (SSL).
В OpenSSL может использоваться симметричная и ассиметричная криптография.
В первом случае перед началом передачи данных на все узлы сети необходимо поместить одинаковый секретный ключ. При этом возникает проблема безопасной передачи этого ключа через небезопасный Интернет.
Во втором случае у каждого участника обмена данными есть два ключа — публичный (открытый) и приватный (секретный).
Публичный ключ используется для зашифрования данных, а приватный — для расшифрования. В основе шифрования лежит довольно сложная математика. Выбранный в SSL/TLS алгоритм зашифрования публичным ключом обеспечивает возможность расшифрования только с помощью приватного ключа.
Приватный ключ секретный, и должен оставаться в пределах узла, на котором он создан. Публичный ключ должен передаваться участникам обмена данными.
Для безопасной передачи данных необходимо идентифицировать стороны, принимающие участие в обмене данными. В противном случае можно стать жертвой так называемой "атаки посредника" (Man in the Middle, MITM). В ходе такой атаки злоумышленник подключается к каналу передачи данных и прослушивает его. Он также может вмешиваться, удалять или изменять данные.
Чтобы обеспечить аутентификацию (проверку подлинности пользователя) протокол TLS использует инфраструктуру публичных ключей (Public Key Infrastructure, PKI) и асимметричную криптографию.
Нужно осознавать, что расшифрование данных без наличия приватного ключа тоже возможно, например, методом последовательного перебора. Хотя такой метод и требует больших вычислительных ресурсов, это только вопрос времени, когда данные смогут быть расшифрованы.
Хотя размер ключа влияет на сложность расшифрования, никакой ключ не дает гарантии полной безопасности данных. Кроме того, существует возможность похищения уже расшифрованных данных и ключей за счет уязвимостей и закладок в операционной системе или прикладном ПО, а также в аппаратном обеспечении серверов и рабочих станций.
Шифрование данных увеличивает трафик и замедляет обмен данными. Чем больше длина ключа, применяемого для шифрования данных, тем труднее будет его подобрать, но и тем заметнее получится замедление обмена данными.
Сертификаты и удостоверяющий центр CA
Как мы уже сказали, при ассиметричной криптографии открытый ключ используется для зашифрования данных, а закрытый — для расшифрования. Чтобы избежать подделки открытого ключа, какая-то третья сторона должна его заверить. В результате этой процедуры создается так называемый сертификат открытого ключа.
Сертификат должна заверить организация, которой доверяют. Эта организация играет роль удостоверяющего центра (Certification authority, CA).
Если создается открытый ключ для публичного использования, в качестве удостоверяющего центра должна выступать коммерческая или государственная организация с неоспоримой репутацией. Эта организация публикует собственный открытый ключ, доступный всем.
Но для сети VPN, создаваемой для своей компании, вы можете самостоятельно создать свой удостоверяющий центр CA и выпускать так называемые самоподписанные сертификаты. Конечно, доверие к таким сертификатам не будет выходить за рамки вашей компании, но во-первых, этого будет вполне достаточно, а во-вторых, самоподписанные сертификаты совершенно бесплатны.
Самоподписанные сертификаты и будут играть роль публичных ключей, с помощью которых узлы вашей сети OpenVPN будут зашифровывать данные. Для расшифрования данных будут использованы приватные ключи.
Сертификаты создаются в соответствии со стандартом X.509. Этот стандарт определяет форматы данных и процедуры распределения открытых ключей с помощью сертификатов, снабженных электронными подписями.
Сертификат X.509 — это публичный ключ, содержащий такие данные, как субъект, владеющий сертификатом, имя узла, период действия, алгоритм и значение подписи сертификата, и т.д. Сертификат должен быть подписан приватным ключом удостоверяющего центра (Certification authority, CA).
Когда наш узел рабочей станции подключается к удаленному узлу (серверу) с использованием протокола TLS, сервер отправляет ему сертификат X.509. На нашем узле есть публичный ключ удостоверяющего центра CA, который подписал этот сертификат. Этот ключ используется для проверки подписи.
Таким образом, имеется способ проверки удаленного узла (сервера), к которому наш узел собирается подключиться, чтобы исключить "атаки посредника" MITM.
Список отзыва сертификатов
Иногда требуется блокировать доступ отдельных узлов к сети VPN компании, например, заблокировать доступ рабочей станции уволенного сотрудника.
Для упрощения этой процедуры в OpenVPN предусмотрен список отзыва сертификатов (Сertificate Revocation List, CRL) и простые средства для управления этим списком.
Список CRL создается в удостоверяющем центре CA и потом копируется на сервер OpenVPN. После внесения изменений в список CRL его необходимо повторно скопировать на сервер OpenVPN.
Файл Диффи-Хелмана
Файл Диффи-Хелмана (Diffie-Hellman) необходим для реализации одноименного протокола, позволяющего использовать небезопасный канал для получения общего секретного ключа. Этот ключ будет в дальнейшем использоваться для защищенного обмена данными с помощью алгоритмов симметричного шифрования.
В применении к OpenVPN файл Диффи-Хелмана нужен для обеспечения защиты трафика от расшифровки, если ключи были похищены. Здесь имеется в виду тот трафик, который был записан и сохранен еще до похищения ключей.
Файл Диффи-Хелмана создается на сервере OpenVPN.
Статический ключ HMAC
Компоненты сети OpenVPN
Прежде чем мы перейдем от теории к практике, перечислим основные компоненты сети OpenVPN и объекты, с которыми нам придется иметь дело.
Удостоверяющий центр CA
Выдает сертификаты по запросу узлов сети VPN, подписанные сертификатом удостоверяющего центра. Предоставляет узлам сети VPN свой собственный сертификат для проверки удостоверяющей стороны. Управляет списком отзыва сертификатов CRL.
Сервер OpenVPN
ПО сервера OpenVPN создает туннель внутри незащищенной сети, например, Интернета. Этот туннель обеспечивает безопасный зашифрованный трафик между узлами — участниками обмена данными в сети OpenVPN.
Клиент OpenVPN
ПО клиента OpenVPN устанавливается на все узлы, которым необходим защищенный канал передачи данный с сервером OpenVPN. При соответствующей настройке сервера OpenVPN возможна защищенная передача данных между клиентами OpenVPN, а не только между клиентами и сервером OpenVPN.
Сертификаты (публичные ключи) X.509
Сертификаты X.509 представляют собой публичные ключи, заверенные удостоверяющим центром CA. Они используются для зашифровывания данных. Факт заверения сертификата удостоверяющим центром CA позволяет идентифицировать сторону, передающую зашифрованные данные.
Файл запроса на сертификат создается на узлах сети, затем он переносится на узел удостоверяющего центра и там подписывается. Созданный в результате подписанный сертификат переносится обратно на запросивший его узел сети OpenVPN.
Приватные ключи
Приватные ключи секретные. Они должны создаваться и храниться на каждом узле сети OpenVPN, предназначены для расшифрования данных и никогда не должны передаваться по сети.
Приватные ключи создаются на узлах сети OpenVPN одновременно с файлом запроса на получение сертификата.
Список отзыва сертификатов CRL
Содержит список сертификатов, утративших доверие. Он создается и редактируется на узле удостоверяющего центра CA. Чтобы отключить узел от сети, достаточно занести его сертификат в список CRL.
После создания и каждого изменения список CRL переносится на серверы OpenVPN.
Файл Диффи-Хелмана
Используется, чтобы в случае похищения ключей исключить расшифрование трафика, записанного еще до этого похищения. Создается на сервере OpenVPN.
Статический ключ HMAC
Служит для проверки подлинности передаваемой информации. Обеспечивает защиту от DoS-атак и флуда. Создается на сервере OpenVPN.
Готовим оборудование для установки OpenVPN
Если вы впервые настраиваете сеть VPN, лучше всего экспериментировать на виртуальных машинах VDS. Это могут быть VDS, созданные локально на вашем компьютере или на сервере в вашей сети, либо арендованные у провайдера. Перед арендой VDS поинтересуйтесь, поддерживается ли драйвер TUN/TAP. Некоторые провайдеры требуют дополнительной оплаты для подключения TUN/TAP.
На рис. 1. мы показали схему стенда, на котором будем устанавливать компоненты и узлы OpenVPN (имена и адреса IP хостов могут быть другими).
Рис. 1. Стенд для изучения OpenVPN.
Здесь изображены три узла (хоста), для каждого из которых потребуется отдельный VDS:
- сервер OpenVPN (vpnsrv, 192.168.0.54);
- клиент OpenVPN (vpnclient, 192.168.0.55);
- удостоверяющий центр CA (ca, 192.168.0.53)
Хосты клиента и сервера VPN соединены обычным, небезопасным каналом. В случае макета это может быть локальная сеть, в реальной жизни — канал сети Интернет. ПО OpenVPN создает в этой сети канал, обозначенный на рис. 1 красным цветом, внутри которого устанавливается безопасный шифрованный канал (обозначен зеленым цветом).
В макете хост удостоверяющего центра CA можно подключить к вашей локальной сети. Для реальной работы хост CA нужно отсоединить от сети, а обмен сертификатами и ключами осуществлять с помощью, например, USB флэш-диска.
Если к безопасности предъявляются повышенные требования, хост CA необходимо поместить в охраняемое помещение — расположенная на этой машине информация позволяет создавать ключи доступа к вашей сети VPN.
Мы проводили установку серверов OpenVPN в среде ОС Debian Linux и FreeBSD, клиентов OpenVPN в ОС Debian Linux, FreeBSD и Microsoft Windows.
Основная часть статьи посвящена установке компонентов OpenVPN для Debian Linux. Далее мы рассмотрим особенности установки для FreeBSD и Microsoft Windows.
По возможности на узлах сети OpenVPN используйте новые версии ОС. Перед тем как приступить к работе с OpenVPN, обновите пакеты Linux:
Установите на всех узлах пакет пакет zip, если он не был установлен ранее:
Этот пакет будет нужен для распаковки архива утилиты Easy-RSA, с помощью которой мы будем создавать ключи и сертификаты.
На всех узлах настройте обновление и синхронизацию времени.
Синхронизация времени необходима, т.к. сертификаты имеют период действия. Если часы, например, на хосте удостоверяющего центра CA и сервера OpenVPN не синхронны, может получиться так, что выданный удостоверяющим центром сертификат не будет действителен на узлах сети OpenVPN из-за ограничений по дате или времени.
Дальнейшие работы мы начнем с подготовки хоста удостоверяющего центра CA. Затем установим хосты сервера и клиента OpenVPN.
Создание удостоверяющего центра CA
Как мы уже говорили, задача удостоверяющего центра CA — выдача подписанных сертификатов для сервера и клиентов OpenVPN.
Чтобы получить сертификат, сервер или клиент на своем хосте генерирует файл запроса на сертификат. Этот файл запроса передается на хост CA, который создает сертификат и подписывает его. Далее подписанный сертификат передается на запросивший хост.
Одновременно с запросом сертификата создается приватный ключ. Приватные ключи создаются для всех узлов сети OpenVPN: для удостоверяющего центра CA, для сервера и всех клиентов OpenVPN.
Для безопасности файлы ключей никогда не должны покидать узлы, где они были созданы. Обмениваться можно только запросами на сертификаты и сертификатами, приватными ключами обмениваться нельзя и незачем.
На рис. 2 показан процесс получения подписанного сертификата для сервера OpenVPN.
Рис. 2. Получение сертификата для сервера OpenVPN
Сервер OpenVPN создает свой приватный ключ и файл запроса на получение сертификата. Файл запроса передается в удостоверяющий центр, например, на USB флеш-диске.
Удостоверяющий центр на основе запроса создает подписанный сертификат, который затем требуется перенести на сервер OpenVPN, также на USB флэш-диске.
Если к безопасности не предъявляется особых требований или вы только изучаете OpenVPN, можно подключить машину удостоверяющего центра к сети и передавать запросы и сертификаты, например, с помощью утилит SFTP или SCP. Можно даже совместить функции CA и, например, сервера OpenVPN в одном хосте.
Аналогичным образом необходимо получить сертификаты для всех клиентских узлов (рис. 3).
Рис. 3. Получение сертификата для клиента OpenVPN
Установка утилиты Easy-RSA
Все операции по созданию ключей и сертификатов можно выполнить с помощью утилиты openssl. Однако проще воспользоваться специально созданной для этого программой Easy-RSA, которая использует openssl для выполнения действий с ключами и сертификатами.
Ранее утилита Easy-RSA поставлялась вместе с OpenVPN, но теперь это отдельный проект.
Все операции с удостоверяющим центром и сертификатами можно (и нужно) проводить от имени непривилегированного пользователя.
Создайте пользователя с именем, например, ca и перейдите в его домашний каталог:
Читайте также: