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 等等,由于篇幅限制就不展開討論了。在后續的文章中我們會進行具體的案例配置來分別對上面的概念進行驗證。