关于隧道的一点小知识

转载 2006年06月14日 12:11:00

隧道技术基础

 

  隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据桢或包。隧道协议将这些其它协议的数据桢或包重新封装在新的包头中发送。新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递。

  被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由。被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。一旦到达网络终点,数据将被解包并转发到最终目的地。注意隧道技术是指包括数据封装,传输和解包在内的全过程。

  隧道所使用的传输网络可以是任何类型的公共互联网络,本文主要以目前普遍使用Internet为例进行说明。此外,在企业网络同样可以创建隧道。隧道技术在经过一段时间的发展和完善之后,目前较为成熟的技术包括:

1.IP网络上的SNA隧道技术
  当系统网络结构(SystemNetworkArchitecture)的数据流通过企业IP网络传送时,SNA数据桢将被封装在UDP和IP协议包头中。

2.IP网络上的NovellNetWareIPX隧道技术
  当一个IPX数据包被发送到NetWare服务器或IPX路由器时,服务器或路由器用UDP和IP包头封装IPX数据包后通过IP网络发送。另一端的IP-TO-IPX路由器在去除UDP和IP包头之后,把数据包转发到IPX目的地。

  近几年不断出现了一些新的隧道技术,本文将主要介绍这些新技术。具体包括:

1.点对点隧道协议(PPTP)
  PPTP协议允许对IP,IPX或NetBEUI数据流进行加密,然后封装在IP包头中通过企业IP网络或公共互联网络发送。

2.第2层隧道协议(L2TP)
  L2TP协议允许对IP,IPX或NetBEUI数据流进行加密,然后通过支持点对点数据报传递的任意网络发送,如IP,X.25,桢中继或ATM。

3.安全IP(IPSec)隧道模式
  IPSec隧道模式允许对IP负载数据进行加密,然后封装在IP包头中通过企业IP网络或公共IP互联网络如Internet发送。

隧道协议

  为创建隧道,隧道的客户机和服务器双方必须使用相同的隧道协议。

  隧道技术可以分别以第2层或第3层隧道协议为基础。上述分层按照开放系统互联(OSI)的参考模型划分。第2层隧道协议对应OSI模型中的数据链路层,使用桢作为数据交换单位。PPTP,L2TP和L2F(第2层转发)都属于第2层隧道协议,都是将数据封装在点对点协议(PPP)桢中通过互联网络发送。第3层隧道协议对应OSI模型中的网络层,使用包作为数据交换单位。IP overIP以及IPSec隧道模式都属于第3层隧道协议,都是将IP包封装在附加的IP包头中通过IP网络传送。

隧道技术如何实现

 

  对于象PPTP和L2TP这样的第2层隧道协议,创建隧道的过程类似于在双方之间建立会话;
   隧道的两个端点必须同意创建隧道并协商隧道各种配置变量,如地址分配,加密或压缩等参数。
  绝大多数情况下,通过隧道传输的数据都使用基于数据报的协议发送。
    隧道维护协议被用来作为管理隧道的机制。

  第3层隧道技术通常假定所有配置问题已经通过手工过程完成。这些协议不对隧道进行维护。
    与第3层隧道协议不同,第2层隧道协议(PPTP和L2TP)必须包括对隧道的创建,维护和终止。

  隧道一旦建立,数据就可以通过隧道发送。
    隧道客户端和服务器使用隧道数据传输协议准备传输数据。例如,当隧道客户端向服务器端发送数据时,客户端首先给负载数据加上一个隧道数据传送协议包头,然后把封装的数据通过互联网络发送,并由互联网络将数据路由到隧道的服务器端。隧道服务器端收到数据包之后,去除隧道数据传输协议包头,然后将负载数据转发到目标网络。

隧道协议和基本隧道要求

  因为第2层隧道协议(PPTP和L2TP)以完善的PPP协议为基础,因此继承了一整套的特性。

1.用户验证
  第2层隧道协议继承了PPP协议的用户验证方式。许多第3层隧道技术都假定在创建隧道之前,隧道的两个端点相互之间已经了解或已经经过验证。一个例外情况是IPSec协议的ISAKMP协商提供了隧道端点之间进行的相互验证。

2.令牌卡(Tokencard)支持
  通过使用扩展验证协议(EAP),第2层隧道协议能够支持多种验证方法,包括一次性口令(one-timepassword),加密计算器(cryptographic calculator)和智能卡等。第3层隧道协议也支持使用类似的方法,例如,IPSec协议通过ISAKMP/Oakley协商确定公共密钥证书验证。

3.动态地址分配
  第2层隧道协议支持在网络控制协议(NCP)协商机制的基础上动态分配客户地址。第3层隧道协议通常假定隧道建立之前已经进行了地址分配。目前IPSec隧道模式下的地址分配方案仍在开发之中。

4.数据压缩
  第2层隧道协议支持基于PPP的数据压缩方式。例如,微软的PPTP和L2TP方案使用微软点对点加密协议(MPPE)。IETP正在开发应用于第3层隧道协议的类似数据压缩机制。

5.数据加密
  第2层隧道协议支持基于PPP的数据加密机制。微软的PPTP方案支持在RSA/RC4算法的基础上选择使用MPPE。第3层隧道协议可以使用类似方法,例如,IPSec通过ISAKMP/Oakley协商确定几种可选的数据加密方法。微软的L2TP协议使用IPSec加密保障隧道客户端和服务器之间数据流的安全。

6.密钥管理
  作为第2层协议的MPPE依靠验证用户时生成的密钥,定期对其更新。IPSec在ISAKMP交换过程中公开协商公用密钥,同样对其进行定期更新。

7.多协议支持
  第2层隧道协议支持多种负载数据协议,从而使隧道客户能够访问使用IP,IPX,或NetBEUI等多种协议企业网络。相反,第3层隧道协议,如IPSec隧道模式只能支持使用IP协议的目标网络。
、VPN与隧道技术


VPN(虚拟专用网)是指在公众数据网络上建立属于自己的私有数据网络。VPN具有两个方面的含义:首先它是“虚拟”的,不再使用长途专线建立私有数据网络,而是将其建立在分布广泛的公用网络,尤其是因特网上;其次它又是一个“专网”,每个VPN的用户都可以临时从公用网络中获得一部分资源供自己使用。VPN既可以让客户连接到公网所能够达到的任何地方,也可以容易地解决保密性、安全性、可管理性等问题,降低网络的使用成本。
VPN的具体实现是采用隧道技术,在公网中建立企业之间的链接,将用户的数据封装在隧道中进行传输。隧道技术与接入方式无关,它可以支持各种形式的接入,如拨号方式接入、CABLE Modem、xDSL以及ISDN、E1专线和无线接入等。一个隧道协议通常包括以下几个方面:
乘客协议——被封装的协议,如PPP、SLIP;
封装协议——隧道的建立、维持和断开,如L2TP、IPSec等;
承载协议——承载经过封装后的数据包的协议,如IP和ATM等。
目前因特网上较为常见的隧道协议大致有两类:第二层隧道协议PPTP、L2F、L2TP和第三层隧道协议GRE、IPSec。第二层和第三层隧道协议的区别主要在于用户数据在网络协议栈的第几层被封装。其中GRE和IPSec主要用于实现专线VPN业务,L2TP主要用于实现拨号VPN业务,也可用于实现专线VPN业务。本文的其余部分分别介绍这些隧道协议。


2、第二层隧道协议


第二层隧道协议可以支持多种路由协议,如IP、IPX和AppleTalk;也可以支持多种广域网技术,如帧中继、ATM、X.25或SDH/SONET;还可以支持任意局域网技术,如以太网、令牌环和FDDI等。
2.1PPTP
点到点隧道协议(PPTP)是由PPTP论坛开发的点到点的安全隧道协议,为使用电话上网的用户提供安全VPN业务,1996年成为IETF草案。PPTP是PPP协议的一种扩展,提供了在IP网上建立多协议的安全VPN的通信方式,远端用户能够通过任何支持PPTP的ISP访问企业的专用网络。PPTP提供PPTP客户机和PPTP服务器之间的保密通信。PPTP客户机是指运行该协议的PC机,PPTP服务器是指运行该协议的服务器。
通过PPTP,客户可以采用拨号方式接入公共的IP网。拨号客户首先按常规方式拨号到ISP的接入服务器(NAS),建立PPP连接;在此基础上,客户进行二次拨号建立到PPTP服务器的连接,该连接称为PPTP隧道,实质上是基于IP协议的另一个PPP连接,其中IP包可以封装多种协议数据,包括TCP/IP,IPX和NetBEUI。对于直接连接到IP网的客户则不需要第一次的PPP拨号连接,可以直接与PPTP服务器建立虚拟通路。
PPTP的最大优势是Microsoft公司的支持。NT4.0已经包括了PPTP客户机和服务器的功能,并且考虑了Windows95环境。另外一个优势是它支持流量控制,可保证客户机与服务器间不拥塞,改善通信性能,最大限度地减少包丢失和重发现象。PPTP把建立隧道的主动权交给了客户,但客户需要在其PC机上配置PPTP,这样做既会增加用户的工作量,又会造成网络的安全隐患。另外,PPTP仅工作于IP,不具有隧道终点的验证功能,需要依赖用户的验证。
2.2 L2F
L2F(Layer 2 Forwarding)是由Cisco公司提出的,可以在多种介质(如ATM、帧中继、IP)上建立多协议的安全VPN的通信方式。它将链路层的协议(如HDLC、PPP、ASYNC等)封装起来传送,因此网络的链路层完全独立于用户的链路层协议。1998年提交给IETF,成为RFC2341。
L2F远端用户能够通过任何拨号方式接入公共IP网络。首先,按常规方式拨号到ISP的接人服务器(NAS),建立PPP连接;NAS根据用户名等信息发起第二次连接,呼叫用户网络的服务器。这种方式下,隧道的配置和建立对用户是完全透明的。
L2F允许拨号服务器发送PPP帧,并通过WAN连接到L2F服务器。L2F服务器将包去封装后,把它们接入到企业自己的网络中。与PPTP和PPP所不同的是,L2F没有定义客户。
2.3 L2TP
L2TP协议由Cisco、Ascend、Microsoft、3Com和Bay等厂商共同制订,1999年8月公布了L2TP的标准RFC 2661。上述厂商现有的VPN设备已具有L2TP的互操作性。
L2TP结合了L2F和PPTP的优点,可以让用户从客户端或接人服务器端发起VPN连接。L2TP定义了利用公共网络设施封装传输链路层PPP帧的方法。目前用户拨号访问因特网时,必须使用IP协议,并且其动态得到的IP地址也是合法的。L2TP的好处就在于支持多种协议,用户可以保留原来的IPX、AppleTalk等协议或企业原有的IP地址,企业在原来非IP网上的投资不致于浪费。另外,L2TP还解决了多个PPP链路的捆绑问题。
L2TP主要由LAC(接入集中器)和LNS(L2TP网络服务器)构成。LAC支持客户端的L2TP,用于发起呼叫,接收呼叫和建立隧道。LNS是所有隧道的终点。在传统的PPP连接中,用户拨号连接的终点是LAC,L2TP使得PPP协议的终点延伸到LNS。在安全性考虑上,L2TP仅仅定义了控制包的加密传输方式,对传输中的数据并不加密。因此,L2TP并不能满足用户对安全性的需求。如果需要安全的VPN,则依然需要IPSec。


3 、第三层隧道协议


3.1 IPSec
利用隧道方式来实现VPN时,除了要充分考虑隧道的建立及其工作过程之外,另外一个重要的问题是隧道的安全。第二层隧道协议只能保证在隧道发生端及终止端进行认证及加密,而隧道在公网的传输过程中并不能完全保证安全。IPSec加密技术则是在隧道外面再封装,保证了隧道在传输过程中的安全性。
IPSec是一个第三层VPN协议标准,它支持信息通过IP公网的安全传输。IPSec系列标准从1995年问世以来得到了广泛的支持,IETF工作组中已制定的与IPSec相关的RFC文档有:RFC214、RFC2401-RFC2409、RFC 2451等。其中 RFC 2409介绍了互连网密钥交换(IKE)协议;RFC 2401介绍了IPSec协议;RFC2402介绍了验证包头(AH);RFC2406介绍了加密数据的报文安全封装(ESP)协议。IPSec兼容设备在OSI模型的第三层提供加密、验证、授权、管理,对于用户来说是透明
的,用户使用时与平常无任何区别。密钥交换、核对数字签名、加密等都在后台自动进行。另外,为了组建大型VPN,需要认证中心来进行身份认证和分发用户公共密钥。
IPSec可用两种方式对数据流进行加密:隧道方式和传输方式。隧道方式对整个IP包进行加密,使用一个新的IPSec包打包。这种隧道协议是在IP上进行的,因此不支持多协议。传输方式时IP包的地址部分不处理,仅对数据净荷进行加密。
IPSec支持的组网方式包括:主机之间、主机与网关、网关之间的组网。IPSec还支持对远程访问用户的支持。IPSec可以和L2TP、GRE等隧道协议一起使用,给用户提供更大的灵活性和可靠性。
IPSec的ESP协议和报文完整性协议认证的协议框架已趋成熟,IKE协议也已经增加了椭圆曲线密钥交换协议。由于IPSec必须在端系统的操作系统内核的IP层或网络节点设备的IP层实现,因此需要进一步完善IPSec的密钥管理协议。
3.2 GRE
通用路由协议封装(GRE)是由Cisco和Net-smiths等公司1994年提交给IETF的,标号为RFC1701和RFC1702。目前有多数厂商的网络设备均支持 GRE隧道协议。
GRE规定了如何用一种网络协议去封装另一种网络协议的方法。GRE的隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、IPX、AppleTalk包,并支持全部的路由协议(如RIP2、OSPF等)。通过GRE,用户可以利用公共IP网络连接IPX网络、AppleTalk网络,还可以使用保留地址进行网络互连,或者对公网隐藏企业网的IP地址。GER只提供了数据包的封装,并没有加密功能来防止网络侦听和攻击,所以在实际环境中经常与IPSec在一起使用,由IPSec提供用户数据的加密,从而给用户提供更好的安全性。

4、小结

IETF的其他一些工作组也在为VPN制定相关协议,其中的很多建议已形成草案。这些草案中涉及的协议有:MPLS、RADIUS、LDAP、VPMT等。

相关文章推荐

我在用PS过程中所学到的一点知识

  • 2012年10月08日 11:39
  • 1.08MB
  • 下载

一点小知识C++必读

  • 2008年07月22日 13:53
  • 88KB
  • 下载

为何计算机人应该懂一点编译知识?

为何计算机人应该懂一点编译知识?2009年冬,本科计算机《编译原理》课程结业考试结果公布,虽然取得了不错的考试成绩,可是自己除了熟练掌握了那些艰涩难懂的文法分析算法之外,对编译器的工作原理仍然貌似“一...

mos51的一点知识

  • 2009年09月06日 09:37
  • 16.5MB
  • 下载

Java中的线程的一点知识

Java 线程与进程

匿名函数的一点知识

  • 2012年03月29日 09:57
  • 2KB
  • 下载

普及一点电脑知识

  • 2012年11月13日 08:18
  • 31KB
  • 下载

一点关于static的知识

static 求助编辑百科名片 像在VB,C,C++,Java中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC...

c#一点基本的处理知识

  • 2008年11月28日 20:13
  • 110KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于隧道的一点小知识
举报原因:
原因补充:

(最多只允许输入30个字)