yanghan 2012-06-12
端口映射让外部用户同时访问内部多个应用
如下图所示,这是企业部署NAT服务器的典型案例。如果现在企业内部有两台服务器,分别为WEB服务器(192.168.0.3)与ERP服务器(192.168.0.2)。现在企业想让出差在外的员工,也可以通过互联网访问企业内部的这两个应用,该如何设计呢?
一、基于端口访问的一般原理。
在讲解NAT服务器的具体端口映射配置之前,笔者觉得读者有必要先了解一下基于端口访问的一般原理。这有利于读者了解下面的具体配置。下面笔者以员工访问WEB服务器为例,谈谈基于端口访问的基本步骤。假设现在某个用户需要访问WEB服务器,则客户端的浏览器(假设采用的端口为3000)与 WEB服务器(假设采用的端口为80)是如何来进行通信的呢?
第一步:发起连接请求。当用户需要查看公司网页时,用户所用的主机会像WEB服务器发送请求。在这个发起请求的过程中,会有一些参数传递。如在发送请求的过程中,用户所用的主机需要知道WEB服务器的IP地址、所采用的协议(HTTP)等。另外就是两个端口信息。一是用户浏览器所用的端口,即为3000。二是WEB服务器网站所用的端口(如果采用的是HTTP服务,则默认为80端口)。
第二步:WEB服务器转发请求。当服务器接受到这个请求后,会分析数据包。他经过分析包发现,这个请求是要求端口为80的应用软件来负责的。服务器确定了负责人之后,就会把这个请求转发给具体的负责人,即WEB应用服务器来处理。
第三步:服务器会把从WEB应用服务那边反馈回来的网页传送给用户所用的计算机。在传送的时候,其也会制定要把这个网页给你的那个3000端口(浏览器)对应的应用软件。
第四步:用户的计算机收到数据包之后,也会对这个数据包进行分析,来判断需要把这个数据包转发给哪个端口(应用服务)。分析后发现是转交给3000端口的,就会把这个数据包转发给浏览器。
二、基于端口映射的NAT服务器配置。
其实基于端口映射的NAT服务器其工作原理就跟上面这个基于端口访问的工作过程类似。只是这里的NAT服务器就相当于用户主机,而用户相当于内部的服务器。由于用户需要通过外网访问企业内部应用的话,通常情况下要求内网服务器也要求有合法的外网IP。只有私网IP地址的服务器是无法直接跟外部客户进行通信的。为此,如果没有端口映射的话,用户如果要同时访问内部的WEB服务器与ERP服务器,则就需要有两个公网IP地址。但是,大家都知道现在公网IP地址严重缺乏。在没有足够多的IP地址的情况下,该如何实现这种需求呢?那就知道通过端口映射来完成。
如上图所示,用户需要访问企业内部的WEB服务与ERP服务器,他只需要知道NAT服务地址与WEB服务器与ERP服务器所采用的端口即可。如果WEB服务器采用的端口为80,而ERP服务器所采用的端口为5050。而NAT服务器的IP地址假设为202.96.92.100的话,那么当用户访问WEB服务器时,只需要输入http://202.96.92.100即可。由于HTTP协议默认采用的是80端口,故这里不用配置端口号。如果WEB服务器中把这个端口改为了3000,则在访问的时候就需要使用http:// 202.96.92.100:3000(地址+端口号)的形式了。用户要访问内部的ERP服务器也是类似的,只要把NAT服务器的地址以及ERP服务器所采用的端口在客户端上进行配置即可。
可见通过NAT服务器的端口映射功能,可以让外部用户同时访问企业内部的WEB服务器与ERP服务器。那要实现这个需求具体该如何配置呢?
NAT服务器让内部的局域网用户可以连接到互联网,以便用户能够收发互联网邮件、浏览互联网上的网站等等。但是默认情况下外部用户是不能够访问内部的服务器。如果需要实现以上功能的话,就需要进行专门的配置。
如上图中,内部局域网计算机(192.168.0.2)为WEB服务器,其采用的端口为80。如果现在外部用户需要访问这个WEB服务器站点,则用户只知道这个WEB服务器的地址为202.96.92.100(NAT服务器的地址)。而WEB服务器默认采用的端口为80。当外部用户通过浏览器访问企业内部的WEB服务器时,他会在浏览器中输入http://202.96.92.100路经来连接网站。NAT服务器会将此请求发送给内部的计算机WEB服务器(192.168.0.2),并由WEB服务器将这个请求转发给端口为80的软件来负责。WEB服务器会将网页传送给NAT服务器,再由NAT服务器负责将网页传送给外部用户的计算机。如果用户要访问内部的 ERP服务器,其过程也是如此。那么现在的问题是,NAT服务器怎么判断要把用户HTTP请求发送给服务器(192.168.0.2)而不是发送给 (192.168.0.3)呢?
这主要是根据端口来判断的。也就是说在NAT服务器中有一个端口映射的规则,只要用户访问的目的端口是80,就把这个请求转发给WEB服务器; 若请求的端口是5050,则就把这个请求发送给ERP服务器。这就是端口映射的实质。了解这个内容之后,那么了解下面的配置也就简单多了。
打开路由和远程访问主控制窗口,选择要配置的服务器。然后选择IP路由选择、NAT/基本防火墙。并双击右方对外连接的网络接口(注意这里不要选择连接内网的网络接口),选择服务和端口标签。然后直接从服务列表中选取要对外开发的服务,如选择WEB服务器。在公用地址中选择在此接口,表示由互联网服务提供商指派的NAT服务器的公网IP地址。然后再设置,如果把这个服务请求转发给内部的IP地址为 192.168.0.2的WEB服务器。通过这个简单的配置,就实现基于端口的映射。
三、改善NAT服务器的性能与便利性。
可见这个端口映射配置是很简单的。但是其难点在于如何提高这个NAT服务器的性能,如何让用户使用的更加方便。这是网络管理员所需要考虑的。对此笔者有如下几个建议可供大家参考。
1、利用域名来代替IP地址。当用户访问企业内部的网站服务器时,如果让他们输入服务器的IP地址,对普通用户来说可能有点难度。要记住这 202.96.92.100十一个没有丝毫关系的数字有很大的难度。如果能够把这个IP地址转换为有实际意义的网址那就最好了。在企业内部,可以自己部属一个DNS服务器,把IP地址转换为网址。那么内部员工可以直接通过网址来访问WEB服务器。但是在互联网上,企业可不能自己随便定义域名。为了提高用户访问的便捷性,企业网络管理员最好能够像当地的域名注册机构,申请一个合适的域名并关联到自己的NAT服务器公网IP地址。那么以后外部用户访问内部 WEB服务器时,只需要输入像新浪那样的地址就可以了。而不用输入这些难以记忆的地址。
2、如果企业可以申请到多个IP地址的话,那么最好能够分开来部署。即企业可以申请两个ADSL帐号。其中一个专门用来连接内部的服务器;而另外一个用来内部员工跟互联网的通信。这么做主要是为了减轻NAT服务器的压力,提高其性能。如企业只有一个ADSL帐号的话,那么无论是外部用户访问企业内部服务器;还是企业内部员工访问互联网,其数据流都要通过这台NAT服务器来处理。为此,如果企业数据流量比较大或者NAT服务器配置不怎么理想的话,那么很可能这个NAT服务器就成为了企业网络访问的瓶颈资源。如果把他们分开,则可以减轻NAT服务器的压力,提高外部用户访问企业内部服务器的效率。
3、配置合适的ICMP数据包策略,以加强阻挡黑客利用ICMP的攻击行为。使用ICMP攻击的原理实际上就是通过Ping大量的数据包使得 NAT服务器的CPU使用率居高不下而崩溃。一般情况下黑客通常在一个时段内连续向计算机发出大量请求而导致CPU占用率太高而死机。而且会使用多台肉鸡同时向NAT服务器发送数据包。基于ICMP的攻击可以分为两大类,一是ICMP攻击导致拒绝服务;另外一个是基于重定向的路由欺骗技术。无论是哪一类攻击,都会给NAT服务器产生致命的影响。为此为了NAT服务器的安全,最好配置合适的ICMP包策略。如可以拒绝响应别人的ICMP请求。如此攻击者就无法对NAT服务器发起ICMP攻击了。