it-swarm.cn

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

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

87
Thomaschaaf

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

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

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

76
pQd

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

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

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

24
Brandon Rhodes

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

OpenVPN FAQEthernet Bridging HOWTO 是该主题上的优秀资源。

16
jtimberman

如果您打算使用OpenVPN连接移动设备(iOS或Android)),则应将TUN用作当前的TAP OpenVPN不支持

TAP的缺点:.....不能与Android或iOS设备

8
Siegfried Löffler

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

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

5
Mikeage

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

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

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

5
user541686

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

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













5
oldbaritone

几年前,我也遇到了同样的问题,并试图在我的博客上以直截了当的方式(我个人认为缺乏其他资源)来解释它: OpenVPN入门

希望对别人有帮助

4
Steve

设置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%

抽头的开销(大约为tun的32)也不是什么大问题(可能在未加密的网络上),但是在加密的网络上,通常是AES会导致速度降低。

例如在未加密的wrt3200acm上,我获得360Mbps。使用加密时,速度会下降到54-100Mbps,具体取决于我选择哪种加密方式),但openvpn不会在1500上进行加密,而在32开销上则不会进行第二次加密。而是对1500 + 32开销进行1次加密。

因此,这里的影响很小。

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

2个具有AES支持的虚拟机之间的加密使我使用TAP的ovpn达到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个客户端之间复制的发现

2
Vincent