我应该为 openvpn 使用 tap 还是 tun?

Tho*_*aaf 104 vpn openvpn tap tun

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

pQd*_*pQd 89

如果可以在第 3 层(子网之间再多跳一跳)创建 vpn - 选择 tun。

如果您需要在两个不同位置桥接两个以太网段 - 则使用 tap。在这样的设置中,您可以在 vpn 的两端拥有相同 ip 子网(例如 10.0.0.0/24)中的计算机,并且它们将能够直接相互“交谈”,而无需更改其路由表。vpn 就像以太网交换机一样。这可能听起来很酷并且在某些情况下很有用,但我建议除非你真的需要它,否则不要去尝试它。如果您选择这样的第 2 层桥接设置 - 将会有一些“垃圾”(即广播数据包)通过您的 vpn。

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


Bra*_*des 33

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

如果我选择了“tun”,我可能会遇到很多中断的服务——很多东西在你在办公室时可以正常工作,但是当你离开现场并且你的笔记本电脑无法“看到”时就会中断以太网子网上的设备。

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


jti*_*man 19

我总是设置tun。Tap 被 OpenVPN 中的以太网桥接使用,并引入了前所未有的复杂程度,根本不值得打扰。通常当需要安装 VPN 时,现在就需要它,而且复杂的部署不会很快到来。

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

  • 根据我的经验,tun 更容易设置,但不能处理那么多的网络配置,所以你会遇到更多奇怪的网络问题。相比之下,tap 的设置要复杂一些,但是一旦你这样做了,它通常对每个人都“有效”。 (13认同)

use*_*686 12

因为我发现很难获得简单的建议:

如果您只是使用 VPN 连接到互联网,则可以使用 TUN 。

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

  • 您仍然可以使用 tun 连接到远程桌面(RDP/VNC/等)。 (4认同)

小智 11

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

TAP 缺点:..... 不能用于 Android 或 iOS 设备

  • Android 通过第三方应用程序支持 TAP:OpenVPN 客户端(开发者:colucci-web.it) (2认同)

小智 9

我的“经验法则”
TUN - 如果您只需要访问直接连接到另一端 OpenVPN 服务器机器的资源,并且没有 Windows 问题。通过使资源“看起来”在 OpenVPN 服务器的本地,这里的一点创造力会有所帮助。(示例可能是到网络打印机的 CUPS 连接,或安装在 OpenVPN 服务器上的另一台机器上的 Samba 共享。)点击

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


优点:
TUN 通常将 VPN 访问限制在一台机器(IP 地址)上,因此(大概)通过与远端网络的有限连接来获得更好的安全性。TUN 连接将在 VPN 隧道上创建更少的负载,反过来对远端网络造成更少的负载,因为只有进/出单个 IP 地址的流量才会穿过 VPN 到达另一端。不包括到子网中其他站点的 IP 路由,因此流量不会通过 VPN 隧道发送,并且在 OpenVPN 服务器之外几乎没有或没有通信可能。

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

由于堆栈层而导致延迟差异,但在大多数最终用户场景中,端点的连接速度可能比传输的特定堆栈层对延迟的影响更大。如果延迟有问题,考虑其他替代方案可能是个好主意。当前的 GHz 级多处理器通常会超过通过互联网传输的瓶颈。

“更好”和“更差”在没有上下文的情况下是无法定义的。
(这是顾问最喜欢的回答,“那要看情况了……”)
法拉利是否比自卸卡车“更好”?如果你想走得快,它可能是;但如果你想拖运重物,可能不会。

必须先定义“访问需求”和“安全要求”等约束,并定义网络吞吐量和设备限制等约束,然后才能决定 TUN 还是 TAP 更适合您的需求。

  • 这是绝对错误的。通过正确的路由和防火墙设置(部署 VPN 时无论如何都需要),可以通过任一模式访问任何资源。这**不是选择虚拟网卡模式的正确标准**。[wiki](https://community.openvpn.net/openvpn/wiki/BridgingAndRouting?__cf_chl_jschl_tk__=lHlR22IgMi8tjE6eUaRi2P8FaXfA045NHN8qN2gNVA8-1636438348-0-gaNycGzNCD0)中描述了正确的标准。 (2认同)

Mik*_*age 6

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

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


小智 5

设置 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 并为客户端提供 172.22.254.2 - 172.22.254.255/16 的 ip 范围,因此您可以拥有 200 多个 ovpn 客户端(子网),每个子网本身可以拥有 200 多个客户端。总共可以处理 40.000 个客户端(怀疑 oVPN 可以处理这个问题,但正如您所见,设置适当的子网划分将为您提供最有可能需要的更多)

您使用一个水龙头,所有客户都聚集在一起,就像在一个庞大的公司网络中一样。

如果,但是每个站点都有自己的 DHCP,并且应该有,您需要确保使用 ebtables 或 iptables 或 dnsmasq 来阻止 dhcp 分发变得疯狂。但是 ebtables 会降低性能。使用 dnsmasq dhcp-host=20:a9:9b:22:33:44,ignore 例如,在所有 dhcp 服务器上设置将是一项艰巨的任务。然而,在现代硬件上,ebtables 的影响并不大。只有 1 或 2 %

抽头的开销,大约 32 到 tun,也不是什么大问题(可能在未加密的网络上),但在加密网络上,通常是 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 之间的连接做 tap AES265 密码,auth SHA256 和 ta.key,证书 tls-cipher 我也使用了最高的 TLS-DHE-RSA-WITH-AES- 256-SHA256

为了指出这一点,使用 tap:wrt3200acm 可以通过加密达到 70-80mbps。i5-3570k 通过加密达到 120-150。E3-1231 v3 通过加密获得至少 360Mbps(这是从我对案例 1 和案例 2 的发现中插入的,因为我没有 2 个 E3-1231 v3 来测试。)

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