Cisco 的 NAT 从来都是谜之难用,无论是 IOS 还是 ASA。在这里专门集中整理了一下 ASA NAT 的一些概念和基础配置案例,仅限于基础部分,实在是没有精力去深究。( ASA version 8.3 之前的 NAT 对于数据处理的流程完全不同,本文所有的内容均是基于 version 8.3 及以后的版本。)
基本概念
ASA 里面 NAT 的基本概念和其他的厂商类似,大致上分为:
- Static
- Static NAT
- Static PAT
- Dynamic
- Dynamic NAT
- Dynamic PAT
- Policy
- Policy NAT
- Policy PAT
- Identity NAT
ASA 配置 NAT 的方法有两种:
- Auto NAT
- Manual NAT
NAT
这里 NAT 的概念很简单,就是做地址转换。
PAT
PAT 是在 NAT 的基础上不仅做地址转换还做了端口转换,这里的端口一般是指 Source Port。
Static NAT
静态的 NAT,允许双向通信。Static NAT 可以实现的映射关系有:
- one-to-one
- one-to-many
- few-to-many
- many-to-few
- many-to-one
Cisco 只推荐使用one-to-one
和one-to-many
,至于原因,官方只给了一句话 “might result in unintended consequences”。
Static PAT
静态的 PAT,允许双向通信。需要注意的是在 ASA 里 Static PAT 又被称为 Port Redirection (或者叫 Port Forwarding)。这和我们家用的普通无线路由器里面的端口转发是一个概念,从外部进入内部的数据会被进行端口转发。
Dynamic NAT
动态的从一个地址池里面按照先来先得原则进行 one-to-one 的 NAT 映射。只允许从里向外发起连接,在通信建立以后可以允许从外向里发起连接。
Dynamic PAT
动态的将多个内部源地址 PAT 到一个单一的固定的外部源地址上。只允许从里向外发起连接,在通信建立以后可以允许从外向里发起连接。类似于 IOS 里面的 overload。
Policy NAT / PAT
Policy NAT / PAT 的定义是 NAT 的转换需要根据配置的 Policy 来进行,配置 Policy 是通过 Manual NAT 来实现的。所以可以说 Policy NAT = Manual NAT。Policy NAT 是定义,Manual NAT 是具体实施方法。
Identity NAT
也是一种定义,即在做 NAT 的时候不进行地址转换。也是通过 Manual NAT 来进行配置。
Auto NAT
是一种配置 NAT 的方法,又称为 Network Object NAT,因为 NAT 是配置在 Network Object 里面的。一般情况下 Auto NAT 是用来做 Source NAT的,但是通过反向配置的方式我们也可以实现 Destination NAT 甚至是 Bidirectional NAT。
Manual NAT
是另一种配置 NAT 的方法,又称为 Twice NAT,这种方法需要定义一个单独的 NAT Policy从而实现了 Policy NAT。Twice 代表可以同时执行 Source 和 Destination NAT。
其他注意事项
Proxy ARP 在配置了 NAT 后会自动开启。
配置 ACL 的时候里面的地址全部使用真正的地址。
配置 NAT 的时候还有很多其他重要的细节比如数据包的处理流程,先做路由查询还是先做 NAT 等等,由于篇幅限制就不展开讨论了。