4-9 虚拟专用网VPN与网络地址转换NAT

虚拟专用网VPN(Virtual Private Network)

VPN的基本工作原理

首先介绍虚拟专用网 VPN 的基本工作原理,来看这个例子,假设这是某机构部门A的局域网,这是该机构部门B的局域网,部门A的局域网位于北京,部门B的局域网位于上海。那么如何才能让这两个专用网络可以通信呢?

image-20230909205915246

一种方法是租用电信公司的通信线路,这种方法简单方便,但是租金很高。

另一种方法是利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的专用网又称为虚拟专用网。那么虚拟专用网中的各主机应该分配怎样的 IP 地址?由于 IPv4 地址的紧缺,一个机构能够申请到的 IPv4 地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专业网中的各主机所分配的地址应该是无需申请就可由本机构自由分配的专用地址,而不是需要申请的在因特网上使用的公有地址,我们可以在因特网数字分配机构IANA的官方网站查看 IPv4 地址空间中特殊地址的分配方案,如下图所示。

image-20230909210158356

image-20230909210426760

分类编址类型 专用(私有)地址 地址块
A 10.0.0.0~10.255.255.255 10/8地址块
B 172.16.0.0~172.31.255.255 172.16/12地址块
C 192.168.0.0~192.168.255.255 192.168/16地址块

这三个地址块中的地址就是无需申请的可自由分配的专用地址,或称私有地址。我们给部门A的专用网分配的私有地址的网络号为10.1.0.0给部门B的专用网分配的私有地址的网络号10.2.0.0,两个专用网中各主机所分配的私有地址如图所示。

image-20230909210331827

需要注意的是,私有地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。换句话说,私有地址只能用作本地地址,而不能用作全球地址。

在因特网中的所有路由器对目的地址是私有地址的 IP 数据报,一律不进行转发。很显然,部门A和B各自至少需要一个路由器具有合法的全球IP地址,这样他们各自的专用网才能利用公有的因特网进行通信,这里我们取路由器R1的全球IP地址为125.1.2.3,路由器R2的全球IP地址为194.4.5.6。

image-20230909211047961

假设部门A中的这台主机10.1.0.3要给部门B中的另一台主机10.2.0.3发送数据,他会将待发送数据封装成内部 IP 数据报发送给路由器R1,其首部中源地址字段的值为部门A中该主机的IP地址,目的地址字段的值为部门B中另一台主机的 IP 地址。R1收到该数据报后,发现其目的网络必须通过因特网才能到达,就将该内部 IP 数据报进行加密,这样就确保了内部 IP 数据报的安全。然后重新添加上数据报的首部封装成为在因特网上发送的外部数据报,其首部中原地址字段的值为路由器 R1 的全球地址,目的地址字段的值为路由器 R2 的全球地址。

image-20230909203526083

路由器 R2 收到该外部 IP数据报后,去掉其手部,将其数据部分进行解密,恢复出原来的内部 IP 数据报,这样就可以从其首部提取出原地址和目的地址,根据目的地址将该内部 IP 数据报发送给相应的主机。

很显然,两个专用网内的主机间发送的数据报是通过了公用的因特网,但在效果上就好像是在本机构的专用网上传送一样。数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看, R1 和 R2 之间好像是一条直通的点对点链路,因此也被称为 IP 隧道技术。

image-20230909211426445

本例属于同一机构内不同部门的内部网络所构成的虚拟专用网,这又称为内联网VPN。

有时一个机构的虚拟专用网需要某些外部机构(通常就是合作伙伴)参加进来,这样的虚拟专用网又称为外联网VPN。在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工 PC 中的 VPN 软件,在员工的 PC 和公司的主机之间建立 VPN 隧道,即可访问专用网络中的资源。这种虚拟专用网又称为远程接入VPN。

网络地址转换NAT(Network Address Translation)

NAT网络地址转换的基本原理

虽然因特网采用了无分类编制方式来减缓 IP地址空间耗尽的速度,但是由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加, IPv4 地址空间即将面临耗尽的危险,仍然没有被解除。

1994 年提出了一种网络地址转换的方法,再次缓解了 IPv4 地址空间即将耗尽的问题。

NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。我们来举例说明。

image-20230909211758272

图中的专用网络使用私有网络号192.168.0.0,该网络中各主机的私有地址如图所示。那么,使用私有地址的主机如何才能与因特网上使用全球 ip 地址的主机进行通信?

这需要在专用网络连接到因特网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址,这样,所有使用私有地址的主机在和外界通信时都要在NAT路由器上将其私有地址转换成全球IP地址。

距离说明NAT

假设使用私有地址的该主机要给因特网上使用全球 ip 地址的另一台主机发送 IP 数据报。

image-20230909211931234

该主机将数据报发送给NAT路由器,数据报首部中源地址字段的值为该主机的私有地址,目的地址字段的值为因特网上另一台主机的全球地址。NAT路由器从自己的全球IP地址池中为该主机分配一个临时的全球IP地址172.38.1.5,并将 IP 数据报的源地址修改为该地址,然后将私有地址与全球地址的对应关系记录在NAT转换表中,之后就可以转发该 IP 数据报了。

image-20230909212143809

请注意,此时该 IP 数据报中的原地址和目的地址都是全球IP地址,如图所示。

因特网上的这台主机给原主机发回数据报,数据报的源地址和目的地址都是全球IP地址,如图所示。

image-20230909212233316

NAT路由器收到该 IP 数据报后,在NAT转换表中进行查找,发现该数据报的目的地址所对应的私有地址为192.168.0.2,于是就将该数据报的目的地址修改为192.168.0.2,并将其发送给相应的主机。

image-20230909212328102

请注意,此时该 IP 数据包中的原地址为因特网上那台主机的全球 ip 地址,而目的地址为专用网络中这台主机的私有地址,如图所示。

当专用网中的这两台使用私有地址的主机都要给因特网上使用全球地址的另一台主机发送数据报时,在。 NAT路由器的NAT转换表中就会产生两条记录,分别记录两个私有地址与两个全球地址的对应关系。

image-20230909212542419

NAPT

这种基本转换方法存在这样一个问题,如果 NAT路由器具有N个全球IP地址,那么至多只能有 N个内网主机能够同时和因特网上的主机通信。由于绝大多数的网络应用都是使用运输层协议 TCP 或 UDP 来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT(Network Address and Port Translation)。

如图所示,这是本例中的NAPT路由器,这是它的全球 ip 地址,这是它的NAPT转换表中的部分内容。实际上,现在很多家用路由器都是这种NAPT路由器。

image-20230909212800434

请大家思考这样一个问题,内网主机与外网主机间的通信是否能由外网主机首先发起?答案是否定的。如果由外网主机首先发起,那么当NAPT路由器收到来自外网的 IP 数据报后,在NAPT转换表中找不到相应的记录,也就无法把数据报转发给内网中的主机。因此,使用私有地址的主机不能直接充当因特网服务器。

image-20230909212956180

对于一些点对点网络应用,需要外网主机主动与内网主机进行通信。在通过NAT时也会遇到问题,需要网络应用自己使用一些特殊的NAT专业技术来解决问题。另外,由于NAT对外网屏蔽了内网主机的网络地址,因此能为内网主机提供一定的安全防护。

还记得我们在上节课中介绍的 SMP 协议的典型应用tracert吗?

image-20230909213137245

可以看到其中有两个路由器使用了相同的IP 地址,这很可能是内网出外网的路由器使用了NAT并且内网中还有一个使用私有 ip 地址的路由器。

本节小结

image-20230909213504754

站内搜索

没有找到内容!