前面已经介绍了网络地址转换(NAT)的原理和基于路由器的配置,ASA上的NAT配置相对于路由器来说要复制一些,ASA上的NAT有动态NAT、动态PAT、静态NAT、静态PAT。下面的链接是我以前写的NAT原理,在路由器上配置NAT的命令http://yangshufan.blog.51cto.com/13004230/1959448
动态NAT
动态NAT将一组IP地址转换为指定地址池中的IP地址,是动态一对一的轮询的关系;适合拥有多个公网IP、多个内网PC要访问互联网的环境使用(单向)
配置命令如下:
1.指定需要进行地址转换的内网网段
asa(config)# nat (interface_name) nat-id local-ip mask asa(config)# nat (inside) 1 0 0 //表示转换所有内网地址
其中nat-id这里必须大于等于1
2.定义全局地址池
asa(config)# global (interface_name) nat-id [global-ip]-[global-ip]
3.使用命令查看NAT转换表
asa# show xlate detail
案例:inside区域有两个网段,要求配置动态NAT实现网段192.168.1.0访问Internet时,进行地址转换,NAT地址池为202.106.2.100-202.106.2.200
asa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 asa(config)# global (outside) 1 202.106.2.100-202.106.2.200
动态PAT
动态PAT使用IP和源端口号创建一个唯一的会话,是动态多对一的关系;适合只有一个公网IP、多个内网PC要访问互联网的环境使用(单向),与动态NAT唯一不同的就是全局地址只有一个
在上图的案例中,如果要配置动态PAT,用于转换的IP地址是202.106.2.200,则配置命令如下:
asa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 asa(config)# global (outside) 1 202.106.2.200
如果在配置动态PAT时直接使用outside接口的IP地址进行转换,则配置命令如下:
asa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 asa(config)# global (outside) 1 interface
静态NAT
静态NAT创建了一个从真实地址到映射地址的一对一的固定转换,可用于双向通信;适合有多个公网IP且有多个内网服务器需要发布的环境使用(双向)
案例:在上图的案例中,DMZ内的服务器默认可以访问Internet,而在实际环境中,是允许所有地址访问内网服务器192.168.3.1,需要配置静态NAT,配置命令如下:
asa(config)# static (dmz,outside) 202.106.2.111 192.168.3.1 //配置静态NAT asa(config)# access-list out_to_dmz permit ip any host 202.106.2.111 asa(config)# access-group out_to_dmz in int outside //配置ACL
注意:ACL中的目的地址应配置为映射地址202.106.2.111,而不是真实的地址192.168.3.1
静态PAT
静态PAT允许为真实和映射地址指定TCP或UDP端口号;适合只有一个公网IP且要发布多个内网服务器的环境使用(双向)
静态PAT的命令语法如下:
asa(config)# static (local_if_name,global_if_name) {tcp |udp} {global-ip | interface} global-port local-ip local-port [netmask mask]
案例:如下图所示,DMZ有两台服务器,要求使用一个单一的映射地址202.106.2.111提供不同的服务
配置命令如下:
asa(config)# static (dmz,outside) tcp 202.106.2.111 http 192.168.3.1 http //配置静态PAT asa(config)# static (dmz,outside) tcp 202.106.2.111 smtp 192.168.3.2 smtp asa(config)# access-list out_to_dmz permit ip any host 202.106.2.111 asa(config)# access-group out_to_dmz in int outside //配置ACL
NAT控制
我们知道,默认高安全级别是可以访问低安全级别的,也就是说,即使我们不做NAT,PC1也可以访问Internet;而在真实环境中,PC1访问Internet时,可以通过ASA将源地址是自己IP的请求包发送出去,但是确不会接收到回应包,因为私网地址在互联网上是不合法的,因此我们还是需要做NAT,将私网地址映射为公网地址来访问互联网或被互联网访问
ASA从7.0开始提供了一个NAT控制的开关,即nat-control命令,当我们开启NAT后,简单的配置中,PC1不能再访问Internet了,必须做NAT转换才能进行访问
默认情况下,是禁用NAT控制(no nat-control),但在实际环境中,我们一般启用NAT控制方便管理;在启用NAT控制时,NAT规则是必须的;即发起的每一个连接都需要一个相应的NAT规则
禁用NAT控制:no nat-control
这是默认的情况,在禁用NAT控制是,NAT规则并不是必须的:它允许匹配NAT规则的网段进行地址转换通信;也允许不匹配NAT规则的网段通信,只是不经过地址转换
启用NAT控制:nat-control
如果启用了NAT控制,NAT的规则就是必须的:它允许匹配NAT规则的网段进行地址转换通信;禁止不匹配NAT规则的网段通信
NAT豁免
当启用NAT控制时,每个发起的连接都需要一个相应的NAT规则,但是在某些应用场合(例如配置×××)需要绕过NAT规则。绕过NAT规则有很多种方法,NAT豁免就是其中一种,NAT豁免允许双向通信
配置NAT豁免首先需要定义一个ACL,用于指定需要绕过NAT规则的流量,然后进行配置,配置命令如下:
asa(config)# nat (interface_name) 0 access-list acl_name
案例:如下图所示,在ASA上启用NAT控制,要求为192.168.1.0网段配置动态PAT,映射地址为outside接口地址,为192.168.2.0网段配置NAT豁免
配置命令如下:
asa(config)# nat-control //启用NAT控制 asa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 //配置动态PAT asa(config)# global (outside) 1 interface asa(config)# access-list nonat extended permit ip 192.168.2.0 255.255.255.0 202.106.2.0 255.255.255.0 asa(config)# nat (inside) 0 access-list nonat //启用NAT豁免
查看和删除NAT的命令
asa# show xlate //查看NAT转换表摘要 asa#show xlate detail //查看NAT转换表详细信息 asa#show run nat // 查看指定NAT asa#show run global //查看指定全局地址 asa(config)# no global (outside) 1 172.16.1.200 //删除指定的全局地址池,在定义全局命令前加no asa(config)# clear xlate //清除NAT转换表 asa(config)# clear configure stat //删除静态NAT asa(config)# clear configure nat //删除动态NAT asa(config)# clear configure global //清空全局地址池