软件信息网 软件工程 NAT、V*N、隧道技术

NAT、V*N、隧道技术

一、NAT介绍

私有IP地址

NAT技术

NAT存在的问题与NAPT的提出

二、V*N介绍

V*N使用技术

隧道技术

NAT和V*N的区分

一、NAT介绍

Network Address Translation,NAT,网络地址转换

 

私有IP地址

IPv4的地址危机,地址有限,所以划了一些私有地址/专用地址供机构内网使用,这些地址只能和机构内部主机通信,不能和公网上的其他主机通信。

 

NAT技术

虽然私有地址的提出解决了地址短缺问题,但是分配的私有地址并不能直接与公网IP进行通信,因此这时候就需要用到NAT技术,即将私有地址转换成公网IP地址,通过转换后的IP与其他公网IP进行通信。使用NAT技术需要在专用网连接到互联网的路由器上安装NAT软件,安装了NAT软件的路由器称为NAT路由器。

 

可以看到NAT技术打破了互联网的连通性,隐藏了专用网IP的真实地址。随着IPv6的推进,不再存在IP地址短缺的问题,NAT技术也将没有使用场景。

 

 

NAT存在的问题与NAPT的提出

NAT只能实现专用网主机向公网主机传送数据的单向通信,因为当公网主机向专用网主机发送数据包时,在数据达到NAT路由器时,不知道该将路由器接口的公网IP转换成哪个私有IP。简单的来说,私有IP到NAT路由器的公网IP是一个多对一的映射。

 

为了实现专用网主机和公网主机的双向通信,NAPT(Network Address and Port Translation)技术被提出。简单地来说,要实现公网主机到专用网主机的通信,需要建立公网IP到各个私有IP的映射。相比NAT,NAPT在建立映射关系的过程中加入了运输层端口(port)的概念,采用端口作为映射的标签,解决了NAT的问题。需要说明的是,NAT路由器转发出去的数据包的源端口是路由器生成的NAT端口,并不是内部主机发过来的内部端口(因为两台主机的端口可能一样),如果再有两台内部主机同时访问百度网站,NAT根据响应包的目的端口(注意这里是NAT端口),并查询地址转换表,即可将响应组装成内部IP数据报,并转发到正确的主机。

 

 

 

二、V*N介绍

Virtual Private Network, 虚拟专用网络

Virtual:虚拟的,在计算机网络的相关名词中,Virtual很常见,Virtual Local Network(VLAN),又如虚拟端口,在trunk link等中都有广泛应用。我个人理解的虚拟也即逻辑上的概念,并非物理存在,而是建立在物理连接上的虚拟、逻辑概念。因此,虚拟专用网络没有自己的物理专线,而是建立在已有公网上的逻辑概念上的网络。

Private:私人的,专用的,是为某些机构提供的仅供其内部通信使用的专用网络,这个词决定了该种网络需要具有保密性

通过对以上两个名词的解释,我想读者大概可以窥见该网络的形式和提出意义:虚拟专用网络,即利用公共网络(如 Internet)来构建的专用网络技术,保证了VPN中任何两台计算机之间的通信对外界是隐藏的。

 

V*N使用技术

上面提到了V*N有两大特点:

 

虚拟

专用、私密

这两大特点也决定了其所使用的技术:

 

隧道传输

加密技术

 

隧道技术

隧道技术将数据进行封装成新的包后传送出去,达到目的地之后再进行解包,利用隧道技术可以在公网上搭建一条逻辑路径,实现逻辑上直通的点对点链路。

隧道是由隧道协议建立的,常见的隧道协议分为二层协议和三层协议。第二层隧道协议是先把各种网络协议封装到PPP中,再把整个数据包装入其中。第三层隧道协议是把各种网络协议直接装入隧道协议中,形成的数据包依靠第三层协议进行传输。

 

除了构建虚拟专用网络,采用隧道技术还可以传输不同协议的数据帧或包。

 

以GRE为例,要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。

 

使用GRE还可以克服IGP协议的一些局限性。

 

例如,RIP路由协议是一种距离矢量路由协议,最大跳数为15。如果网络直径超过15,设备将无法通信。这种情况下,可以使用GRE技术在两个网络节点之间搭建隧道,隐藏它们之间的跳数,扩大网络的工作范围。

 

常见的隧道协议有:

IP in IP (Protocol 4): IP in IPv4/IPv6

SIT/IPv6 (Protocol 41): IPv6 in IPv4/IPv6

GRE (Protocol 47): Generic Routing Encapsulation (通用路由协议)

GRE仅进行封装,没有加密功能

https://blog.csdn.net/taozpwater/article/details/9774123?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-9774123-blog-124812126.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-9774123-blog-124812126.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1

OpenVN (UDP port 1194): Openvn

SSTP (TCP port 443): Secure Socket Tunneling Protocol

IPSec (Protocol 50 and 51):Internet Protocol Security

L2TP (Protocol 115): Layer 2 Tunneling Protocol

VXLAN (UDP port 4789): Virtual Extensible Local Area Network.

 

基于底层的PPP(点对点传输协议)来实现建立专属网络的功能。过程大概是这个样子的

 

vpn client利用PPTP在系统内建立一个虚拟网卡

计算机网络通讯客户端(例如:浏览器,微信什么的)借用系统接口将需要发送的数据封装成IP包,源地址为虚拟网卡地址。目标地址为期望访问的地址,比如说google.com。

虚拟网卡拿到IP包之后,PPTP驱动会按照PPP协议对IP包的完整内容包装到payload里面(这就是隧道技术)用一层新的IP头包裹,并将这个新包的目标地址设置为VPNServer。

VPNserver收到这个包之后将payload内容拿出来,并按照IP协议再解析一边,拿到原始的目标地址,代为发送到google.com

收到google的回复,server将数据封装到IP包里面,再按照PPP协议分装,添加新的IP头发送到原始的虚拟网卡。

虚拟网卡将数据交由客户端处理

 

MPLS 也类似一种隧道技术,LDP(标签分发协议)就是其对应的隧道协议。

 

NAT和V*N的区分

可以发现VPN协议和NAT协议都是通过重新构建一个IP首部来实现的,但他们的实现又有区别,VPN是将内部IP数据报加密后打包成外部IP数据报的数据部分,它的主要目的是为了数据的保密性,而NAT是纯进行地址转换,它的目的是为了解决本地编址的内部网络与外网通信的问题。

作者: 李铁牛

程序员李铁牛,华企网通程序员,APP,小程序,各类软件开发定制源码交付,欢迎交流,微信手机同号:15889726201
上一篇
下一篇
联系我们

联系我们

15889726201

在线咨询: QQ交谈

邮箱: 187395037@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部