1、前言服務器
ADC的主要做用是做爲服務器的反向代理來進行應用發佈的,介於客戶端和服務器端之間,那麼NAT就是它必然要面臨的工做。歸根結底,NAT就是ADC的數據轉發立身之本。可否支持更多、更靈活、控制力更強的NAT轉換就是衡量一個ADC是否合格的關鍵因素之一。這也對工程師提出了最基本的要求,若是連如何控制NAT都不清楚,那麼遇到各類不一樣的場景就沒法作出對應的方案。網絡
2、什麼是NATide
1.NAT簡介測試
藉助於NAT,私有(保留)地址的"內部"網絡經過路由器發送數據包時,私有地址被轉換成合法的IP地址,一個局域網只需使用少許IP地址(甚至是1個)便可實現私有地址網絡內全部計算機與Internet的通訊需求。spa
NAT將自動修改IP報文的源IP地址和目的IP地址,Ip地址校驗則在NAT處理過程當中自動完成。有些應用程序將源IP地址嵌入到IP報文的數據部分中,因此還須要同時對報文進行修改,以匹配IP頭中已經修改過的源IP地址。不然,在報文數據都分別嵌入IP地址的應用程序就不能正常工做。3d
2.NAT實現方式代理
NAT的實現方式有三種,即靜態轉換Static Nat、動態轉換Dynamic Nat 和 端口多路複用OverLoad。server
靜態轉換是指將內部網絡的私有IP地址轉換爲公有IP地址,IP地址對是一對一的,是一成不變的,某個私有IP地址只轉換爲某個公有IP地址。藉助於靜態轉換,能夠實現外部網絡對內部網絡中某些特定設備(如服務器)的訪問。blog
動態轉換是指將內部網絡的私有IP地址轉換爲公用IP地址時,IP地址是不肯定的,是隨機的,全部被受權訪問上Internet的私有IP地址可隨機轉換爲任何指定的合法IP地址。也就是說,只要指定哪些內部地址能夠進行轉換,以及用哪些合法地址做爲外部地址時,就能夠進行動態轉換。動態轉換可使用多個合法外部地址集。當ISP提供的合法IP地址略少於網絡內部的計算機數量時。能夠採用動態轉換的方式。ip
端口多路複用(Port address Translation,PAT)是指改變外出數據包的源端口並進行端口轉換,即端口地址轉換(PAT,Port Address Translation).採用端口多路複用方式。內部網絡的全部主機都可共享一個合法外部IP地址實現對Internet的訪問,從而能夠最大限度地節約IP地址資源。同時,又可隱藏網絡內部的全部主機,有效避免來自internet的***。所以,目前網絡中應用最多的就是端口多路複用方式。
3.Netscaler的NAT
下面咱們主要討論netscaler的NAT是如何作的,哪些參數影響到netscaler的NAT動做。
影響netscaler作NAT的參數主要分爲如下8類:
ü RNAT
ü INAT
ü IP mode
ü Netprofile
ü USIP
ü MAC mode
ü Service port=*
ü Service use proxy port
咱們分別針對每一個參數作測試和理解,如下是環境概述
實驗環境:
Client ip:192.168.20.1
SNIP: 192.168.20.11
192.168.0.21
192.168.10.11
VIP: 172.16.10.10
172.16.10.11
10.10.1.2
Server ip: 192.168.0.50
10.10.1.1
3、影響NAT的參數測試
1.RNAT
客戶端的網關是netscaler,但服務器沒有客戶端的回程路由
客戶端直接訪問服務器,網絡不通
抓包狀況:
由於服務器沒有客戶端192.168.20.1的回程路由,因此ICMP無響應
Netscaler上配置RNAT
客戶端的地址由192.168.20.1被netscaler替換爲192.168.10.11,遂能夠訪問服務器資源
抓包狀況:
2.INAT
在netscaler上配置INAT策略,將10.10.1.2轉換爲192.168.0.50
Netscaler中沒有創建10.10.1.2的vserver
抓包狀況:
用戶端192.168.20.1訪問10.10.1.2被netscaler轉換爲192.168.0.21訪問192.168.0.50.
用戶成功打開頁面,在INAT中也能夠靈活控制源端口、源地址、目的端口等是否轉換。
3.IP mode
IP mode的工做機制是默認同時作源地址和目的地址的替換,即至關於靜態NAT
抓包狀況:
用戶端192.168.20.1訪問172.16.10.10,被Netscaler替換爲192.168.0.21訪問192.168.0.50
4.Netprofile
創建兩個Netprofile
將Netprofile_vs綁定到Vserver
抓包狀況:
客戶端192.168.20.1訪問172.16.10.10被Netscaler替換爲192.168.10.11訪問192.168.0.50,源地址不是snip:192.168.0.21而是Netprofile_vs的地址192.168.10.11
將Netprofile_vs綁定到Vserver同時將Netprofile_service綁定到service
Vserver
Service
抓包狀況:
客戶端192.168.20.1訪問172.16.10.10被Netscaler替換爲192.168.10.22訪問192.168.0.50,源地址而非Netprofile_vs中的192.168.10.11
經過Netprofile測試說明了Netprofile綁在service的優先級高於vserver
5.USIP
保留Netprofile在service上開啓USIP,並將服務器的網關指向netscaler
抓包狀況:
用戶端192.168.20.1訪問172.16.10.10,只有目的地址被Netscaler替換爲192.168.0.50,源地址不變。
此項說明一旦啓用USIP,netscaler全部基於源地址替換的操做所有禁用,不論是默認用SNIP輪訓仍是指定Netprofile都不生效。
6.MAC mode
MAC mode不作目的地址替換,必須是any的協議才能啓用,主要用在LLB。
配置mac mode的VS、servicegroup、member
10.10.1.1是服務器的第二IP
抓包狀況:
客戶端192.168.20.1訪問10.10.1.1,被netscaler替換源地址192.168.10.11後直接訪問10.10.1.1,目的地址不作替換。
固然若是須要也能夠控制是否作源地址、源端口、目的端口的替換。
7.Service port=*
服務器同時開啓8000口的服務
創建兩個service
http協議的8000口和TCP協議的any口
創建兩個vserver
抓包狀況:
用戶端192.168.20.1帶端口訪問172.16.10.10:3000
被NS同時替換源IP+端口和目的IP+端口,源地址變爲192.168.0.21:30748目的地址變爲192.168.0.50:8000.
但若是用戶訪問的是any的Vserver話目的端口不會改變
抓包狀況:
用戶端192.168.20.1訪問172.16.10.11:8000
被netscaler替換爲192.168.0.21:40948訪問192.168.0.50:8000
訪問過程目的端口不會改變。
8.Proxy port
若是想源端口也不變須要去掉use proxy port選項,同時開啓USIP
抓包狀況:
用戶端192.168.20.1:4503訪問172.16.10.10:3000
被netscaler替換爲192.168.20.1:4503訪問192.168.0.50:8000,源地址和源端口不作替換
1、總結:
以上展現了能夠控制netscaler NAT行爲的全部參數,可知netscaler有很是豐富的參數來根據須要靈活控制NAT行爲(對於INAT部分有另外一篇文章作詳細討論)根據數通設備習慣的NAT術語,總結了netscaler各個參數對應的NAT類型。
項目 |
Netscaler默認狀況 |
Netscaler可調整狀況 |
RNAT |
動、靜態SNAT |
動、靜態PNAT |
INAT |
靜態DNAT |
靜態PNAT |
IP mode |
動、靜態SNAT+DNAT |
動、靜態PNAT |
Netprofile |
動、靜態SNAT |
動、靜態PNAT |
USIP |
靜態SNAT |
靜態PNAT |
MAC mode |
動態SNAT(固定目的IP) |
|
Service port=* |
目的端口不變PNAT |
|
Service use proxy port |
源端口不變PNAT |
動、靜PNAT |