NAT技術與代理服務器

NAT技術

在計算機網絡中,網絡地址轉換(Network Address Translation,縮寫爲NAT),也叫做網絡掩蔽或者IP掩蔽(IP masquerading),是一種在IP數據包通過路由器或防火牆時重寫來源IP地址或目的IP地址的技術。這種技術被普遍使用在有多臺主機但只通過一個公有IP地址訪問因特網的私有網絡中。根據規範,路由器是不能這樣工作的,但它的確是一個方便並得到了廣泛應用的技術。當然,NAT也讓主機之間的通信變得複雜,導致通信效率的降低。
1990年代中期,NAT是作爲一種解決IPv4地址短缺以避免保留IP地址困難的方案而流行起來的。
在一個典型的配置中,一個本地網絡使用一個專有網絡的指定子網(比如192.168.x.x或10.x.x.x)和連在這個網絡上的一個路由器。這個路由器佔有這個網絡地址空間的一個專有地址(比如192.168.0.1),同時它還通過一個或多個因特網服務提供商提供的公有的IP地址(叫做“過載”NAT)連接到因特網上。當信息由本地網絡向因特網傳遞時,源地址被立即從專有地址轉換爲公用地址。由路由器跟蹤每個連接上的基本數據,主要是目的地址和端口。當有回覆返回路由器時,它通過輸出階段記錄的連接跟蹤數據來決定該轉發給內部網的哪個主機;如果有多個公用地址可用,當數據包返回時,TCP或UDP客戶機的端口號可以用來分解數據包。對於因特網上的一個系統,路由器本身充當通信的源和目的地址。

NAT缺點

在一個具有NAT功能的路由器下的主機並沒有創建真正的IP地址,並且不能參與一些因特網協議。一些需要初始化從外部網絡創建的TCP連接和無狀態協議(比如UDP)無法實現。除非NAT路由器管理者預先設置了規則,否則送來的數據包將不能到達正確的目的地址。一些協議有時可以在應用層網關(見下)的輔助下,在參與NAT的主機之間容納一個NAT的實例,比如FTP。NAT也會使安全協議變的複雜,比如IPsec。

NAT分類

靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網絡地址端口轉換NAPT(Port-Level NAT)。

NAT工作原理

轉載自http://blog.csdn.net/hzhsan/article/details/45038265

2.1 地址轉換
NAT的基本工作原理是,當私有網主機和公共網主機通信的IP包經過NAT網關時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換。
如下圖所示,NAT網關有2個網絡端口,其中公共網絡端口的IP地址是統一分配的公共 IP,爲202.20.65.5;私有網絡端口的IP地址是保留地址,爲192.168.1.1。私有網中的主機192.168.1.2向公共網中的主機202.20.65.4發送了1個IP包(Dst=202.20.65.4,Src=192.168.1.2)。
這裏寫圖片描述
當IP包經過NAT網關時,NAT Gateway會將IP包的源IP轉換爲NAT Gateway的公共IP並轉發到公共網,此時IP包(Dst=202.20.65.4,Src=202.20.65.5)中已經不含任何私有網IP的信息。由於IP包的源IP已經被轉換成NAT Gateway的公共IP,Web Server發出的響應IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被髮送到NAT Gateway。
這時,NAT Gateway會將IP包的目的IP轉換成私有網中主機的IP,然後將IP包(Des=192.168.1.2,Src=202.20.65.4)轉發到私有網。對於通信雙方而言,這種地址的轉換過程是完全透明的。轉換示意圖如下。
這裏寫圖片描述
如果內網主機發出的請求包未經過NAT,那麼當Web Server收到請求包,回覆的響應包中的目的地址就是私網IP地址,在Internet上無法正確送達,導致連接失敗。
2.2 連接跟蹤
在上述過程中,NAT Gateway在收到響應包後,就需要判斷將數據包轉發給誰。此時如果子網內僅有少量客戶機,可以用靜態NAT手工指定;但如果內網有多臺客戶機,並且各自訪問不同網站,這時候就需要連接跟蹤(connection track)。如下圖所示:
這裏寫圖片描述
在NAT Gateway收到客戶機發來的請求包後,做源地址轉換,並且將該連接記錄保存下來,當NAT Gateway收到服務器來的響應包後,查找Track Table,確定轉發目標,做目的地址轉換,轉發給客戶機。
2.3 端口轉換
以上述客戶機訪問服務器爲例,當僅有一臺客戶機訪問服務器時,NAT Gateway只須更改數據包的源IP或目的IP即可正常通訊。但是如果Client A和Client B同時訪問Web Server,那麼當NAT Gateway收到響應包的時候,就無法判斷將數據包轉發給哪臺客戶機,如下圖所示。
這裏寫圖片描述
此時,NAT Gateway會在Connection Track中加入端口信息加以區分。如果兩客戶機訪問同一服務器的源端口不同,那麼在Track Table里加入端口信息即可區分,如果源端口正好相同,那麼在時行SNAT和DNAT的同時對源端口也要做相應的轉換,如下圖所示。
這裏寫圖片描述


代理服務器

代理(英語:Proxy),也稱網絡代理,是一種特殊的網絡服務,允許一個網絡終端(一般爲客戶端)通過這個服務與另一個網絡終端(一般爲服務器)進行非直接的連接。一些網關、路由器等網絡設備具備網絡代理功能。一般認爲代理服務有利於保障網絡終端的隱私或安全,防止攻擊。
提供代理服務的電腦系統或其它類型的網絡終端稱爲代理服務器(英文:Proxy Server)。一個完整的代理請求過程爲:客戶端首先與代理服務器創建連接,接着根據代理服務器所使用的代理協議,請求對目標服務器創建連接、或者獲得目標服務器的指定資源(如:文件)。在後一種情況中,代理服務器可能對目標服務器的資源下載至本地緩存,如果客戶端所要獲取的資源在代理服務器的緩存之中,則代理服務器並不會向目標服務器發送請求,而是直接返回緩存了的資源。一些代理協議允許代理服務器改變客戶端的原始請求、目標服務器的原始響應,以滿足代理協議的需要。代理服務器的選項和設置在計算機程序中,通常包括一個“防火牆”,允許用戶輸入代理地址,它會遮蓋他們的網絡活動,可以允許繞過互聯網過濾實現網絡訪問。

常見的代理服務器

FTP代理服務器
主要用於訪問FTP服務器,一般有上傳、下載以及緩存功能。端口一般爲21、2121等。
HTTP代理服務器
主要用於訪問網頁,一般有內容過濾和緩存功能。端口一般爲80、8080、3128等。
SSL/TLS代理
主要用於訪問加密網站,一般有SSL或TLS加密功能(最高支持128位加密強度)。端口一般爲443。
RTSP代理
主要用於Realplayer訪問Real流媒體服務器,一般有緩存功能。端口一般爲554。
Telnet代理
主要用於telnet遠程控制(黑客入侵計算機時常用於隱藏身份)。端口一般爲23。
POP3/SMTP代理
主要用於POP3/SMTP方式收發郵件,一般有緩存功能。端口一般爲110/25。
SOCKS代理
只是單純傳遞數據包,不關心具體協議和用法,所以速度快很多。一般有緩存功能。端口一般爲1080。(SOCKS代理協議又分爲SOCKS4和SOCKS5,SOCKS4協議只支持TCP,而SOCKS5協議支持TCP和UDP,還支持各種身份驗證機制、服務器端域名解析等。簡單來說:SOCK4能做到的SOCKS5都可以做到,但SOCKS5能做到的SOCK4不一定能做到)

發佈了67 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章