NAT技術的基本原理
NAT技術通過對IP封包頭中的源位址或目的位址進行轉換,可以使大量的私網IP位址通過少量的公網IP位址來通路公網。
NAT是将IP資料封包報頭中的IP位址轉換為另一個IP位址的過程。從實作上來說,一班的NAT轉換裝置(實作NAT功能的網絡裝置)都維護者一張位址轉換表,所有經過NAT轉換裝置并且需要進行位址轉換的封包,都會通過這個表做相應的修改。位址轉換的機制分為如下兩個部分:
- 内部網絡主機的IP位址和端口轉換為NAT轉換裝置網布網絡位址和端口
- 外部網絡位址和端口轉換為NAt轉換裝置内部網絡主機的IP位址和端口
也就是<私有位址+端口>與<公有位址+端口>之間的互相轉化。
NAT分類
- 源NAT(Source NAT):用來使多個私網使用者能夠同時通路Internet:
- 位址池方式:采用位址池中的公網位址為私網使用者進行位址轉換。
- 出接口位址方式(Easy IP):内網主機直接借用公網接口的IP位址通路Internet,特别适用于公網接口IP位址是動态擷取的情況。
- 伺服器映射:用來使外網使用者能夠通路私網伺服器:
- 靜态映射(NAT Server):公網位址和私網位址一對一進行映射,用在公網使用者通路私網内部伺服器的場景。
- 目的NAT(Destination NAT):用來使手機上網的業務流量送往正确的WAP網關。主要用在轉換手機使用者WAP網關位址,使手機使用者可以正常上網的場景。
NAT的優點與缺點
優點:
- 實作IP位址複用,節約寶貴的位址資源
- 位址轉換過程對使用者透明
- 對内網使用者提供隐私保護
- 可實作對内部伺服器的負載均衡
缺點:
- 網絡監控難度加大
- 限制某些具體應用
源NAT配置
基于源IP位址的NAT是指對發起連接配接的IP封包頭中的源位址進行轉換。它可以實作内部使用者通路外部網絡的目的,通過将内部主機的私有位址轉換為公有位址,使一個區域網路中的多台主機使用少數的合法位址通路外部資源,又掉的隐藏了内部區域網路的主機IP位址,起到了安全保護作用。
源NAT配置指令
①配置NAT位址池(位址池方式才需要)
-
建立位址池,并進入位址池視圖
nat address-group address-group-name
-
确定位址池的起始位址和結束位址
section [section-id | section-name] start-address end-address
-
确定是否進行端口轉換(pat表示位址轉換的同時進行端口轉換,no-pat表示位址轉換的同時不進行端口轉換
nat-mode {pat | no-pat}
-
剔除位址池中某些特殊的IP位址
exclude-ip ipv4-address1 [to ipv4-address2 | mask {mask-address | mask-length}]
-
剔除位址池中某些特殊的端口,端口的取值範圍為2048-65535
exclude-port port1 [to port2]
②系統視圖下進入NAT政策視圖
nat-policy
③在NAT政策視圖下建立NAT規則并進入NAT規則視圖
rule name rule-name
④建立NAT政策,進入政策ID視圖
-
設定源IP位址或目的IP位址(可以使位址集)
source/destination-address {address-set address-set-name | ipv4-address}
-
設定源安全區域或目的安全區域
source/destination-zone {zone-name | any}
-
設定出端口端口号(easy-ip方式才需要)
egress-interface interface-type interface-number
-
設定服務(可選)
service {service-name | any}
- action {nat {{address-group address-group-name} | easy-ip} | no-nat}
注:配置NAT位址池時,應将上網接口位址和位址池配置在同一網段,即和配置設定的公網IP位址在同一網段;如果不在同一網段,則需要在下一跳路由器上配置到位址池的路由
伺服器映射配置(NAT Server)
NAT Server,即内部伺服器,NAT隐藏了内部網絡的結構,具有“屏蔽”内部主機的作用。需要提供給外部一個通路内部主機的機會。
當外部使用者通路内部伺服器時,有如下兩部分操作
- 防火牆将外部使用者的請求封包的目的位址轉換成内部伺服器的私有位址
- 防火牆将内部伺服器的回應封包的源位址(私網位址)轉換成公網位址
NAT Server配置指令
在系統視圖下:
nat server [id] protocol protocol-type global {global-address [global-address-end] | interface inteface-type interface-number} inside host-address [host-address-end] [no-reverse] [vpn-instance vpn-instance-name]
例子:
注:
- 不帶no-reverse:當公網使用者通路伺服器時,裝置能将伺服器的公網位址轉換成私網位址;同時,當伺服器主動通路公網時,裝置也能将伺服器的死亡位址轉換成公網位址。
- 帶no-reverse:表示裝置隻能将公網位址轉換成私網位址,不能将私網位址轉換成公網位址。當内部伺服器主動通路外部網絡時需要執行outbound的NAT政策,引用的位址池裡必須是NAT server配置的公網IP得知,否則反向NAT位址與正向通路的公網IP位址不一緻,會導緻網絡連接配接失敗。
- 多次執行帶參數no-reverse的NAT server指令,可以為該内部伺服器配置多個公網位址;未配置參數no-reverse則表示隻能為該内部伺服器配置一個公網位址。
目的NAT(destination NAT)
手機使用者需要通過登入WAP(Wireless Application Protocol)網關來實作上網的功能。目前,大量使用者使用直接從國外購買的手機,這些手機出廠時,預設設定的WAP網關位址與本國WAP網關位址不符,且無法自行修改,進而導緻使用者不能移動上網。為解決這一問題,無線網絡中,在WAP網關與使用者之間部署防火牆。通過在裝置上配置目的NAT功能,使這部分手機使用者能夠正常擷取網絡資源。
當手機使用者上網時,目的NAT處理過程如下:
- 當手機使用者上網時,請求封包經過基站及其他中間裝置到達防火牆。
- 到達防火牆的封包如果比對防火牆上所配置的目的NAT政策,則将此資料封包的目的IP位址轉換為已配置好的WAP網關的IP位址,并送往WAP網關。
- WAP網關對手機用戶端提供相應的業務服務,并将回應封包發往防火牆。
- 回應封包在防火牆上命中會話表,防火牆轉換該封包的源IP位址,并将該封包發往手機使用者,完成一次通信。
注:這裡可将WAP網關了解為代理伺服器
目的NAT配置指令
-
在系統視圖下,進入安全區域視圖
firewall zone [name] zone-name
-
在安全區域視圖下配置目的NAT
destination-nat acl-number address ip-address [port port-number]
例子:
[USG] firewall zone trust
[USG-zone-trust] destination-nat 3333 address 202.1.1.2
域間雙向NAT
當配置NAT Server時,伺服器需要配置到公網位址的路由才可正常發送回應封包。如果要簡化配置,避免配置到公網位址的路由,則可以對外網使用者的源IP位址也進行轉換,轉換後的源IP位址與伺服器的私網位址在同一網段,這樣内部伺服器會預設将回應封包發給網關,即裝置本身,由裝置來轉發回應封包。
域内雙向NAT
NAT ALG
NAT ALG(Application Level Gateway,應用級網關)是特定的應用協定的轉換代理,可以完成應用層資料中攜帶的位址及端口号資訊的轉換
需要NAT ALG的原因:
- 很多協定會通過IP封包的資料載荷進行新端口甚至新IP位址的協商。協商完成之後,通信雙方會根據協商結果建立新的連接配接進行後續封包的傳輸。而這些協商出來的端口和IP位址往往是随機的,管理者并不能為其提前配置好相應的NAT規則,這些協定在NAT轉換過程中就會出現問題。
- 普通NAT實作了對UDP或TCP封包頭中的的IP位址及端口轉換功能,但對應用層資料載荷中的字段無能為力,在許多應用層協定中,比如多媒體協定(H.323、SIP等)、FTP、SQLNET等,TCP/UDP載荷中帶有位址或者端口資訊,這些内容不能被NAT進行有效的轉換,就可能導緻問題。而NAT ALG(Application Level Gateway,應用層網關)技術能對多通道協定進行應用層封包資訊的解析和位址轉換,将載荷中需要進行位址轉換的IP位址和端口或者需特殊處理的字段進行相應的轉換和處理,進而保證應用層通信的正确性。
- 例如,FTP應用就由資料連接配接和控制連接配接共同完成,而且資料連接配接的建立動态地由控制連接配接中的載荷字段資訊決定,這就需要ALG來完成載荷字段資訊的轉換,以保證後續資料連接配接的正确建立。
- 為了實作應用層協定的轉發政策而提出了ASPF功能。ASPF功能的主要目的是通過對應用層協定的封包分析,為其開放相應的包過濾規則,而NAT ALG的主要目的,是為其開放相應的NAT規則。由于兩者通常都是結合使用的,是以使用同一條指令就可以将兩者同時開啟。
NAT ALG實作原理
通信過程:
- 私網主機和公網FTP伺服器之間通過TCP三向交握成功建立控制連接配接。
- 控制連接配接建立後,私網主機向FTP伺服器發送PORT封包,封包中攜帶私網主機指定的資料連接配接的目的位址和端口,用于通知伺服器使用該位址和端口和自己進行資料連接配接。
- PORT封包在經過支援ALG特性的NAT裝置時,封包載荷中的私網位址和端口會被轉換成對應的公網位址和端口。即裝置将收到的PORT封包載荷中的私網位址192.168.1.2轉換成公網位址8.8.8.11,端口1084轉換成12487。
- 公網的FTP伺服器收到PORT封包後,解析其内容,并向私網主機發起資料連接配接,該資料連接配接的目的位址為8.8.8.11,目的端口為12487(注意:一般情況下,該封包源端口為20,但由于FTP協定沒有嚴格規定,有的伺服器發出的資料連接配接源端口為大于1024的随機端口,如本例采用的是wftpd伺服器,采用的源端口為3004)。由于該目的位址是一個公網位址,是以後續的資料連接配接就能夠成功建立,進而實作私網主機對公網伺服器的通路。