题 我应该使用tap或tun for openvpn吗?


使用dev tap和dev tun for openvpn有什么区别?我知道不同的模式不能互操作。什么是技术差异,除了第2层和第3层操作之外。是否存在不同的性能特征或不同的开销水平。哪种模式更好。每种模式都可以使用哪些功能。


79
2018-06-06 15:12




请解释一下差异?什么是以太网桥接,为什么不好? - Thomaschaaf


答案:


如果可以在第3层创建vpn(在子网之间再跳一次) - 转到tun。

如果您需要在两个不同的位置桥接两个以太网段 - 然后使用tap。在这样的设置中,你可以在vpn两端的同一个ip子网(例如10.0.0.0/24)中安装计算机,并且他们可以直接相互“交谈”而不需要对路由表进行任何更改。 vpn将像以太网交换机一样运行。这可能听起来很酷,在某些情况下很有用,但除非你确实需要,否则我建议不要去做。如果你选择这样的第2层桥接设置 - 你的vpn会有一些'垃圾'(即广播包)。

使用tap你会有更多的开销 - 除了ip标题之外 38B或更多 以太网报头将通过隧道发送(取决于您的流量类型 - 它可能会引入更多碎片)。


70
2018-06-06 15:34





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

如果我选择了“tun”,我可能会遇到很多破损的服务 - 当你在办公室时身体上有很多可行的东西,但是当你离开现场并且你的笔记本电脑无法“看到”时会破坏以太网子网上的设备了。

但是通过选择“tap”,我告诉VPN让远程机器感觉就像它们在LAN上一样,广播以太网数据包和原始以太网协议可用于与打印机和文件服务器通信以及为其网络邻居显示器供电。它工作得很好,而且我从来没有得到过不能在异地工作的报告!


22
2018-03-22 21:30





我总是设置tun。 Tap在OpenVPN中被以太网桥接使用,并引入了前所未有的复杂性,这是不值得打扰的。通常当需要安装VPN时,需要它 现在,复杂的部署并不快。

OpenVPN常见问题解答 和 以太网桥接HOWTO 是 优秀 关于这个主题的资源。


14
2018-06-07 06:52



根据我的经验,tun更容易设置,但不能处理尽可能多的网络配置,因此您遇到了更多奇怪的网络问题。相比之下,点击设置有点复杂,但是一旦你这样做,它通常“适用于每个人”。 - Cerin


如果您打算使用OpenVPN连接移动(iOS或Android)设备,那么您应该使用TUN作为当前的TAP OpenVPN不支持 在他们:

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


7
2017-09-24 15:35



Android通过第三方应用支持TAP:OpenVPN Client(开发人员:colucci-web.it) - Boo


我开始使用tun,但切换到tap,因为我不喜欢使用/ 30子网  PC(我需要支持Windows)。我发现这是浪费和混乱。

然后我在服务器上发现了“拓扑子网”选项。适用于2.1 RC(不是2.0),但它为我提供了tun(无桥接,性能,路由等)的所有优点,并且每台(windows)机器具有一个(顺序)IP地址的便利性。


5
2018-06-07 08:20





我的“经验法则”
TUN - 如果您只需要访问另一端直接连接到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是否更适合您的需求之前,必须定义诸如“需要访问”和“安全要求”之类的约束,以及定义网络吞吐量和设备限制等约束。


4
2018-02-22 21:15





几年前我有同样的问题,试图在我的博客上用简单的术语(我个人认为其他资源中缺乏这些)来解释它: OpenVPN入门

希望它可以帮到某人


3
2018-04-08 18:13



虽然理论上这可以回答这个问题, 这会更好 在这里包括答案的基本部分,并提供参考链接。 - Mark Henderson♦
好帖子!我很少读这样的帖子,但我做了这个。我同意Mark Henderson的观点,你应该写一个小摘要并把链接放在后面。 - Pierre-Luc Bertrand
这个帖子很棒。谢谢! - Compeek


设置TAP几乎不需要设置TAP的人员进行额外的工作。

当然,如果你知道如何设置TUN但不明白你正在做什么,只是按照一个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 等等

您使用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次加密。

所以这里的影响微乎其微。

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

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

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

所以你有360Mbps和600Mbps之间的连接,E3-1231 v3 cpu之间的连接使用tap2 AES265密码,auth SHA256和ta.key,证书tls-cipher我也使用了最高的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通过openvpn TAP连接的2个不同子网中的2个客户端之间复制Windows的结果


2
2017-11-28 08:37