NAT篇 NAT Server 基础篇

学校或公司的私网通常会有一些服务器需要提供给公网用户访问。但网络部署时,服务器地址一般都会被配置成私网地址,这样服务器就不能直接使用自身的地址来提供服务了。那么,防火墙作为学校或企业的出口网关时,是如何应对这个问题的呢?

如果小伙伴们有读过强叔的源NAT篇,聪明的你一定会想到,防火墙是不是也可以将服务器的私网地址通过NAT转换成公网地址来提供服务呢?

Bingo!你的大方向已经对了。不过,源NAT是对私网用户访问公网的报文的源地址进行转换,而服务器对公网提供服务时,是公网用户向私网发起访问,方向正好反过来了。于是,NAT转换的目标也由报文的源地址变成了目的地址。针对服务器的地址转换,我们赋予了它一个形象的名字――NAT Server(服务器映射)。

下面来看下防火墙上的NAT Server是如何配置和实现的。

在防火墙上配置如下命令,就能将上图中服务器的私网地址10.1.1.2映射成公网地址1.1.1.1

[FW] nat server global 1.1.1.1 inside 10.1.1.2                                         

但是,如果一台服务器同时存在多种协议和端口的服务项,按照上述配置会将服务器上所有服务项都发布到公网,这无疑会带来很大的安全风险。华为防火墙支持配置指定协议的NAT Server,只将服务器上特定的服务项对公网发布,从而避免服务项全发布带来的风险。例如,我们可以按如下方式配置,将服务器上80端口的服务项映射为9980端口供公网用户访问。

[FW] nat server protocol tcp global 1.1.1.1 9980 inside 10.1.1.2 80                       

这里将80端口映射为9980端口而不是直接映射为80端口是因为,一些地区的运营商会阻断新增的8080008080端口的业务,从而导致服务器无法访问。

小伙伴们是否还记得《安全策略篇 ASPF:隐形通道》中提到的Server-map表,NAT server配置完成之后,也会生成Server-map表来保存映射关系。不过与ASPF Server-map表项的动态老化不同的是,NAT ServerServer-map表项是静态的,只有当NAT Server配置被删除时,对应的Server-map表项才会被删除。

上图就是NAT ServerServer-map表项。图中红框标注的字段就记录着服务器私网地址端口和公网地址端口的映射关系。[]内为服务器私网地址和端口、[]外为服务器公网地址和端口。我们将表项翻译成文字就是:任意客户端(any)向(->)1.1.1.1:9980发起访问时,报文的目的地址和端口都会被转换成10.1.1.2:80。具体的流程如下:

当客户端通过1.1.1.1:9980访问服务器时,防火墙收到报文的首包后,首先是查找并匹配到Server-map表项,将报文的目的地址和端口转换为10.1.1.2:80。然后根据目的地址判断出报文在哪两个安全区域间流动,报文通过域间安全策略检查后,防火墙会建立如下的会话表,并将报文转发到私网。

之后,服务器对客户端的请求做出响应。响应报文到达防火墙后匹配到上面的会话表,防火墙将报文的源地址和端口转换为1.1.1.1:9980,而后发送至公网。后续客户端继续发送给服务器的报文,防火墙都会直接根据会话表对其进行地址和端口转换,而不会再去查找Server-map表项了。

在防火墙的前后抓包,能很清楚地看到NAT Server的效果:

A、转换客户端发往服务器的报文的目的地址和端口。

B、转换服务器响应客户端的报文的源地址和端口。

以上就是防火墙NAT Server的基本配置和工作原理,通过强叔的讲解,小伙伴们想必已掌握其中的奥妙了吧。

但这些仅仅是NAT Server的基础知识,知道这些只能算是初窥门径。要想成为能从容应对现网中各种NAT Server配置的顶级高手,小伙伴们还需要研习并掌握强叔自创的NAT Server三十二字真言:

                      一正一反,出入自如  去反存正,自断出路

                      一分为二,源进源回  虚实变换,合二为一

接下来的两期中强叔将会向小伙伴们阐释这三十二字真言的内涵所在,敬请期待。

强叔提问:

本篇开头的组网中,强叔只给出了NAT Server的配置,那安全策略如何配置呢?


你可能感兴趣的:(server,NAT,基础篇,NAT篇)