公司的私网通常会有一些服务需要提供给公网的用户访问,但是由于网络部署时,服务器地址一般都会配置成私网地址,这样就不能实现公网的用户访问了。那么华为防火墙作为企业的出口网关时,是如何解决这个问题呢?
很多小伙伴会第一时间想到用NAT,没错,大致的方向正确了。只不过之前我们所使用的是源NAT,是对私网用户访问公网的报文源地址进行转换,而服务器对公网提供服务器时,是公网用户想私网发起访问,方向正好相反了。针对服务器的地址转换,我们赋予了它一个形象的名字――NAT Server(服务器映射)
1、华为防火墙接口配置IP地址,并把对应的接口加入到安全区域。
2、把服务器的私网地址映射成公网地址。
3、配置untrust区域允许访问dmz区域的安全策略
1、华为防火墙接口与安全域的配置
[FW1]interface GigabitEthernet 1/0/0
[FW1-GigabitEthernet1/0/0]ip address 10.1.1.1 24
[FW1]firewall zone dmz
[FW1-zone-dmz]add interface GigabitEthernet 1/0/0
[FW1]firewall zone untrust
[FW1-zone-untrust]add interface GigabitEthernet 1/0/1
[FW1]interface GigabitEthernet 1/0/1
[FW1-GigabitEthernet1/0/1]ip address 1.1.1.2 24
2、把服务器的私网地址映射成公网地址。
[FW1]nat server protocol tcp global 1.1.1.2 9980 inside 10.1.1.2 80
这里将80端口映射为9980端口而不是直接映射为80端口是因为,一些地区的运营商会阻断新增的80、8000、8080端口的业务,从而导致服务器无法访问。
3、配置untrust区域允许访问dmz区域的安全策略
security-policy
rule name untrust_to_dmz
source-zone untrust
destination-zone dmz
action permit
以上命令配置允许untrust区域的流量访问dmz区域。完成了以上配置之后,可以通过访问1.1.1.2的9980端口,从而访问到内网10.1.1.2的80端口。
上面的配置是比较简单的,下面来看看具体的流程吧。
当执行了nat server protocol tcp global 1.1.1.2 9980 inside 10.1.1.2 80这条命令后,Server-map会生成以下的映射关系。
上图就是NATServer的Server-map表项, 图中红框标注的字段就记录着服务器私网地址端口和公网地址端口的映射关系。[]内为服务器私网地址和端口、[]外为服务器公网地址和端口。我们将表项翻译成文字就是:任意客户端(any)向(->)1.1.1.2:9980发起访问时,报文的目的地址和端口都会被转换成10.1.1.2:80。具体的流程如下:
当客户端通过1.1.1.2:9980访问服务器时,防火墙收到报文的首包后,首先是查找并匹配到Server-map表项,将报文的目的地址和端口转换为10.1.1.2:80。然后根据目的地址判断出报文在哪两个安全区域间流动,报文通过域间安全策略检查后,防火墙会建立如下的会话表,并将报文转发到私网。
之后,服务器对客户端的请求做出响应。响应报文到达防火墙后匹配到上面的会话表,防火墙将报文的源地址和端口转换为1.1.1.2:9980,而后发送至公网。后续客户端继续发送给服务器的报文,防火墙都会直接根据会话表对其进行地址和端口转换,而不会再去查找Server-map表项了。
在防火墙的前后抓包,能很清楚地看到NAT Server的效果:
A、转换客户端发往服务器的报文的目的地址和端口。
防火墙处理前:
防火墙处理前
防火墙处理后:
防火墙处理后
B、转换服务器响应客户端的报文的源地址和端口。
防火墙处理前
防火墙处理前
防火墙处理后
防火墙处理后
以上就是防火墙NAT Server的基本配置和工作原理。更多精彩的内容请关注我的头条号,欢迎大家留言讨论。