网络地址转换(NAT, Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。防火墙都运行NAT,主要原因是:公网地址不够使用;隐藏内部IP地址,增加安全性;允许外网主机访问DMZ。
  动态NAT和PAT
  在图1中,内部主机访问外网和DMZ时,都需要转换源地址,配置方法如下:
  FW(config)# nat (inside) 1 10.0.1.0 255.255.255.0
  指定需要转换的源地址。其NAT ID为1。用于匹配global命令中的NAT ID。
  FW(config)# global (outside) 1 61.136.150.10-61.136.150.20
  指定用于替代源地址的地址池。其NAT ID为“1”,表明内口NAT ID为1的地址将被替换为地址池中的地址。该方式即为动态NAT。
  FW(config)# global (dmz) 1 10.0.2.20
  指定用于替代源地址的唯一地址。其NAT ID为“1”,表明内口NAT ID为1的地址都将被替换为同一地址(10.0.2.20)。该方式即为动态PAT。
  收到来自内网的IP包后,防火墙首先根据路由表确定应将包发往哪个接口,然后执行地址转换。
  静态NAT
  在图1中,为使外部用户可访问DMZ中的服务器,除适当应用ACL外,还需将服务器的IP地址(10.0.2.1)映射(静态转换)为公网地址(如61.136.151.1),静态转换命令如下:
  FW (config)# static (dmz,outside) 61.136.151.1 10.0.2.1 netmask
  255.255.255.255
  本例中子网掩码为255.255.255.255,表示只转换一个IP地址。若参数形如“10.0.2.0 61.136.151.0 netmask 255.255.255.0”,则表示要完成一个子网到另一个子网的静态转换。
  静态PAT

NAT 解析_第1张图片

图1 多口NAT

  在图1中,欲完成10.0.2.1:8080(TCP)到61.136.152.1:80(TCP)的静态映射,命令如下:
  FW(config)# static (dmz,outside) tcp 61.136.152.1:80 10.0.2.1:8080 netmask255.255.255.255
 NAT前后,源地址不变
  启用NAT控制后(通常NAT控制都处于启用状态),内部主机的地址必须经过NAT,方可与其他接口所连接的网络进行通信。在实践中,有时某些源地址并无改变的必要,甚至不允许改变。
  要求:内部子网125.221.40.0/24在NAT后,地址与真实地址相同。
  解决方法一:“Identity NAT”
  FW(config)# nat (inside) 0 125.221.40.0 255.255.255.0
  特点:支持策略NAT(本文不涉及),仅允许内部主机主动建立连接,如图2所示。

NAT 解析_第2张图片

图2 单向连接

  解决方法二:“Static Identity NAT”
  FW(config)# static (inside,outside) 125.221.40.0 125.221.40.0 netmask 255.255.255.0
  特点:可指定目的接口,内、外部主机均可主动建立连接,如图3所示。

NAT 解析_第3张图片

图3 双向连接

  解决方法三:“NAT exemption”
  FW(config)# access-list exempt permit ip 125.221.40.0 255.255.255.0 anyFW(config)# nat (inside) 0 access-list exempt
  特点:占用的资源较少。内、外部主机均可主动建立连接,如图3所示。
NAT与DNS记录重写
  在图4所示场景中,DMZ中服务器的真实地址(10.0.2.1)已映射为外部地址(61.136.151.1)。DNS服务器位于外网,其中包含可将syr.tgcep.edu.cn解析为外部地址61.136.151.1的A记录。
  外网用户可通过域名或外部地址正常访问WWW服务器。内部用户可通过真实地址(10.0.2.1)访问WWW服务器,但是,如果内部用户需要通过域名访问WWW服务器,则需要将域名解析为真实地址10.0.2.1。
  可以在启用防火墙的DNS检测功能(在默认情况下,该功能处于启用状态)后,通过DNS记录重写实现这一功能。
  欲实现DNS重写,需要在配置地址映射时,加入关键字DNS。就本例而言,相关配置如下:
  FW(config)# static (dm z,outside) 61.136.151.1 10.0.2.1 dns
  内网主机通过域名访问DMZ中WWW服务器的过程标示于图4-2-4中:①内网主机运行浏览器,向DNS服务器发送DNS请求;②DNS服务器以地址61.136.151.1回复;③防火墙接收到回复报文后,送DNS检测引擎进行处理。检测引擎检索到NAT配置“static (dmz,outside) 61.136.151.1 10.0.2.1 dns”,将DNS回复报文中的地址61.136.151.1改写为10.0.2.1(NAT配置中的关键字DNS是必须的,否则防火墙不进行改写操作);④将经过修改后DNS回复送内网主机;⑤内网主机向DMZ中的服务器发送HTTP请求。

NAT 解析_第4张图片

图4 NAT与DNS记录重写

  ASA 8.3 的NAT
  ASA 8.3 版本对NAT 的语法进行了革命的改变不再支持NAT-Control,使用了更加灵活和更加易于组合object /object-group的新方式。迁移命令如下,
  FW(config)# nat-control
  过去的配置命令。
  FW(config)# object network obj_any
  FW(config-network)# subnet 0.0.0.0 0.0.0.0
  FW(config-network)# nat (inside,outside) dynamic obj-0.0.0.0
  FW(config-network)# object network obj-0.0.0.0
  FW(config-network)# host 0.0.0.0
  FW(config)# object network obj_any-1
  FW(config-network)# subnet 0.0.0.0 0.0.0.0
  FW(config-network)# nat (inside,mgmt) dynamic obj-0.0.0.0
  FW(config)# object network obj_any-2
  FW(config-network)# subnet 0.0.0.0 0.0.0.0
  FW(config-network)# nat (inside,dmz) dynamic obj-0.0.0.0
  在客户升级版本后,如果不使用迁移命令,从外网的访问将不受NAT的限制,可以正常访问。(作者单位:1为三峡电力职业学院;2为三峡大学)