本文转自:https://blog.51cto.com/hujizhou/1854608
ASA 8.3 以后,NAT 算是发生了很大的改变,之前也看过8.4 的ASA,改变的还有×××,加入了Ikev2 。MPF 方法加入了新的东西,QOS 和策略都加强了,这算是Cisco 把CCSP 的课程改为CCNP Security 的改革吧!

拓扑图就是上面的,基本配置都是一样,地址每个路由器上一条默认路由指向ASA。
基本通信没问题,关于8.3 以后推出了两个概念,一个是network object 它可以代表一个主机或者子网的访问。另外一个是service object,代表服务。
1、地址池的形式的NAT 配置
老版本代表一个12.1.1.0 的地址池转换成200.200.200.3-200.200.200.254 一对一的转换
nat (inside) 1 12.1.1.0 255.255.255.0
global (outside) 1 200.200.200.3-200.200.200.254
新版本(Network object NAT)
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# subnet 12.1.1.0 255.255.255.0
ciscoasa(config-network-object)# exit
ciscoasa(config)# object network outside-pool
ciscoasa(config-network-object)# range 200.200.200.3 200.200.200.254
ciscoasa(config-network-object)# exit
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# nat (inside,outside) dynamic outside-pool
其实,刚开始接触也挺不习惯的,不过弄懂了就习惯了,它的意思是先定义两个object,一个用于代表转换前的地址范围,一个是转化后的地址范围,最后在转换前的object 进行调用转化后的object。

由于地址不是一一对应的,所以这里它就自动选择了。这里为了清楚表达要在需要的地方调用这个策略,所以输入了两次object network inside, 其实我们看先创建一个地址池,然后在创建一个需要转换的范围,然后在这个object 里面调用。
2、动态PAT,多对一的配置
老配置里面可以根据一个地址或者直接跟interface 参数来做
nat (inside) 1 12.1.1.0 255.255.255.0
global (outside) 1 200.200.200.1 or interface
新版本(Network object NAT)
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# subnet 12.1.1.0 255.255.255.0
ciscoasa(config-network-object)# nat (inside,outside) dynamic interface

这个策略最简单,就在需要转换的地址进行NAT 配置,这里调用interface 作为转换。
如果是一个单一的地址话。
ciscoasa(config)# object network outside-pat
ciscoasa(config-network-object)# host 200.200.200.3
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# subnet 12.1.1.0 255.255.255.0
ciscoasa(config-network-object)# nat (inside,outside) dynamic outside-pat 调用outside-pat 策略用200.200.200.3 做PAT

转换成200.200.200.3 出去了
3、Static NAT 一对一转换
老版本,用于服务器公布出去
static (inside,outside ) 200.200.200.3 13.1.1.2
新版本(Network object NAT)
ciscoasa(config)# object network DMZ
ciscoasa(config-network-object)# host 13.1.1.2
ciscoasa(config-network-object)# nat (dmZ,outside) static 200.200.200.3
ciscoasa(config)# access-list 100 permit tcp any host 13.1.1.2 eq telnet
ciscoasa(config)# access-group 100 in interface outside

外部访问DMZ 没问题,但是这里注意的是在8.3 以前的版本是需要放行转换后的地址,而8.3 以后,是放行真实的地址,也就是内部地址。这里还可以用一个obejct 来单独设置一个地址,然后在调用。另外如果是http 的转换或者邮件这些依赖DNS 解析的服务话,而内部有是通过公网地址访问的话,那么就加个DNS 参数nat (dmZ,outside) static 200.200.200.3 dns
4、Static NAT 端口转换
static (inside,outside) tcp 200.200.200.3 2323 13.1.1.2 23
新版本(Network object NAT)
ciscoasa(config)# object network DMZ
ciscoasa(config-network-object)# host 13.1.1.2
ciscoasa(config-network-object)# nat (dmZ,outside) static 200.200.200.3
ciscoasa(config-network-object)# nat (dmZ,outside) static 200.200.200.3 service tcp telnet 2323
这个是格式,前面telnet 是代表内部服务的端口号,而后面的代表转换后的端口号。

这里要加2323 的端口号。
另外一种转换形式就是跟interface 参数的,它跟8.3 以前一样,接口地址不能作为object 的一部分,只能通过interface来表示,而不是地址形式。
ciscoasa(config-network-object)# nat (dmZ,outside) static interface service tcp telnet 2323

这里8.3 以后放行真实地址的流量就可以了,而不关心转换后的地址。
5、Identity NAT
nat (inside) 0 2.2.2.2 255.255.255.255
在老版本里面有个NAT 0 的策略,分为identity 和bypass,我们通常用的deny ××× 流量不做NAT 用的是bypass,不过在8.3 以后实现方法有点不同。在这个拓扑中,inside 新增加一个2.2.2.2 的地址,不被转换出去。
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# host 2.2.2.2
ciscoasa(config-network-object)# nat (inside,outside) dynamic interface

默认情况下是转换地址出去的,做个identity 后
新版本(Network object NAT)
ciscoasa(config)# object network inside1
ciscoasa(config-network-object)# host 2.2.2.2
ciscoasa(config-network-object)# nat (inside,outside) static 2.2.2.2

这里自己转换自己,它是优于PAT 的。
6、policy NAT
access-list 100 permit ip 12.1.1.0 255.255.255.0
nat (inside) 1 access-list 100
global (outside) 1 200.200.200.3
globat (outside) 1 interface
host 1.1.1.1 关于12.1.1.0 网段去往1.1.1.1 的转换用200.200.200.3,在老版本中,叫做策略NAT,根据访问不同的网段,转换成不同地址出去。
新版本(Twice NAT) ,这个是两次NAT,一般加入了基于目的的元素,而之前的network object 只是基于源的,通常情况下使用object 就能解决问题了,这个只是在特殊情况下使用。一般我们把object 叫做Auto NAT ,而Twice NAT 叫做manual NAT
这是outside 有个1.1.1.1 和3.3.3.3 的地址,当12.1.1.0 的网段访问1.1.1.1 的时候转换成200.200.200.3 出去,而其余的就用接口地址转换。
ciscoasa(config)# object network policy 这个代表访问1.1.1.1
ciscoasa(config-network-object)# host 1.1.1.1
ciscoasa(config)# object network outside-pat 用这个地址做专门访问1.1.1.1 的PAT
ciscoasa(config-network-object)# host 200.200.200.3
ciscoasa(config)# object network inside
ciscoasa(config-network-object)# subnet 12.1.1.0 255.255.255.0
ciscoasa(config-network-object)# nat (inside,outside) dynamic interface
这里定义了内部网段,并且用接口地址做PAT。关于Twice NAT 是在全局下做的,而Auto NAT 是基于在Object 下做的。
ciscoasa(config)# nat (inside,outside) source dynamic inside outside-pat destination static policy policy
这个跟普通的Auto NAT,这里多了个destination 目的,policy policy 这是书写格式。看下效果


效果出来了,访问1.1.1.1 的时候用200.200.200.3 转换,而访问3.3.3.3 的时候用interface 转换出去。
××× 流量旁路
在老版本里面我们用NAT 0 来解决这个问题,而在新版本里面没有NAT 0 这个概念了,它用Twice NAT+Identify 组合的使用
access-list 100 permit ip host 1.1.1.1 host 2.2.2.2
nat (inside) 0 access-list 100
object network local-***-traffic
host 1.1.1.1
object netowork remote-***-traffic
host 2.2.2.2
nat (inside,outside) source static local-***-traffic local-***-traffic destination static remote-***-traffic
remote-***-traffic (全局下)
执行顺序:
1、manual NAT:(Twice NAT):、Twice NAT+Identify (××× 旁路) 、优先选择Twice NAT 有服务的转换、选择Twice NAT
关于Twice NAT 的顺序完全是谁在最前面谁最优,没有什么比较的,可以通过人为的修改顺序。
2、Auto NAT :1、identify 2、static 3、dynamic 其中static 是优于dynamic 的。
如果static 存在多个,那么首先比较子网掩码范围,大的优先,也就是32 位由于24 位,如果都一样,就比较网络位,小的优先,就是10.1.1.0/24 网段比20.1.1.0/24 优先,最后都相同比较object name,字母最前面的优先,也就是ab 是优于bc 的Dynamic 的话,顺序也跟static 一样,只是static 是优于dyanmic 的
评论