现在的计算机领域越来越依赖于各种类型的隧道技术。所有的远程接入VPN(虚拟专用网)都要用隧道,你还经常听到计算机狂人们在谈论SSH(安全Shell)隧道。利用隧道技术你可以完成许多令人惊讶的工作,所以请舒舒服服地坐好吧,愉快地享受这一期关于隧道技术及其用途的知识讲座。如果你想了解IP安全协议(IPSec)的具体情况,我们会在以后的基础知识讲座中阐述。
隧道技术的主要作用是让一种网络不支持的外来协议通过该网络。隧道协议可以让你利用诸如IP等协议通过IP数据包的“数据”部分发送另一种协议。大多数隧道协议作用在第4层,这就意味着这些协议可以用来代替TCP(传输控制协议)或UDP(用户数据报协议)等协议的功能。
VPN隧道技术允许远程客户通过隧道进入我们的网络,这一点证明了早前关于隧道被用于那些“不受支持协议”的观点,尽管该作用并不显而易见。如果我们要通过VPN才能实现打印机和文件共享,那可能是因为端口139和445(Windows的配对端口)已被关闭,实际上对于我们的边界路由器来说,这两个端口是不受支持的TCP端口。然而,如果在已知的VPN服务器上采用IPSec或PPTP(点对点隧道协议),那么一切就“都没问题”了。
被发往活动目录(Active Directory)服务器端口445的数据包将被隐藏为VPN数据包。当这些数据包到达VPN服务器时,服务器会对数据包进行解包(demux,即de-multiplex,也被称为disassemble),然后将其发送到内部网络上。当数据包到达内部网络时,其源地址现在就是VPN服务器的内部IP,这样内部网络做出的响应就能返回VPN服务器。除了这一点,数据包都会完全按照你的意图行事。VPN服务器一收到响应,就会给该数据包添加VPN头并封装起来,然后通过其外部接口把它发回给你。
关于VPN隧道要注意几个有意思的地方:一旦你的数据到达内部网络,它就已经被解密;而当这些数据通过Internet时,会有一些特别的“东西”被加入到数据包中。
有一点我们没有提及,但是也许很明显,那就是VPN协议在传送你的数据包之前会为其加密。对于理解隧道概念这无关紧要,不过却值得一提。注意这种加密并不是端对端,也就是说你和服务器之间的通信不是真正安全的。当然你自己和你的网络之间很安全,别人无法窥探,然而一旦数据包从VPN服务器出来,就会再一次被解密。
说到第二个有意思的地方,我们先来了解一下最基本的IP封装原理。从概念上来说,我们是把数据包嵌套,更确切地说, 外部的IP数据包的数据部分要包含一个完整的IP数据包。很妙,是不是?这样我们就解释了IPIP隧道的概念:IP被包含在IP数据包中。

图1