4.9 虚拟专用网VPN与网络地址转换NAT
# 4.9 虚拟专用网VPN与网络地址转换NAT
本节课我们介绍虚拟专用网VPN(Virtual Private Network)和网络地址转换NAT的基本工作原理。
首先介绍虚拟专用网VPN的基本工作原理,来看这个例子,假设这是某机构部门A的局域网,这是该机构部门B的局域网,部门A的局域网位于北京,部门B的局域网位于上海,那么如何才能让这两个专用网络可以通信,一种方法是租用电信公司的通信线路,这种方法简单方便,但是租金很高。
另一种方法是利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的专用网要称为虚拟专用网。那么虚拟专用网中的各主机应该分配怎样的IP地址?由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此虚拟专用网中的各主机所分配的地址应该是无需申请,就可由本机构自由分配的专用地址,而不是需要申请的在因特网上使用的公有地址,我们可以在因特网数字分配机构IA NA的官方网站,查看IPVC地址空间中特殊地址的分配方案,这三个地址块中的地址,就是无需申请的可自由分配的专用地址或称私有地址。
我们给部门A的专用网分配的私有地址的网络号为10.1.0.0,给部门B的专用网分配的私有地址的网络号为10.2.0.0。两个专用网装各主机所分配的私有地址如图所示,需要注意的是私有地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
换句话说,私有地址只能用作本地地址,而不能用作全球地址。在因特网中的所有路由器,对目的地址是私有地址的IP数据报,一律不进行转发。很显然部门A和B各自至少需要一个路由器,具有合法的全球IP地址,这样他们各自的专用网才能利用公有的因特网进行通信。
假设部门A中的这台主机要给部门B中的另一台主机发送数据,它会将待发送数据封中成内部IP数据报,发送给路由器R1,其首部中源地址字段的值为部门A中该主机的IP地址,目的地址字段的值为部门B中另一台主机的IP地址。R1收到该数据报后,发现其目的网络必须通过因特网才能到达,就将该内部IP数据报进行加密,这样就确保了内部IP数据报的安全,然后重新添加上数据报的首部封中成为在因特网上发送的外部数据报,且首部中源地址字段的值为路由器R1的全球地址,目的地址字段的值为路由器R2的全球地址。
路由器R2收到该外部IP数据报后,去掉其首部,将其数据部分进行解密,恢复出源来的内部IP数据报,这样就可以从其首部提取出源地址和目的地址,根据目的地址将该内部IP数据报发送给相应的主机。很显然两个专用网内的主机间发送的数据报是通过了公用的因特网,但在效果上好像是在本机构的专用网上传送一样,
数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术。本地属于同一机构内不同部门的内部网络所构成的虚拟专用网,这就称为内联网VPN。有时一个机构的虚拟专用网需要某些外部机构参加进来,这样的虚拟专用网又称为外联网VPN。在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源,这种虚拟专用网又称为远程接入VPN。
相信很多同学寒暑假在家中要远程访问校园网内的某些资源时,就要使用过远程接入VPN这种技术。
接下来我们介绍网络地址转换NATNetwork Address Translation)的基本工作源理。虽然因特网采用了无分类编制方式,来减缓IP地址空间耗尽的速度,但是由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险,仍然没有被解除。
1994年提出了一种网络地址转换的方法,再次缓解了IPv4地址空间即将耗尽的问题。NAT能使大量使用内部专用地址的专用网络用户,共享少量外部全球地址来访问因特网上的主机和资源。
我们来举例说明,图中的专用网络使用私有网络号192.168.0.0,该网络中各主机的私有地址如图所示,那么使用私有地址的主机如何才能与因特网上使用全球IP地址的主机进行通信呢?
这需要在专用网络连接到因特网的路由器上,安装NAT软件,装有NAT软件的路由器,叫做NAT路由器,它至少有一个有效的外部全球IP地址,这样所有使用私有地址的主机在和外界通信时都要在NAT路由器上将其私有地址转换成全球IP地址。我们来举例说明,假设使用私有地址的该主机要给因特网上使用全球IP地址的另一台主机发送IP数据报,该主机将数据报发送给NAT路由器,数据报首部中源地址字段的值为该主机的私有地址,目的地址字段的值为因特网上另一台主机的全球地址。NAT路由器从自己的全球IP地址池中为该主机分配一个临时的全球IP地址,172.38.1.5,并将IP数据报的源地址修改为该地址,
然后将私有地址与全球地址的对应关系记录在NAT转换表中,之后就可以转发该IP数据报了。请注意此时该IP数据报中的源地址和目的地址都是全球IP地址,如图所示
因特网上的这台主机给源主机发回数据报,数据报的源地址和目的地址都是全球IP地址,如图所示。NAT路由器收到该IP数据报后,在NAT转换表中进行查找,发现该数据报的目的地址所对应的私有地址为192.168.0.2,于是就将该数据报的目的地址修改为192.168.0.2,并将其发送给相应的主机。请注意此时该IP数据包中的源地址为因特网上那台主机的全球IP地址,而目的地址为专用网络中这台主机的私有地址如图所示。
当专用网中的这两台使用私有地址的主机,都要给因特网上使用全球地址的另一台主机。发送数据报时,在NAT路由器的NAT转换表中就会产生两条记录,分别记录两个私有地址与两个全球地址的对应关系,这种基本转换方法存在这样一个问题。如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机,能够同时和因特网上的主机通信,由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换,这样用一个全球IP地址就可以使多个拥有本地地址的主机,同时和因特网上的主机进行通信,这种将端口号和IP地址一起进行转换的技术,叫做网络地址与端口号转换。
NAPT如图所示,这是本例中的NAPT路由器,这是它的全球IP地址,这是它的NAPT转换表中的部分内容。
实际上现在很多家用路由器都是这种NAPT路由器,由于端口号的概念属于运输层,而我们的课程还没有进行到运输层,因此对该转换表中的内容不再解释。等我们学习了运输层的端口号概念后,相信大家很容易看懂该转换表的内容,请大家思考这样一个问题。内网主机与外网主机间的通信是否能由外网主机首先发起?答案是否定的,如果由外网主机首先发起,那么当NAPT路由器收到来自外网的IP数据报后,在NAPT转换表中找不到相应的记录,也就无法把数据报转发给内网中的主机,因此需要私有地址的主机不能直接充当因特网服务器。对于一些点对点网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时也会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。另外由于NAT对外网屏蔽了内网主机的网络地址,因此能为内网主机提供一定的安全防护。还记得我们在上节课中介绍的ICMP协议的典型应用Tracert吗?可以看到其中有两个路由器使用了相同的IP地址,这很可能是内网出外网的路由器使用了NAT,并且内网中还有一个使用私有IP地址的路由器,
小结