学习防火墙之前,对路由交换应要有一定的认识
- 双向NAT
-
- 1.1.基本原理
- [1.2.NAT Inbound + NAT Server](#1.2.NAT Inbound + NAT Server)
- [1.3.域内NAT+NAT Server](#1.3.域内NAT+NAT Server)
双向NAT
经过前面介绍,已经对源NAT和NAT Server有了相当的了解。NAT功能就像一个武林高手,可内可外,游刃有余,那么这一内一外能否配合使用呢?
如果需要同时改变报文的源地址和目的地址,就可以配置源NAT+NAT Server,我们称之为双向NAT。
双向NAT不是一个单独的功能,而是源NAT和NAT Server的组合,这里组合的含义是针对同一条流,在其经过防火墙时同时转换报文的源地址和目的地址。
千万不能理解为防火墙上同时配置了源NAT和NAT Server就是双向NAT了,这是不对的,因为源NAT和NAT Server可能是为不同流配置的。
1.1.基本原理
之前介绍源NAT时,为了便于理解,都是按照私网用户访问Internet的思路进行组网验证的。实际上,源NAT还可以根据报文在防火墙上的流动方向进行分类,包括域间NAT和域内NAT。
域间NAT
报文在两个不同的安全区域之间流动时对报文进行NAT转换,根据流动方向的不同,可以分为两类。
1、NAT Inbound
报文由低级别的区域向高级别区域方向流动时,对报文进行转换,一般这种情况是公网用户访问内部网络,不太常见。
2、NAT Outbound
报文由高级别的区域向低级别区域方向流动时,对报文进行转换,前面介绍的私网用户访问Internet场景使用的NAT都是Outbound。
域内NAT
报文在同一个安全区域之内流动时对报文进行NAT转换,一般来说,域内NAT都会和NAT Server配合使用,单独配置域内NAT的情况比较少见。
当域间NAT、域内NAT和NAT Server配合使用时,就实现了双向NAT。上述实现的前提是:合理设置安全区域安全级别,内网网络属于Trust高安全级别,私网服务器属于DMZ中安全级别,Internet属于Untrust低安全级别。
双向NAT从技术和实现原理来说并无特别之处,但是应用场景很有特色。究竟是什么时候需要配置双向NAT?有什么好处?不配置双向NAT行不行?
1.2.NAT Inbound + NAT Server
最常见的一个场景:公网用户访问私网服务器,这个场景也是NAT Server的典型场景。但是下面要讲的是如何在这个场景中应用双向NAT,以及这么做的好处。
接下来进行配置,NAT Server和源NAT。
javascript
配置NAT Server
nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80
NAT Server配置完会生成静态带正向-反向,Server-map表。
javascript
配置源NAT
nat address-group GW
section 192.168.100.200 192.168.100.200
nat-policy
rule name SNAT
source-zone untrust
destination-zone trust
destination-address 192.168.100.1 mask 255.255.255.255
action source-nat address-group GW
在配置源NAT策略时,destination-address:由于先进行NAT Server转换,再进行源NAT转换,所以此处的目的地址是NAT Server转换后的地址,即服务器的私网地址。
配置完成后,公网用户访问私网服务器,在防火墙上查看会话表,可以清楚的看到报文的源IP地址和目的IP地址都进行了转换。
在来看看转发过程:
1、公网用户访问私网服务器的报文到达防火墙时,目的地址210.1.1.1经过NAT Server (nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80)转换为私网地址192.168.100.1,然后源地址210.1.1.2,经过NAT Inbount(nat address-group GW)也转换为192.168.100.200私网地址,且和私网服务器属于同一网段。这样报文的源地址和目的地址就同时进行了转换,即完成了双向NAT。
简化来说:防火墙收到报文后,从NAT Server选择私网地址替换报文的目的地址。即192.168.100.1。判断安全策略,通过后从源NAT地址池选择一个私网IP替换报文源IP,即192.168.100.200。
2、当私网服务器的回应报文经过防火墙时,再次进行双向NAT地址转换,报文的源地址和目的地址均转换为公网地址。
简化来说:收到Web服务器报文后,会查找会话表之前建立的项,将报文源地址和目的地址替换成原先的地址,将源和目的端口替换为原始的端口号,发送至Internet。
防火墙G1/0/1,用户请求服务器,源IP:210.1.1.1使用随机端口49207,目的IP:210.1.1.1,端口9980。
防火墙G1/0/0,防火墙收到用户请求服务器的报文,转换后的源IP:192.168.10.200,端口:2055。目的IP:192.168.100.1,端口80。
回去的报文,源地址:192.168.100.1,端口80。目的IP:192.168.10.200,端口2055。
转换后的源IP:210.1.1.1,端口9980。目的IP:210.1.1.2,随机端口
到这里有点疑问,前面说过,只配置NAT Server不配置NAT Inbound,也不会影响公网用户访问私网服务器。答案是肯定不会影响,但是配置了有它本身的好处。秘密就在于私网服务器对回应报文的处理方式上。
把NAT地址池中的地址配置成和私网服务器在同一网段,当私网服务器回应公网用户的访问请求时,发现自己的地址和目的地址在同一网段,此时私网服务器就不会去查找路由,而是发送ARP广播报文询问目的地址对应的MAC。防火墙会及时挺身而出,将连接私网服务器接口的MAC地址发给私网服务器,告诉死亡服务器:把回应报文发送给我。所以私网服务器将回应报文发送至防火墙,防火墙再对其进行后续处理。
既然私网服务器上省去了查找路由环节,那就不用设置网关了,这就是配置双向NAT的好处。这里配置的源NAT,虽然叫源NAT,考虑的时候是反着来的。
安全策略配置
javascript
security-policy
rule name SNAT
source-zone untrust
destination-zone trust
destination-address 192.168.100.1 mask 255.255.255.255
action permit
配置路由黑洞
javascript
ip route-static 192.168.100.1 32 NULL0
1.3.域内NAT+NAT Server
域内NAT+NAT Server的场景,管理员在规划网络时偷懒,将私网用户和私网服务器规划到同一网络,并将二者置于同一安全区域。
如图上图:私网用户User访问服务器的报文,到达防火墙后,防火墙进行目的地址转换,私网服务器回应报文时发现目的地址和自己的地址在同一网段,回应报文经交换机直接转发到私网用户,不会经过防火墙转发。
如果希望提高内部网络安全性,使私网服务器的回应报文也经过防火墙处理,就需要配置域内NAT,将私网用户访问私网服务器的报文的源地址进行转换。转换后源地址可以是公网地址也可以是私网地址,只要不和私网服务器在同一网段即可。这样私网服务器的回应报文就会被发送到防火墙。
配置NAT SERVER
javascript
nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 www
配置域内NAT,几乎和域间NAT一样,只不过前者在域内进行NAT转换,后者在域间进行NAT转换。
javascript
nat address-group 1 1
section 0 210.1.1.100 210.1.1.100 公网私网都可以,只要不和私网服务器在同一网段
nat-policy
rule name Policy
source-zone untrust
destination-zone trust
destination-address 192.168.100.1 mask 255.255.255.255
action source-nat address-group 1
没有配置安全策略,是因为缺省下防火墙对同一安全区域内流动的报文不做控制。记得配置黑洞路由
看下过程:
私网用户访问私网服务器报文:
源IP:192.168.100.50,目的IP:210.1.1.1
经过转换后,源IP:210.1.1.100,目的IP:192.168.100.1
私网用户回应的报文:
源IP:192.168.100.1,目的IP:210.1.1.100
经过转换后,源IP:210.1.1.1,目的IP:192.168.100.50
如果我们在这个网络环境下,将私网用户和私网服务器通过不同的接口连接到防火墙,此时私网用户和私网服务器交互的所有报文都需要经过防火墙转发,所以只配置NAT SERVER是可以的。
不要纠结转换后是公网地址还是私网地址。双向NAT并不是必配的功能。有时只配源NAT或NAT Server就可以达到同样的效果。但是灵活运用双向NAT可以起到简化网络配置、方便网络管理功能。