网络隧道技术
隧道技术概要 隧道技术(Tunneling)是网络基础设置在网络之间传递数据的方式,使用隧道技术传递可以是不同协议的数据包,隧道协议将这些其他协议的数据包重新封装在新的包头中发送。被封装的数据包在隧道的两个端点之间通过网络进行路由,被封装数据包在网络上传递时所经历的逻辑路径称为隧道。 简单来说,隧道技术是一类网络协议,是将一个数据包封装在另一个数据包中进行传输的技术;**使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径。**通过网络隧道技术,可以使隧道两端的网络组成一个更大的内部网络。(把不支持的协议数据包打包成支持的协议数据包之后进行传输)。 隧道协议 要创建隧道,隧道的客户机和服务器双方必须使用相同的隧道技术,隧道协议有二层隧道协议与三层隧道协议两类。 二层隧道协议对应OSI模型中数据链路层,使用 帧 作为数据交换单位,PPTP、L2TP、L2F都属于二层隧道协议。是将数据封装在点对点协议的帧中通过互联网络发送。 三层隧道协议对应OSI模型中网络层,使用 包 作为数据交换单位,GRE、IPSec 都属于三层隧道协议。都是数据包封装在附加的IP包头中通过IP网络传送。 在例如VxLAN,工作在传输层和网络层之间。具体来说,将运行在用户数据报协议 (UDP) 和网络数据报协议 (IP) 之间,以便在网络中建立安全的通信通道。 网络隧道技术应用 隧道在Linux 中应用 IP隧道是指一种可在两网络间进行通信的通道。在该通道里,会先封装其他网络协议的数据包,之后再传输信息。 Linux原生共支持5种IPIP隧道: ipip: 普通的IPIP隧道,就是在报文的基础上再封装成一个IPv4报文 gre: 通用路由封装(Generic Routing Encapsulation),定义了在任意一种网络层协议上封装其他任意一种网络层协议的机制,所以对于IPv4和IPv6都适用 sit: sit模式主要用于IPv4报文封装IPv6报文,即IPv6 over IPv4 isatap: 站内自动隧道寻址协议(Intra-Site Automatic Tunnel Addressing Protocol),类似于sit也是用于IPv6的隧道封装 vti: 即虚拟隧道接口(Virtual Tunnel Interface),是一种IPsec隧道技术 像IPVS/LVS中的 Virtual Server via IP Tunneling,就是使用了IPIP隧道 SSH隧道技术 SSH提供了一个重要功能,称为转发 forwarding 或者称为隧道传输tunneling,它可以通过加密频道将明文流量导入隧道中,在创建SSH隧道时, SSH客户端要设置并转交一个特定本地端口号到远程机器上;一旦SSH隧道创建,用户可以连到指定的本地端口号以访问网络服务。本地端口号不用与远地端口号一样。 SSH隧道主要使用场景一般为 规避防火墙、加密网络流量 规避防火墙,SSH隧道可以使一个被防火墙阻挡的协议可被包在另一个没被防火墙阻挡的协议里,这技巧可用来逃避防火墙政策。而这种操作符合“数据包封装在另一个数据包中进行传输的技术”,故称为SSH隧道技术。 SSH隧道类型 在ssh连接的基础上,指定 ssh client 或 ssh server 的某个端口作为源地址,所有发至该端口的数据包都会透过ssh连接被转发出去;至于转发的目标地址,目标地址既可以指定,也可以不指定,如果指定了目标地址,称为定向转发,如果不指定目标地址则称为动态转发: 定向转发 定向转发把数据包转发到指定的目标地址。目标地址不限定是ssh client 或 ssh server,既可以是二者之一,也可以是二者以外的其他机器。...