我应该对openvpn使用tap或tun吗?


85

将dev tap和dev tun用于openvpn有什么区别?我知道不同的模式无法互操作。除了第2层与第3层操作外,技术上有什么区别。是否存在不同的性能特征或不同级别的开销。哪种模式更好。每种模式独有的功能是什么。


请说明区别?什么是以太网桥接,为什么不好?
Thomaschaaf

Answers:


74

如果可以在第3层上创建vpn(子网之间再跳一跳),请进行调整。

如果您需要在两个不同的位置桥接两个以太网段,请使用tap。在这种设置中,您可以将计算机置于vpn两端的同一ip子网(例如10.0.0.0/24)中,它们将能够直接彼此“对话”,而无需更改其路由表。VPN的作用类似于以太网交换机。这听起来很酷,在某些情况下很有用,但我建议除非您确实需要,否则请不要这样做。如果您选择这样的第2层桥接设置-您的VPN上会有一些“垃圾”(即广播数据包)。

使用tap会增加一些开销-除了IP头之外,还将通过隧道发送38B或更多的以太网头(取决于流量的类型-可能会引入更多的碎片)。


24

当我为一家拥有小型企业的朋友设置VPN时,我选择了“轻按”,因为他的办公室使用了Windows计算机,商用打印机和Samba文件服务器。其中一些使用纯TCP / IP,一些似乎仅使用NetBIOS(因此需要以太网广播数据包)进行通信,而某些我甚至不确定。

如果我选择了“ tun”,则可能会遇到很多服务中断的情况-当您物理上在办公室中时,很多事情都可以正常工作,但是当您离开现场并且笔记本电脑无法“看到”时,它将崩溃。以太网子网上的设备了。

但是,通过选择“点击”,我告诉VPN使远程机器感觉完全像它们在LAN上一样,并具有广播以太网数据包和原始以太网协议,可用于与打印机和文件服务器进行通信并为其网络邻居显示器供电。效果很好,而且我从来没有收到无法在异地工作的报告!


15

我总是设置屯。Tap由OpenVPN中的以太网桥接使用,并引入了前所未有的复杂性水平,根本不值得理会。通常,当需要安装VPN时,现在就需要它,并且复杂的部署不会很快进行。

OpenVPN的FAQ以太网桥接HOWTO极好的关于这一主题的资源。


9
以我的经验,tun更易于设置,但不能处理那么多的网络配置,因此您会遇到很多奇怪的网络问题。相比之下,水龙头的设置要复杂一些,但是一旦完成,它通常对每个人都“有效”。
塞林

8

如果您打算使用OpenVPN连接移动设备(iOS或Android),则应使用TUN,因为OpenVPN目前不支持 TAP :

TAP的缺点:.....不能与Android或iOS设备一起使用


Android通过以下第三方应用程序支持TAP:OpenVPN客户端(开发人员:colucci-web.it)
Boo

5

我开始使用tun,但由于我不喜欢为每台 PC 使用/ 30子网(我需要支持Windows),因此切换为点击。我发现这是浪费和混乱的。

然后,我在服务器上发现了“拓扑子网”选项。可与2.1 RC(非2.0)一起使用,但它为我提供了tun的所有优点(无桥接,性能,路由等),并且每(Windows)计算机只有一个(顺序)IP地址。


5

因为我很难找到简单的建议:

如果您仅使用VPN连接到Internet,则可以使用TUN 。

如果要连接到实际的远程网络(打印机,远程桌面等),则需要使用TAP 。


4

几年前,我也遇到了同样的问题,并试图在我的博客:OpenVPN Primer中以直截了当的方式(我个人认为缺乏其他资源)对其进行解释。

希望对别人有帮助


2
虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
马克·亨德森

很棒的帖子!我很少读这样的整篇文章,但是我确实读过。不过,我同意马克·亨德森(Mark Henderson)的观点,您应该写一小段摘要,然后再添加链接。
Pierre-Luc Bertrand

4

我的“经验法则”调整
-如果您只需要访问另一端直接连接到OpenVPN服务器计算机的资源,则没有Windows问题。通过使资源“出现”在OpenVPN服务器本地,可以在这里发挥一些创造力。(例如,可能是到网络打印机的CUPS连接,或者是在OpenVPN服务器上安装的另一台计算机上的Samba共享。)

TAP-如果您需要访问通过网络连接到网络的多个资源(计算机,存储设备,打印机,设备)。另外一端。某些Windows应用程序可能还需要TAP。


优点:
TUN通常将VPN访问限制在单个计算机(IP地址)中,因此(大概)通过有限的与远端网络的连接来提高安全性。TUN连接将减少VPN隧道的负荷,进而减少远端网络的负荷,因为只有到/来自单个IP地址的流量会穿越VPN到达另一端。到子网中其他站点的IP路由不包括在内,因此不会通过VPN隧道发送流量,并且与OpenVPN服务器之间的通信很少或没有通信。

TAP-通常允许数据包在端点之间自由流动。这提供了与远端网络上其他站点进行通信的灵活性,包括较旧的Microsoft软件使用的某些方法。TAP具有与“在防火墙之后”授予外部访问权限相关的固有安全漏洞。它将允许更多的流量数据包流经VPN隧道。这也打开了端点之间地址冲突的可能性。

由于堆栈层的不同,延迟存在差异,但是在大多数最终用户方案中,端点的连接速度可能比传输的特定堆栈层对延迟的影响更大。如果延迟存在问题,考虑其他替代方法可能是一个好主意。当前的GHz级多处理器通常克服了通过互联网进行传输的瓶颈。

没有上下文就无法定义“更好”和“更糟”。
(这是顾问最喜欢的答案,“取决于……”)
法拉利比自卸车“更好”吗?如果您想快点走,那可能是这样。但是如果您要搬运重物,可能不会。

在确定TUN或TAP是否更适合您的需求之前,必须定义诸如“访问需求”和“安全要求”之类的约束,并定义诸如网络吞吐量和设备限制之类的约束。


2

设置TAP几乎不需要安装人员进行任何其他工作。

当然,如果您知道如何设置TUN但不了解自己在做什么,而只是按照tun教程进行操作,您将在努力设置TAP,但这不是因为它更困难,而是因为您不知道自己在做什么。在做。这很容易导致TAP环境中的网络冲突,然后看起来更加复杂。

事实是,如果您因为知道自己在做什么而不需要教程,则设置tap所需的时间与设置tun一样多。

轻按一下,有许多关于子网划分的解决方案,我发现自己最简单的方法是使用B类子网。使用17.2.2.2.1.0 / 16的site1(Network1)使用172.22.2.0/16的site2(network2)使用172.22.3.0/16的site3等。

您可以使用oVPN服务器设置site1,并为客户端提供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上,我获得360Mbps。使用加密时,速度会下降到54-100Mbps,具体取决于我选择哪种加密方式),但openvpn不会在1500上进行加密,而在32开销上则不会进行第二次加密。而是对1500 + 32开销进行1次加密。

因此,这里的影响很小。

在较旧的硬件上,您可能会注意到更多的影响,但是在现代硬件上,它的影响已降至最低。

2个具有AES支持的虚拟机之间的加密使我的ovpn TAP达到120-150Mbps。

一些报告称具有AES硬件加密支持的专用路由器的速度高达400Mbps!速度是i5-3570k的3倍(在我的测试系统上,以1核心利用率的100%不能达到150Mbps以上)我的另一端:E3-1231 v3,当时的CPU利用率约为7%使用了25%的核心openvpn。因此,E3最有可能将连接增加3到4倍。

因此,通过使用AES265密码,auth SHA256和ta.key,证书tls-cipher的E3-1231 v3 cpu之间的连接,您将获得360Mbps至600Mbps的带宽,我还使用了最高的TLS-DHE-RSA-WITH-AES- 256-SHA256

要指出这一点,请点击:wrt3200acm的加密速度高达70-80mbps。i5-3570k通过加密达到120-150。E3-1231 v3的加密速度至少为360Mbps(这是根据案例1和2得出的结论得出的,因为我没有2个要测试的E3-1231 v3。)

这些是我基于Windows到Windows在通过openvpn TAP连接的2个不同子网中的2个客户端之间复制的发现


-1

如果那样的话,为什么呢,你得到了多少?我明确地使用TAP,原因是数据包的分层以更少的等待时间和传输损失进行,而这种方法可以减轻这种情况。但是,只有在第3层时,这才会对VPN的操作产生任何明显影响,特别是隧道方面以及允许哪些IP通过和可分配的地址。UDP的使用可能会引入另一种情况,您需要确定哪种是最适合您的路由。每个网络都是不同的,并且需要唯一的一组参数。希望这可以帮助。


1
相当混乱。请考虑将其关闭,解释重要的差异并消除它们。
vonbrand 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.