使用PPP,内核创建ppp%d供使用,让用户空间程序为它提供后端.
使用tun / tap,内核创建tun%d供使用,让用户空间程序为它提供后端…
将程序从使用tun / tap(我的Android设备上似乎不可用)更改为ppp有多难?
解决方法
点对点协议(ppp)旨在通过串行链路提供IP网络连接.提供串行链路最常见的是调制解调器,它们存在于移动电话中,并且几年前当您拨打服务提供商连接到互联网时无处不在.您的ppp连接从您的电脑转到接收器,接收器将串行信号转换回通过互联网路由的IP数据包.
如今,当您从服务提供商处获得电缆调制解调器或ADSL调制解调器时,它通过以太网或WiFi链路提供IP网络连接.调制解调器实际上是在向服务提供者提供连接,这可以看作与ppp连接相同;只是你的计算机不再通过ADSL线路或电缆连接进行从IP数据包到信号的转换工作.单独的调制解调器提供了一个远离与提供商交谈的复杂性的层,你只是说’简单’的以太网/ WiFi.
Tun / Tap机制允许您访问标准网络连接上方的层中的虚拟专用网络(vpn);例如,如果您通过以太网连接到您的电缆调制解调器,那么这将通过您的以太网连接提供对vpn的访问.如果您通过直接插入电脑的调制解调器访问互联网,那么您将通过ppp访问您的VPN.在它自己的情况下,tun / tap接口不提供互联网访问,它依赖于预先存在的连接.这是网络分层的一个例子.
询问将程序从使用tun / tap网络连接转换为使用ppp连接有多困难,误解了两个接口在提供网络访问时所处的位置 – tun / tap将位于ppp之上.未加密的数据包进入tun / tap接口,被加密,然后作为IP数据包发送到ppp接口,ppp接口将它们转换为串行信号,这些信号被发送到远程端,将它们转回IP数据包并转发到vpn目标它解密它们并通过它自己的专用网络路由它们.
如果删除tun / tap接口,则必须修改任何希望通过vpn进行通信的应用程序,以便对于任何网络通信,您需要拦截它们;加密他们;转发他们;收到回复并解密它们.通过使用tun / tap层,您允许内置IP路由采用未加密的数据包加密它们并转发它们 – 即您不需要修改任何与专用网络通信的应用程序.
几乎计算机科学中的每个问题都可以通过添加一层间接来解决.通过添加这些层,我们可以降低单个组件的复杂性,但可以构建功能强大的系统.如果我们没有ppp接口,每个程序都需要知道如何串行通话,如果我们没有tun / tap,每个程序都需要知道如何通话vpn以及需要知道如何通话串口.
删除tun / tap连接的唯一方法是,如果ppp连接是针对私有系统的.您将不得不使用类似于GSM数据的东西(9600位/秒,这是一个实际的电话),即使这样你也不会加密,而你正在通过蜂窝网络,这种情况会打败私人网络的全部意图.
以下是对各种隧道协议如何工作的粗略简化,但应足够详细地说明您应该能够理解为什么不能只交换一个隧道协议.
要理解为什么不同的vpn协议使用不同的接口来完成他们的工作,你必须了解它们的设计方式. TAP,L2TP和PPTP都是第2层协议的示例. TUN是第3层协议的示例.
为了理解这些差异,我将使用邮政类比.第2层(也称为链路层),相当于快递.你给他递了一封信,然后他把它交给收件人.快递员知道他所在地区的所有潜在目的地,他可以处理该地区的任何信息.
如果我们延伸这个类比,后箱也可以看作是有效的第2层端点.如果您想在全国范围内收到信件,请将它们放入邮箱.这与L2TP,PPTP和TAP包装其数据包以便通过网络传输类似.
第3层是信件上的地址 – 它可以用来将信件从邮局移到邮局,最后送到邮递员手中.这是被包裹的数据包通过网络路由的地方.
它返回到第2层,邮递员知道其交付区域内的目的地,并将信件交给预定的收件人.这是包装的数据包被解包然后由L2TP,PPTP或TAP端点处理的地方
对于TUN来说,它更容易一些.您的信件将直接发送到您当地的邮局,并集中送到您收集邮件的目的地邮局.可能有一些关于将信件发送到邮局,或从邮局到目的地地址的细节,但这实际上并不是协议的一部分.
然后是关于它们如何实现的尴尬细节. L2TP和PPTP都是用ppp定义的,这是一种用于在两个端点之间建立直接连接的完善机制,因此为了在这种系统中进行通信,源和目的地都需要说明这一点.点协议.隧道提供了一个虚拟层,这些ppp消息在这个虚拟层中传播(这个隧道是他们名字中的T).
TAP接口是根据以太网数据包的隧道定义的 – 这些数据包是您通过WiFi连接看到的数据包.它在两个网络之间建立了一个简单的桥接器,这些网络通过这些网络传输.以太网数据包通常包含IP数据包,允许您将它们直接放在目的地的线路上,而无需重新封装它们.
TUN接口是根据IP数据包的隧道定义的 – 这些数据包在转换之前是数据包,因此它们可以通过物理连接(如以太网/ WiFi)传输.这意味着您要在计算机和目标网络之间建立路由虚拟IP网络.具有由此接口提供的路由定义的目标的IP数据包将发送到该接口.
最终产品是其系统上可以发送IP数据包的另一个网络接口.此接口包装数据包(在PPTP / L2TP的ppp数据包中;在TAP的以太网数据包中;在TUN的另一个IP数据包内).在包装之前,或在包装之后或在两个点处(取决于协议)可能涉及加密.了解L2TP的程序将非常精通谈论PPP,但如果没有重大改写,将无法与其他协议进行对话.