网络地址转换NAT与端口地址转换PAT

网络地址转换NAT与端口地址转换PAT

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

1.1.网络地址转换简介

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

1.2.网络地址转换的过程

  • 内部主机 X 用本地地址 IPX 和因特网上主机 Y 通信所发送的数据报必须经过 NAT 路由器。
  • NAT 路由器将数据报的源地址 IPX 转换成全球地址 IPG,但目的地址 IPY 保持不变,然后发送到因特网。
  • NAT 路由器收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG
  • 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPX,转发给最终的内部主机 X。

举例

如图:

image-20200211223723347

如图,当位于内网10网段的用户A想要访问Internet上的网站时,数据包可以出去,但是数据包返回时目标地址为内网地址,Internet中的路由器无法中转,所以内网的用户A无法访问Interner,并且可能存在多个相同的内网10网段。

那么我们平时是如何顺利访问Internet的呢?

  • 连接内网的路由器至少有一个公网地址,如图中路由器X的公网地址111.24.0.1。用户A访问Internet上的网站时,数据包在内网传输时源地址为10.12.4.2目标地址为168.12.4.202,当数据包传输到路由器X处时,路由器将数据包的源地址改为了公网地址111.24.0.1 。
  • 这样数据包的目标地址和源地址都是公网地址能去能回,当目标地址为111.24.0.1的返回数据包到达路由器X时,路由器再将数据包的目标地址改为10.12.4.2,最后转发给用户A。由此用户A能够顺利访问Intenet。
  • 也就是说,连接内网与外网的路由器上的一个公网地址可以代表整个内网用户。比如一公网地址代表某学院内网的全部用户,该学院有人在网上干了坏事,根据公网IP地址查到的源头就是整个学院,学院内网里的全部用户都是嫌疑人。

1.3.注意

严格意义上的NAT不会进行端口地址转换,因此并不节省公网IP地址。而通过端口地址转换PAT,能够节省公网IP地址。

image-20200212153156313

如图,内网中有5位用户,但是只在路由器上配置了3个公网IP地址,那么只有先访问公网的3位用户能够替换到公网地址。由于没有公网地址替换,剩下的2位用户无法访问公网。

即:使用NAT内网的用户可以主动访问公网,但是公网用户不能主动访问内网。利用此特点有以下应用(包含NAT和PAT):

应用举例

场景一:

某公司有这样的需求,由于技术部有不能泄露的机密资料,现要求:技术部可以访问市场部网段,但市场部不能访问技术部网段,两个网段网管都可以访问。

image-20200212170711364

解决方法为:

  • 在网管的计算机上安装两个网卡A和B,网卡A连接及技术部网段,网卡B连接市场部网段。当技术部的用户访问市场部时先经过网管的计算机,使用网卡B地址做替换。这样一来,在市场部用户看来,来访的只是网管的计算机,而实际上是技术部的用户来访。

  • 计算机间能够通信要求数据包有去有回,当技术部的用户向市场部发出的数据包经网管计算机的网卡B地址替换发向市场部后,网管的计算机上会留下这样的记录:哪个端口对应着技术部的哪个用户。当市场部的数据包返回时,网管的计算机就会按照之前保留的对应关系把数据包转给技术部的对应用户。由此实现数据包的有去有回。

  • 另一方面,当市场部用户想要主动访问技术部时,由于网管计算机上没有相关的端口对应关系(端口映射),所以无法将数据包中转给技术部用户。可以这样想:网管相当于小区保安,小区的住户相当于技术部用户发出的数据包。由于保安处有每位住户对应的门牌信息,所以住户可以自由出入。但是,小区外的人保安不认识,所以不让进。

由此实现了:技术部能主动访问市场部,而市场部不能主动访问技术部。

场景二:

学校网管分配给教师一个IP地址,满足教师上课时的上网需求。如果学生也要上网那该怎么办呢?

image-20200212173221802

解决方案为:在教师计算机上配置NAT和PAT,学生上网经过教师的计算机进行地址和端口转换。在网管看来只有教师在上网,其实教师和学生都在上网。


二、端口地址转换 PAT

2.1.简介

当我们上网打开网页的时候,可以在命令行窗口通过以下命令查看建立的会话:

netstat -n

image-20200212144705158

如图所示,红色框内为建立的TCP连接的源地址及其使用的端口,蓝色框为TCP连接的目标地址和端口。可以看到建立的每一个连接中源地址使用的端口都是不同的。

那么内网用户访问Internet是会不会出现以下情况呢?

image-20200212150634707

如图,内网用户1和2访问公网网站时使用路由器的公网地址111.10.0.1替换,数据包可以顺利发出去,等到数据包返回时,源地址和端口为168.20.1.202:80,目标地址和端口为111.10.0.1:1234。但是,内网用户1和2可能都使用了1234端口,数据包可能是用户1发出的,也有可能是用户2发出的,此时路由器就不知道要把返回数据包转发给谁了。

解决该问题的方法为,当内网用户访问公网时,不仅要进行地址替换(NAT)也要进行端口替换(PAT),如下图所示:

image-20200212151324119

如图,用户1或2访问公网网站时,无论源地址和端口是什么都统一替换为路由器分配的地址和端口。即用户1使用地址:111.10.0.1,端口:4000;用户2使用地址:111.10.0.1,端口:4001;

这样,如果返回的数据包目标端口为4000,那么路由器就知道要转给用户1;目标端口为4001,路由器就转给用户2;即使用户1和2原来使用的端口号一样路由器也知道该把数据包转给谁。

也就是说:端口地址转换就是由路由器为内网用户统一分配端口。

2.2.端口地址转换的好处

能够大量节省公网IP地址。只需要一个公网IP地址就可以供整个内网的用户使用,内网中配置了公网地址的路由器负责给内网的所有用户统一分配端口,这样便能区分不同的内网用户。

2.3.NAT的端口映射

什么是端口映射?

image-20200212210430043

如图,内网中有个地址为10.0.2.1的Web站点服务器,它的80端口提供Web服务,内网路由器上的公网地址为111.0.2.1,能让外网用户也能访问内网Web站点服务器的技术就是端口映射。

端口映射的作用

image-20200212211110023

可以配置内网路由器公网地址的80端口映射内网Web站点服务器的80端口,当公网用户A访问路由器公网地址的80端口服务时,路由器自动映射到内网的Web站点服务器的80端口上,这样公网用户就能访问内网Web站点服务器80端口提供的Web服务了。

如果,公网用户A想要通过远程桌面管理内网的计算机B和C,那么用户A就需要访问计算机B和C的3389端口(远程桌面使用3389端口)。但是内网路由器只有一个3389端口,只能映射一台计算机的3389端口,那该怎么办呢?其实并不要求内网路由器上的端口与所映射端口相同,只要不重复即可。即可以使用内网路由器的4000端口映射计算机B的3389端口,使用内网路由器的4001端口映射计算机C的3389端口。由此,用户A可以通过远程桌面管理内网的计算机B和C了。

解决公网访问私网的问题,使用端口映射是一种解决方案,前面讲到的VPN技术同样是一种可行的解决方案。

posted @ 2020-02-19 16:48  AhuntSun  阅读(2874)  评论(0编辑  收藏  举报