標籤:
NAT原理簡介
NAT英文全稱是“Network Address Translation”,中文意思是“網路位址轉譯”,它是一個IETF(Internet Engineering Task Force, Internet工程工作群組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私人網路地址(IP地址)翻譯成合法網路IP地址的技術。
簡單地說,NAT就是在區域網路內部網路中使用內部地址,而當內部節點要與外部網路進行通訊時,就在網關(可以理解為出口,打個比方就像院子的門一樣)處,將 內部地址替換成公用地址,從而在外部公網(internet)上正常使用,NAT可以使多台電腦共用Internet串連,這一功能很好地解決了公用 IP地址緊缺的問題。通過這種方法,您可以只申請一個合法IP地址,就把整個區域網路中的電腦接入Internet中。這時,NAT屏蔽了內部網路,所有 內部網電腦對於公用網路來說是不可見的,而內部網電腦使用者通常不會意識到NAT的存在。2所示。這裡提到的內部地址,是指在內部網路中分配給節點 的私人IP地址,這個地址只能在內部網路中使用,不能被路由(一種網路技術,可以實現不同路徑轉寄)。雖然內部地址可以隨機挑選,但是通常使用的是下面的 地址:10.0.0.0~10.255.255.255,172.16.0.0~172.16.255.255, 192.168.0.0~192.168.255.255。NAT將這些無法在互連網上使用的保留IP地址翻譯成可以在互連網上使用的合法IP地址。而全 局地址,是指合法的IP地址,它是由NIC(網路資訊中心)或者ISP(網路服務供應商)分配的地址,對外代表一個或多個內部局部地址,是全球統一的可尋 址的地址。
NAT 功能通常被整合到路由器、防火牆、ISDN路由器或者單獨的NAT裝置中。比如Cisco路由器中已經加入這一功能,網路系統管理員只需在路由器的IOS中設 置NAT功能,就可以實現對內部網路的屏蔽。再比如防火牆將WEB Server的內部地址192.168.1.1映射為外部地址202.96.23.11,外部存取202.96.23.11地址實際上就是訪問訪問 192.168.1.1。另外資金有限的小型企業來說,現在通過軟體也可以實現這一功能。Windows 98 SE、Windows 2000 都包含了這一功能。
NAT技術類型
NAT有三種類型:靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網路地址連接埠轉換NAPT(Port-Level NAT)。
其中靜態NAT設定起來最為簡單和最容易實現的一種,內部網路中的每個主機都被永久映射成外部網路中的某個合法的地址。而動態地址NAT則是在外部網路中定 義了一系列的合法地址,採用動態分配的方法映射到內部網路。NAPT則是把內部地址映射到外部網路的一個IP地址的不同連接埠上。根據不同的需要,三種 NAT方案各有利弊。
動態地址NAT只是轉換IP地址,它為每一個內部的IP地址分配一個臨時的外部IP地址,主要應用於撥號,對於頻繁的遠程聯結也可以採用動態NAT。當遠端使用者聯結上之後,動態地址NAT就會分配給他一個IP地址,使用者斷開時,這個IP地址就會被釋放而留待以後使用。
網 絡地址連接埠轉換NAPT(Network Address Port Translation)是人們比較熟悉的一種轉換方式。NAPT普遍應用於接入裝置中,它可以將中小型的網路隱藏在一個合法的IP地址後面。NAPT與 動態地址NAT不同,它將內部串連映射到外部網路中的一個單獨的IP地址上,同時在該地址上加上一個由NAT裝置選定的TCP連接埠號碼。
在Internet 中使用NAPT時,所有不同的資訊流看起來好像來源於同一個IP地址。這個優點在小型辦公室內非常實用,通過從ISP處申請的一個IP地址,將多個串連通 過NAPT接入Internet。實際上,許多SOHO遠端存取裝置支援基於PPP的動態IP地址。這樣,ISP甚至不需要支援NAPT,就可以做到多個 內部IP地址共用一個外部IP地址上Internet,雖然這樣會導致通道的一定擁塞,但考慮到節省的ISP上網費用和易管理的特點,用NAPT還是很值 得的。
virtualbox裡的NAT實現
要實現NAT,主機一般有兩塊網卡,一塊負責外網串連,一塊負責和內部網路串連。但是在我本地台式機只有一塊網卡,安裝virtualbox後照樣能使用NAT,這是為什麼呢?
我的宿主機是win7 64位(ip為192.168.52.238),虛擬機器為centos7(ip為 10.0.2.15),只有一塊網卡,我們將虛擬機器的22連接埠映射到4000連接埠,這樣就可以在宿主機裡用通過ssh串連到虛擬機器, NAT連接埠轉寄設定如下:
設定好了之後,在win7宿主機裡使用securecrt登陸虛擬機器:
然後在在win7裡執行cmd開啟控制台,執行 netstat -an -b -p tcp 查看網路連接情況:
可以清楚的看到,virtualbox 程式本身開了兩個服務:
1、在win7裡啟一個監聽服務,監聽40000連接埠,接收從宿主機發往虛擬機器的請求
2、virtualbox本身有另一個服務將收到的請求轉寄給虛擬機器的22連接埠,因為從虛擬機器的netstat命令可以看出是從一個10.0.2.2的地址串連過來的,所以這裡virtualbox本身充當了一個網 卡的作用,virtualbox用啟動一個tcp服務進行listen映射的連接埠,並將資料進行宿主機和虛擬機器的轉寄,邏輯上起到了一個網卡的作用。
3、因為實際起作用的是一個tcp串連,所以原則上只要網路上能串連到宿主機也就能串連到宿主機上的虛擬機器,這樣與宿主機同一個網段的其他機器也可以通過40000連接埠訪問虛擬機器,實際測試也確實是這樣。
該部落格前半部分的內容引用了:
http://www.emule.org.cn/topic/nat/
NAT原理簡介和virtualbox當中的NAT實現