Назад | Перейти на главную страницу

Что мне следует использовать для openvpn - tap или tun?

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

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

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

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

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

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

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

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

В OpenVPN FAQ и Протоколы Ethernet Bridging HOWTO являются превосходно ресурсы по этой теме.

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

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

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

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

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

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

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

Мои "практические правила"
TUN - если вам нужен ТОЛЬКО доступ к ресурсам, подключенным напрямую к серверу OpenVPN на другом конце, и нет проблем с Windows. Здесь может помочь немного творчества, поскольку ресурсы «кажутся» локальными для сервера OpenVPN. (примерами могут быть подключение CUPS к сетевому принтеру или общий ресурс Samba на другом компьютере, установленном на сервере OpenVPN.)

TAP - если вам нужен доступ к нескольким ресурсам (машинам, хранилищам, принтерам, устройствам), подключенным через сеть на другом конце. TAP также может потребоваться для некоторых приложений Windows.


Advantages:
TUN normally confines VPN access to a single machine (IP address) and therefore (presumably) better security through limited connectivity to the far-side network. TUN connection will create less load on the VPN tunnel, and in turn the far-side network because only traffic to/from the single IP address will cross the VPN to the other side. IP Routes to other stations in the subnet are not included, so traffic is not sent across the VPN tunnel and little or no communication is possible beyond the OpenVPN server.

TAP - usually allows packets to flow freely between the endpoints. This gives the flexibility of communication with other stations on the far-side network, including some methods used by older Microsoft software. TAP has the inherent security exposures involved with granting outside access "behind the firewall". It will allow more traffic packets to flow through the VPN tunnel. This also opens the possibility of address conflicts between the endpoints.

There являются differences in latency because of the stack layer, but in most end-user scenarios the connection speed of the endpoints is probably a more significant contributor to latency than the particular stack layer of the transmission. If latency is at issue, it might be a good idea to consider other alternatives. Current GHz-level multiprocessors normally outrun the bottleneck of transmission via the internet.

"Better" and "Worse" are not definable without a context.
(This is the consultant's favorite answer, "Well that depends...")
Is a Ferrari "better" than a dump truck? If you are trying to go fast, it may be; but if you're trying to haul heavy loads, probably not.

Constraints like "need for access" and "security requirements" must be defined, as well as defining constraints like network throughput and equipment limitations, before one can decide whether TUN or TAP is better-suited to your needs.

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

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

Настройка TAP почти не требует дополнительных усилий от человека, настраивающего его.

Конечно, если вы знаете, как настроить TUN, но не понимаете, что делаете, и просто следуете инструкциям по настройке, вы будете бороться за настройку TAP, но не потому, что это сложнее, а потому, что вы не знаете, что вы делаю. Что легко может привести к сетевым конфликтам в среде TAP, а затем, похоже, все сложнее.

Дело в том, что если вам не нужен учебник, потому что вы знаете, что делаете, настройка Tap занимает столько же времени, сколько настройка tun.

с краном есть много решений о подсетях, я обнаружил, что самый простой способ - использовать подсеть класса 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 и второе шифрование на 32 накладных расходах. Вместо этого он выполняет однократное шифрование на 1500 + 32 служебных данных.

Так что влияние здесь минимальное.

На более старом оборудовании вы можете заметить большее влияние, но на современном оборудовании оно действительно сведено к минимуму.

Шифрование между двумя виртуальными машинами с поддержкой AES дает мне мой ovpn с TAP до 120-150 Мбит / с.

Некоторые сообщают, что выделенные маршрутизаторы с поддержкой аппаратного шифрования AES достигают скорости 400 Мбит / с! В 3 раза быстрее, чем у i5-3570k (что на моей тестовой системе не могло быть выше 150 Мбит / с при 100% использовании одного ядра) Мой другой конец: E3-1231 v3, тогда был примерно 7% загрузки ЦП, около Было использовано 25% ядра openvpn. Так что E3, скорее всего, может увеличить соединение в 3-4 раза.

так что у вас будет что-то между 360 Мбит / с и 600 Мбит / с с подключением между процессором E3-1231 v3, выполняющим тап AES265 шифр, аутентификацию SHA256 и ta.key, сертификаты tls-cipher Я также использовал самый высокий 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 для тестирования.)

Это мои выводы, основанные на копировании окон в окна между двумя клиентами в двух разных подсетях, подключенных с помощью openvpn TAP.

Я обычно по умолчанию использую TUN, так как наличие его в собственной подсети лучше по ряду причин, среди которых брандмауэр и OpenVPN, как правило, работают прямо из коробки.

Однако у TAP есть несколько преимуществ, среди которых то, что подключенные клиенты ведут себя точно так же, как физические. Это означает, например, что любые ресурсы с ограничением по IP, которые обычно доступны только в физической сети, также работают.

Другой вариант использования, который я вижу в домашних ситуациях, заключается в том, что сервер OpenVPN не имеет выхода в Интернет и, следовательно, маршрутизируется через какой-то модем / маршрутизатор, поддерживаемый провайдером. Чаще всего они не поддерживают такие вещи, как статическая маршрутизация, которая является обязательной, если вы позволяете OpenVPN использовать свою собственную подсеть.

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