来自 科技 2020-04-28 17:37 的文章

隧道技术(Tunnel)

由于在某些环境下,通过Internet连接的远程网络之间,双方需要直接使用对方私有IP地址来互访,但是私有IP地址又不能直接传递到Internet上进行路由的。在数据包封装为私有IP发送到Internet之后,由于Internet的路由器没有私有IP网段,所以最终数据包将全部被丢弃不能达到真正的目的地。


隧道技术(Tunnel)

比如上图中,上海分公司要访问北京分公司的R4路由器,如果通过将数据包目的 IP 封装 为:192.168.1.4,该数据包到达Internet后是会被丢弃的,因为Internet没有192.168.1.0 的路由,所以数据包也就不可能到达北京分公司的路由器;从图中我们不难发现, 除非数据包的目的 IP 为 200.1.1.1,才能到达北京分公司的路由器,否则别无它法, 所以上海公司发出去的数据包的目标 IP 只有封装为 200.1.1.1 才能到达北京分公司 的路由器 R3,既然如此,我们就思考着想办法将数据包原来的私有 IP 地址先隐藏 起来,在外部封装上公网 IP,等数据包通过公网 IP 被路由到该 IP 的路由器后,再由该路由器剥除数据包外层的公网 IP,从而发现数据包的私有 IP 后,再通过私有 IP 将数据包发到真正的目的地。可以肯定,完成数据包封装与解封装的路由器必须既 能与 Internet 直接通信,也能与私有网络通信。在上图中,上海分公司的 R2 要想直 接通过私有 IP 地址 192.168.1.4 与北京分公司的 R4 通信,在数据包的目标 IP 封装为 192.168.1.4 发到路由器 R1 之后,R1 就必须将整个数据包当成数据,然后在该数据 包的外层再次将北京分公司路由器 R3 的公网 IP 地址 200.1.1.1 写上,然后发到 Internet,Internet 根据数据包的公网 IP 地址 200.1.1.1 将数据包路由到 R3,然后 R3 将数据包的公网 IP 剥除后,看见私有 IP 地址 192.168.1.4,然后再根据该地址将数 据包发到 R4,最终实现了上海分公司通过私有 IP 地址 192.168.1.4 访问北京分公司 网络的功能。

上个例子中,通过在目标 IP 为私有 IP 的数据包外面封装公网 IP,从而实现远 程网络之间使用私有 IP 通信的技术,称为隧道技术,由此可见,在隧道中传递的数 据包至少包含着两个 IP 包头(两个 IP 地址),最外面的 IP 地址肯定是公网 IP,以用 作在 Internet 中路由该数据包,里面的 IP 应该是私有 IP,就是目标主机的真实 IP。 通过隧道连接的两个远程网络就如同直连,隧道达到的效果,就是网络直连的效果。 隧道就像一辆汽车,原本为私有 IP 的数据包就像是乘客,路途中只看汽车不看乘客, 只要汽车能去哪个地方,汽车里的乘客就可以被送到哪个地方,在行驶过程中,车 内的乘客不受干扰。被隧道再次封装公网 IP 的数据包协议称为乘客协议(Passenger protocol),不是所有类型协议的数据包能被隧道封装,所以对于隧道来说,乘客协 议(Passenger protocol)是有范围限制的,但本文只谈 IP 协议。隧道中传输的数据 包格式如下图:


隧道技术(Tunnel)

就隧道技术有多种实现方式,也就存在多种隧道协议,隧道可以实现远程网络 之间通过私有 IP 地址互访,隧道技术,就是 VPN 技术,要实现 VPN,就是 实现隧道, 不能实现隧道,就不叫 VPN。

隧道协议目前共有:

GRE(Generic Routing Encapsulation)IP Security (IPsec)Secure Sockets Layer/Transport Layer Security (SSL/TLS)VPN (WebVPN)Point-to-Point Tunneling Protocol (PPTP)Layer Two Tunneling Protocol (L2TP)