/ dev / ppp和/ dev / net / tun之间有什么区别?

时间:2013-04-05 23:13:14

标签: linux ppp tun

PPP和tun / tap之间有什么区别?两者似乎都是用于在用户空间程序上实现网络。

使用PPP,内核创建ppp%d供使用,让用户空间程序为它提供后端 使用tun / tap,内核创建tun%d以供使用,并让用户空间程序为它提供后端...

将程序更改为使用tun / tap (我的Android设备上似乎不可用)到ppp有多困难?

1 个答案:

答案 0 :(得分:16)

他们都提供某种形式的网络访问,为什么有两个不同的东西似乎做同样的事情?答案是他们不会做同样的事情。

点对点协议(ppp)旨在通过串行链路提供IP网络连接。提供串行链路最常见的是调制解调器,它们存在于移动电话中,并且几年前当您拨打服务提供商连接到互联网时无处不在。您的ppp连接从您的电脑转到接收器,该接收器将串行信号转换回通过互联网路由的IP数据包。

现在,当您从服务提供商处获得电缆调制解调器或ADSL调制解调器时,它通过以太网或WiFi链路提供IP网络连接。调制解调器实际上是在向服务提供商提供连接,这可以看作与ppp连接相同;只是你的计算机不再通过ADSL线路或电缆连接进行从IP数据包到信号的转换工作。单独的调制解调器提供了一个远离与提供商交谈的复杂性的层,你只是简单地谈论'简单'以太网/无线网络连接。

Tun / Tap机制允许您访问标准网络连接上方的图层中的虚拟专用网络(vpn);例如,如果您通过以太网连接到您的电缆调制解调器,那么这将通过您的以太网连接提供对vpn的访问。如果您通过直接插入电脑的调制解调器访问互联网,那么您将通过ppp访问您的VPN。在它自己的基础上,tun / tap界面不提供互联网访问,它依赖于预先存在的连接。这是网络分层的一个例子。

询问将程序从使用tun / tap网络连接转换为使用ppp连接有多困难,误解了两个接口在提供网络访问时所处的位置 - tun / tap将位于ppp之上。未加密的数据包进入tun / tap接口,被加密,然后作为IP数据包发送到ppp接口,ppp接口将它们转换为串行信号,这些信号被发送到远程端,将它们转回IP数据包并转发到{{{ 1}}目标解密它们并通过它自己的专用网络路由它们。

如果您删除了tun / tap界面,则必须修改希望通过vpn进行通信的任何应用程序,以便对于任何网络通信,您需要拦截它们;加密他们;转发他们;收到回复并解密它们。通过使用tun / tap层,您允许内置IP路由采用未加密的数据包加密并转发它们 - 即您不需要修改任何与专用网络通信的应用程序。

计算机科学中的每个问题都可以通过添加一个间接层来解决。通过添加这些层,我们可以降低单个组件的复杂性,但可以构建功能强大的系统。如果我们没有ppp接口,每个程序都需要知道如何串行通话,如果我们没有tun / tap,那么每个程序都需要知道如何与vpn通话以及需要知道怎么说串口。

如果将ppp连接发送到私有系统,则可以删除tun / tap连接的唯一方法。您将不得不使用类似于GSM数据的东西(9600位/秒,这是一个真正的电话),即使这样你也不会加密,而且你要经过一次蜂窝网络,这种方式打破了私人网络的整体意图。

以下是对各种隧道协议如何工作的粗略简化,但应该详细解释一下,您应该能够理解为什么不能将一个隧道协议换成另一个隧道协议。

要理解为什么不同的vpn协议使用不同的接口来完成工作,你必须了解它们的设计方式。 TAP,L2TP和PPTP都是第2层协议的示例。 TUN是第3层协议的一个例子。

为了理解这些差异,我将使用邮政类比。第2层(也称为链路层),相当于快递员。你给他递了一封信,然后他把它交给收件人。快递员知道他所在地区的所有潜在目的地,他可以处理该地区的任何信息。

如果我们延伸这个类比,后箱也可以被视为有效的第2层终点。如果您想在全国范围内收到信件,请将它们放入邮箱。这与L2TP,PPTP和TAP包装其数据包以便通过网络传输类似。

第3层是信件上的地址 - 它可以用来将信件从邮局移到邮局,最后送到邮递员手中。这是被包裹的数据包通过网络路由的地方。

当邮递员知道他的送货区域内的目的地并将信件交给预定的收件人时,它会回到第2层。这是包裹的数据包被解包然后由L2TP,PPTP或TAP端点处理的地方

对于TUN来说,它有点容易。您的信件将直接发送到您当地的邮局,并集中送到您收集邮件的目的地邮局。可能有一些关于将信件发送到邮局,或从邮局到目的地地址的细节,但这实际上并不是协议的一部分。

然后是关于它们如何实现的尴尬细节。 L2TP和PPTP都是根据vpn来定义的,这是一种在两个端点之间建立直接连接的完善机制,因此为了在这种系统中进行通信,原点和目的地都需要说话点对点协议。隧道提供了一个虚拟层,这些ppp消息可以通过这个层传播(这种隧道是他们名字中的ppp。)

TAP接口是根据 ethernet 数据包的隧道定义的 - 这些数据包是您通过WiFi连接看到的数据包。它在两个网络之间建立了一个简单的桥接器,通过这些网络传递这些以太网数以太网数据包通常包含IP数据包,允许您将它们直接放在目的地的线路上,而无需重新封装它们。

TUN接口是根据 IP 数据包的隧道定义的 - 这些数据包在转换之前是数据包,因此它们可以通过物理连接(如以太网/ WiFi)传输。这意味着您要在计算机和目标网络之间建立路由虚拟IP网络。具有由此接口提供的路由定义的目标的IP数据包将发送到该接口。

最终产品是系统上另一个网络接口,可以发送IP数据包。此接口包装数据包(在PPTP / L2TP的ppp数据包中;在TAP的以太网数据包中;在TUN的另一个IP数据包内)。在包装之前,或在包装之后或在两个点(取决于协议)可能涉及加密。理解L2TP的程序将非常精通谈话T,但如果没有重大改写,将无法与其他协议进行对话。