6.16 网络地址转换(NAT)
NAT也称为IP地址伪装,可以用来将在一个网络(内部网络)中使用的IP地址转换成在另一个网络(外部网络)中使用的IP地址。NAT技术主要用于隐藏内部网络的IP地址(使用RFC 1918私有地址)。这种伪装技术可以用来隐藏真实的网络身份,因此可以视为一种安全技术。
NAT设备会执行以下两个进程。
1.用一个映射的地址取代一个真实的地址,这个映射地址是在目的网络中可路由的地址。
2.为返回流量执行反向地址转换。
防火墙状态化监控会通过维护一个转换表来跟踪所有穿越安全设备的连接,同时通过这个列表,设备可以查找到数据包先前出站请求时的源地址,以此来验证入站数据包的目的地址并将它转发过去。
6.16.1 NAT控制(NAT Control)
防火墙始终是最应支持NAT的设备,因为它要最大程度地保障网络的灵活性和安全性。在最新版本的安全设备上,它可以实现NAT控制功能。
当外部通信需要用到地址转换规则的时候,NAT控制功能会接管防火墙,并且确保地址转换行为与7.0之前的版本是一致的。
NAT控制特性按照如下方式工作。
如果禁用NAT控制功能,防火墙在没有配置NAT规则的情况下会转发所有从较高安全级别接口(如内部接口)去往较低安全级别接口(如外部接口)的流量。当流量从较低安全级别接口去往较高安全级别接口时,防火墙只会放行那些能够与访问列表匹配的流量。在这种模式下,不需要配置NAT规则。
如果启用NAT控制功能,设备会使用NAT(这种情况下必须配置NAT)来匹配需求。当NAT控制功能启用时,从较高安全级别接口(如内部接口)去往较低安全级别接口(如外部接口)的数据包也必须匹配某条NAT规则,否则这个数据包就会被丢弃(把nat命令与global或static命令结合使用)。从较低安全级别接口去往较高安全级别接口的流量也需要进行NAT转换,而访问列表中有匹配项的流量可以通过防火墙并得到转发。
设备在默认情况下的配置为no nat-control(即NAT控制禁用模式)。在7.0及后续版本中,这个配置可以根据需要进行修改。
若打算启用NAT控制功能,要在全局配置模式下输入nat-control,如下所示。
hostname(config)# nat-control
注释:路由防火墙模式的单模和多模两种模式都支持nat-control命令。
当启用了nat-control时,每个内部地址都必须具有一个相应的内部NAT规则。同样,如果在一个接口上启用了外部动态NAT,那么每个外部地址也必须要有一个相应的外部NAT规则才能通过防火墙。
在默认情况下,NAT控制功能是禁用的(命令为no nat-control)。命令no nat-control可使内部主机在防火墙上没有NAT规则的情况下就可以与外部网络通信。从本质上讲,安全设备在NAT功能被禁用的情况下不会对任何数据包执行地址转换功能。要在全局禁用NAT控制,可以在全局配置模式下使用命令no nat-control。
hostname(config)#no nat-control
no nat-control和nat 0(identity NAT)这两条命令是有区别的。identity NAT需要流量始发于高安全级别的接口。而命令no nat-control则没有这方面的要求,而且也不需要使用static命令放行来自低安全级别接口(从外部接口到内部接口)的流量;它只需要配置一条访问策略--例如,放行能够与ACL匹配且存在相应路由条目的流量。
下面进行一下总结,流量从较高安全级别的接口去往较低安全级别的接口。
被标识为出站流量。
防火墙会放行所有IP流量,除非访问列表、认证或授权对该流量进行了限制。
至少需要使用以下命令之一。
--nat、nat 0、global、static。
流量从较低安全级别的接口去往较高安全级别的接口
被标识为入站流量。
从外部到内部的连接。
需要进行入站流量的放行。
防火墙会丢弃所有数据包,除非在其到达的接口下应用了access-list,并明确要求放行该数据包。如果使用了认证和授权,则还会有进一步的流量限制。
至少需要使用以下命令之一。
--加载ACL的nat 0、static和入站接口入站方向的access-list。