隨著Internet的快速發展,IPv4的公網地址資源已非常匱乏,NAT(Network Address Translation)技術通過對IP報文中的地址或端口進行轉換,可以使大量的私網IP地址通過共享少量的公網IP地址來訪問公網,從而有效減少了對公網地址的需求,減緩IP地址空間枯竭的速度。
針對NAT的類型可分為以下三種:
1、源NATa) 地址池方式,轉換源IP信息,適用大量私網用戶訪問Internet的場景。b) 出接口地址方式(Easy IP),適用于公網接口IP地址是動態獲取的情況。
2、服務器映射a) 靜態映射(NAT Server),適用于公網用戶訪問私網內部服務器的場景。b) 服務器負載均衡,適用于多個內網服務器提供相同的服務,對外虛擬成一個服務器。
3、目的NAT
主要應用在轉換手機用戶WAP網關地址,使手機用戶可以正常上網的場景。NAT基本概念:在USG系列防火墻上,還有Server-map用于存放關于地址轉換的映射關系,設備根據這種映射關系對報文的地址進行轉換,并轉發。NAT生成Server-map的兩種情況:
配置NAT Server成功后生成靜態表項。
配置NAT No-PAT后,需要由流量觸發建立Server-map表。
NAT ALG基本概念:NAT ALG(Application Level Gateway,應用級網關)是特定的應用協議的轉換代理,可以完成應用層數據中攜帶的地址及端口號信息的轉換。
FTP應用就由數據連接和控制連接共同完成,而且數據連接的建立動態地由控制連接中的載荷字段信息決定,這就需要ALG來完成載荷字段信息的轉換,以保證后續數據連接的正確建立。
ASPF功能的主要目的是通過對應用層協議的報文分析,為其開放相應的包過濾規則,而NAT ALG的主要目的,是為其開放相應的NAT規則。由于兩者通常都是結合使用的,所以使用同一條命令就可以將兩者同時開啟。
華為HCIE-Security認證針對以上類型展開分析,由技術的原理開始,再到使用的場景,到最后場景的故障分析,完整地解析地址轉換技術相關知識。
首先我們將帶大家了解在出口部署源NAT地址池方式的大致框架及邏輯,如下圖:
如上圖內網用戶群(10.1.10.2-10.1.10.100)最初都在一個區域內,有兩個公網IP(210.1.1.11和210.1.1.12)可用于做NAT轉換,由于無需對這些用戶進行區分,所以可將兩個公網IP放在同一地址池內。上網流量到達防火墻后,將從地址池中隨機選取一個公網IP做NAT轉換。這個過程看似很簡單,但是一些相對復雜的環境還是會難倒部分技術人員,下面通過案例為大家分享下。
例如有道這樣的安全競賽題:LAB2有部分需求如下,其中FW1的G1/0/1地址為10.1.10.254/24,ISP1的G0/0/1地址為10.1.10.10/24,問題需求是:
1、在FW1部署NAT雙出口為內網設備訪問外部數據,在出口ISP1或ISP2路由設備故障進行切換,其中ISP1申請地址池范圍為10.1.10.9/29,向ISP2申請地址范圍為10.1.22.9/29,并配置相應安全策略允許內向流通通過。
2、考慮在FW1出口的兩個ISP可能會出現的潛在環路或ARP廣播問題,該如何解決?
通過分析發現這個LAB2的需求并不是難,無非是是基礎知識組合在一起。但大部分工程師并沒有能提交完整的答案。反饋的問題是在FW1設備無法將流量訪問到ISP1的G0/0/1接口直連。(其中ISP1設備G0/0/1地址為10.1.10.10/24,FW1設備G1/0/1地址為10.1.10.254/24)
詢問大家在這個位置做了什么操作時,有人說到在NAT地址池與出口處于同網段時可能引起ARP廣播問題,NAT地址池與出口處于不同網段時可能引起環路問題。
登錄防火墻,此時FW1上的路由條目如下:
在FW上查會話如下:
產生ARP廣播條件:向FW1的G1/0/1口發送目的為10.1.10.13的數據包:
在FW1的G1/0/1接口抓包如下:
此處ARP廣播產生的原因是因為防火墻收到報文后,發現報文的目的地址和自己的接口在同一網段,直接發送ARP請求報文(第2個ARP報文),尋找該地址的MAC地址(防火墻依然沒有意識到該報文的目的地址是自己的NAT地址池地址)。如果公網上的不法分子發起大量訪問時,防火墻將發送大量的ARP請求報文,也會消耗系統資源。解決的辦法是在FW1上針對NAT地址池寫黑洞路由,隨即在FW1上配置了如下命令"ip route-static 10.1.10.9/29 NULL 0",此時FW1路由表如下:
接著在FW1上查的會話也老化消失:
之后就出現經過FW1訪問ISP1直連不通的現象,甚至有人在此排查了半個多小時。在針對直連鏈路訪問失敗問題,我們可在FW1執行“display ip routing-table 10.1.10.10”就會得到你想要的結果,發現數據都丟NULL 0 接口。原因是:根據路由匹配原則,路由器會優先選擇掩碼最長的條目,導致數據無法從FW1的G1/0/1口發送出來,ISP1設備不能收到請求報文。
解決此場景"在NAT地址池與出口處于同網段時可能引起ARP廣播問題",可寫關于地址池的明細路由(排除已配置的IP)指向NULL 0接口,或者規劃好IP地址的使用,避開NAT地址池的范圍10.1.10.9/29,使用其他地址配置物理接口。
通過上述案例可以發現,很多的場景并不復雜,只是我們忘了原本基礎的內容。包括很多高級學員參加HCIE考試,經常會忘記基礎的內容。排錯是技術工程師務必掌握的內容,而排錯這個技能往往離不開平時的實驗練習與基礎理論部分。