ASA 防火墙上NAT的基本原理与路由器上一样,只不过只用定义一下内网地址和进行转换后的地址就可以了,不需要进入接口再应用了。基本上两条命令即可完成一种NAT的配置。ASA上的NAT有动态NAT、动态PAT、静态NAT和静态PAT四种类型。
1、动态NAT(可以说是一对一,但不是静态的,一般不使用动态NAT)的配置步骤如下:
将内网10.0.0.0/8进行NAT转换为170.16.1.100~172.16.1.200:
ciscoasa(config)# nat (inside) 1 10.0.0.0 255.0.0.0 #定义需要进行NAT的内网地址
ciscoasa(config)# global (outside) 1 172.16.1.100-172.16.1.200 #定义全局地址池,
OK了。
ciscoasa(config)# show xlate detail #在进行第一次通信后,
即可通过该命令来查看NAT转换信息
上述配置中的1为nat-id,定义NAT转换时,需要nat-id匹配,才可进行转换。
若是要为inside区域内的所有网段实施动态NAT,配置命令如下:
ciscoasa(config)# nat (inside) 1 0 0 #0 0 表示任意网段
2、动态PAT(多对一,节省公网IP)的配置步骤如下:
动态PAT与路由器上的PAT相同,即可以多个私网地址转换为一个公网地址,也可直接使用outside接口。配置如下:
将20.0.0.0/8网段使用动态PAT转换为172.17.10.10
ciscoasa(config)# nat (inside) 2 20.0.0.0 255.0.0.0 #定义需要进行NAT的内网地址
ciscoasa(config)# global (outside) 2 172.17.10.10 #定义全局地址,OK了
也可以将20.0.0.0/8这个网段直接使用outside接口的IP地址进行转换,配置命令如下:
ciscoasa(config)# global (outside) 2 interface
3、静态NAT(一对一,常用来对DMZ区域的服务器实施这种NAT)的配置步骤如下:
ciscoasa(config)# static (dmz,outside) 172.16.1.201 192.168.1.1 #当DMZ区域
的192.168.1.1与outside通信时,
使用的地址是172.16.1.201,也就是说,想在外网访问192.168.1.1这个服务器上的服务,
那么需要使用172.16.1.201作为目的地址。
需要注意的是,在进行NAT转换时,不止需要配置地址转换,ACL也会影响是否能够通信成功。
下面配置一下ACL,使外网可以成功访问到192.168.1.1的服务。
ciscoasa(config)# access-list out_to_dmz permit ip any host 172.16.1.201
#允许所有主机访问映射地址172.16.1.201
ciscoasa(config)# access-group out_to_dmz in int outside #应用到outside接口
个人在实验过程中,在进行以上的ACL配置后,会出现访问不成功的时候,再继续配置一条允许所有主机访问服务器的真实IP即可,两条ACL名称一样,同样应用到outside接口。
4、配置静态PAT(与路由器上的端口映射类似),配置如下:
ciscoasa(config)# static (dmz,outside) tcp 172.16.1.201 http 192.168.1.1 http
#DMZ区域的192.168.1.1服务器80端口与outside进行通信时,
使用172.16.1.201的HTTP端口
ciscoasa(config)# static (dmz,outside) tcp 172.16.1.201 23 192.168.1.10 23
#当DMZ区域的192.168.1.10服务器23端口与外网进行通信,
使用的是172.16.1.201地址的23端口
ciscoasa(config)# access-list out_to_dmz permit ip any host 172.16.1.201
#配置ACL,若对安全要求比较高,由于上述两个服务都是使用TCP协议,
这里ACL规则中的ip命令字,可以改为tcp。
ciscoasa(config)# access-group out_to_dmz in int outside
静态PAT已经配置好了,现在外网用户在不同的软件平台,使用172.16.1.201作为目的地,即可访问到不同的服务。(同理,若是无法访问成功,那么就再加一条ACL:允许所有主机访问服务器的真实IP即可,两条ACL名称一样,同样应用到outside接口。)
经过以上配置可以看出,需要注意配置的语法,顺序有些变化,而且,在配置静态PAT时,可以指定服务名称,也可以直接指定端口号,个人建议还是直接指定端口号靠谱些
5、NAT控制与NAT豁免
ASA从7.0版本开始提供了一个NAT控制开关,即nat-control命令,但默认是禁用NAT控制(no nat-control)。若在全局模式下执行命令nat-control,则代表开启了NAT控制,开启nat控制的作用大概就是只允许进行过nat转换的地址发送报文通过防火墙,没有配置NAT转换的则不允许穿越防火墙,个人感觉并不太实用,还是写下来,做个笔记吧。
那么开启NAT控制后,没有配置NAT的地址想要通过防火墙来进行通行,那么还可以配置NAT豁免。
NAT豁免的大概意思就是经过豁免的地址不必经过nat地址转换即可通过防火墙进行通信。
举个栗子:
在ASA开启了NAT控制时,DMZ区域有192.168.1.0网段,当inside区域的10.0.0.0网段没有配置nat,还要与DMZ区域的192.168.1.0进行通信,那么,就需要用到了NAT豁免,配置命令如下:
ciscoasa(config)#access-list nonat extended permit ip 10.0.0.0 255.0.0.0 192.168.1.0 255.255.255.0
ciscoasa(config)#nat (inside) 0 access-list nonat