Должен ли я использовать tap или tun для openvpn?

85

Каковы различия между использованием dev tap и dev tun для openvpn? Я знаю, что разные режимы не могут взаимодействовать. В чем технические отличия, кроме просто слой 2 против 3 операции. Существуют ли разные характеристики производительности или разные уровни накладных расходов. Какой режим лучше. Какие функции доступны исключительно в каждом режиме.

Thomaschaaf
источник
Пожалуйста, объясните разницу? Что такое мост Ethernet и почему это плохо?
Thomaschaaf

Ответы:

74

если это нормально для создания vpn на уровне 3 (еще один прыжок между подсетями) - перейдите на tun.

если вам нужно соединить два сегмента Ethernet в двух разных местах - используйте команду tap. в такой конфигурации вы можете иметь компьютеры в одной подсети ip (например, 10.0.0.0/24) на обоих концах vpn, и они смогут напрямую «общаться» друг с другом без каких-либо изменений в своих таблицах маршрутизации. VPN будет действовать как коммутатор Ethernet. Это может звучать круто и полезно в некоторых случаях, но я бы посоветовал не делать этого, если вам это действительно не нужно. если вы выберете такую ​​настройку моста 2-го уровня - будет немного мусора (то есть широковещательных пакетов), проходящего через ваш vpn.

при использовании tap у вас будет немного больше накладных расходов - помимо заголовков ip через туннель будет отправляться также 38B или более заголовков ethernet (в зависимости от типа вашего трафика - возможно, это приведет к большей фрагментации).

PQD
источник
24

Я выбрал «tap» при настройке VPN для друга, который владел небольшим бизнесом, потому что его офис использует множество компьютеров под управлением Windows, коммерческих принтеров и файлового сервера Samba. Некоторые из них используют чистый TCP / IP, некоторые, кажется, используют только NetBIOS (и, следовательно, нуждаются в широковещательных пакетах Ethernet), а некоторые я даже не уверен.

Если бы я выбрал «tun», я бы, вероятно, столкнулся с множеством сломанных сервисов - множество вещей, которые работали, пока вы находитесь в офисе физически, но потом сломались бы, когда вы уходили за пределы площадки и ваш ноутбук не мог «видеть» устройства в подсети Ethernet больше.

Но, выбрав «tap», я говорю VPN, чтобы удаленные машины чувствовали себя точно так же, как они находятся в локальной сети, с широковещательными Ethernet-пакетами и необработанными Ethernet-протоколами, доступными для связи с принтерами и файловыми серверами, а также для питания дисплея сетевого соседства. Это прекрасно работает, и я никогда не получаю сообщений о вещах, которые не работают вне офиса!

Брэндон Роудс
источник
15

Я всегда настраиваю Tun. Tap используется мостовым соединением Ethernet в OpenVPN и представляет беспрецедентный уровень сложности, с которым просто не стоит беспокоиться. Обычно, когда требуется установить VPN, она необходима сейчас , и сложные развертывания не осуществляются быстро.

OpenVPN FAQ и HOWTO Ethernet Bridging являются отличными ресурсами по этой теме.

jtimberman
источник
9
По моему опыту, Tun проще в настройке, но он не обрабатывает столько сетевых конфигураций, так что вы столкнетесь с гораздо более странными сетевыми проблемами. Напротив, тап немного сложнее в настройке, но как только вы это сделаете, он, как правило, «просто работает» для всех.
Cerin
8

Если вы планируете подключать мобильные устройства (iOS или Android) с использованием OpenVPN, то вам следует использовать TUN, так как в настоящее время TAP не поддерживается на них OpenVPN :

Недостатки TAP: ..... не может использоваться с устройствами Android или iOS

Зигфрид Леффлер
источник
TAP поддерживается на Android через стороннее приложение: клиент OpenVPN (разработчик: colucci-web.it)
Boo
5

Я начал использовать tun, но переключился на tap, так как мне не нравилось использование подсети / 30 для каждого ПК (мне нужно поддерживать Windows). Я нашел это расточительным и запутанным.

Затем я обнаружил параметр «топология подсети» на сервере. Работает с RC 2.1 (не 2.0), но дает мне все преимущества tun (без мостов, производительности, маршрутизации и т. Д.) С удобством одного (последовательного) IP-адреса на (windows) машину.

Mikeage
источник
5

Потому что мне трудно найти простой совет:

Вы можете использовать TUN, если вы просто используете VPN для подключения к Интернету .

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

Mehrdad
источник
4

У меня был тот же вопрос несколько лет назад, и я попытался объяснить его в прямом выражении (которого я лично не нашел в других ресурсах) в своем блоге: Учебник по OpenVPN.

Надеюсь, это поможет кому-то

Стив
источник
2
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Марк Хендерсон
Отличный пост! Я редко читаю целый пост, как этот, но этот я сделал. Я согласен с Марком Хендерсоном, хотя вы должны написать небольшое резюме и разместить ссылку после.
Пьер-Люк Бертран
4

Мои "правила большого пальца"
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 для ваших нужд.

oldbaritone
источник
2

Настройка 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 и т. д.

Вы настраиваете site1 с сервером oVPN и предоставляете клиентам диапазон IP-адресов 172.22.254.2 - 172.22.254.255/16, так что вы можете иметь более 200 клиентов ovpn (подсетей), каждая подсеть может иметь более 200 клиентов. Делает в общей сложности 40 000 клиентов, с которыми вы можете справиться (сомнение в том, что oVPN может с этим справиться, но, как вы видите, настройка правильной подсети даст вам более чем достаточно, как вам, скорее всего, когда-либо понадобится)

Вы используете кран, и все клиенты вместе, как в огромной корпоративной сети.

Если, однако, у каждого сайта есть свой собственный 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

Винсент
источник
-1

Если тогда, то что, сколько у тебя есть? Я бы использовал TAP явно по той причине, что многоуровневое пакетирование происходит с гораздо меньшими задержками и потерями передачи, которые уменьшаются с помощью этого метода. Однако только на уровне 3 это влияет на любое очевидное влияние на работу VPN, особенно на аспект туннелирования и то, какие IP-адреса разрешены через и назначаемые адреса. Использование UDP может привести к другой ситуации, когда вам нужно будет решить, какой маршрут лучше для вас выбрать. Каждая сеть отличается и требует уникального набора параметров. Надеюсь это поможет.

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