IPv4擴充之NAT技術
在我們企業在對外發布應用系統或網站系統及用戶辦公上互聯網時,針對公網IP地址不夠用的問題我們不知道如何解決,因為IPv4的數量只有2的32次方,大致42億左右,但這完全不能滿足我們用戶全公網IP的使用問題,因此NAT的出現正好彌補了公網IP不夠的問題,也間接的隱藏了企業內網,保護了內部網絡,那具體NAT是什么原理呢?我們下面將簡單介紹一下。
一.NAT技術
1.NAT:全名“Network Address Translation”,網絡地址轉換,它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術,如下圖所示。因此我們可以認為,NAT在一定程度上,能夠有效的解決公網地址不足的問題。
2.私有IP地址:也叫內部地址,屬于非注冊地址,專門給企業或組織機構內部使用。因特網分配編號委員會(IANA)保留了3塊IP地址做為私有IP地址:
10.0.0.0——10.255.255.255(10.0.0.0/8段)
172.16.0.0——172.16.255.255(172.16.0.0/16段)
192.168.0.0——192.168.255.255(192.168.0.0/16段)
以上三塊私有地址,我們企業內部就可以合理規劃使用。
3.公有IP地址:也叫全局地址,是指合法的IP地址,它是在網絡運營商處登記備案分配的IP地址,對外代表一個或多個內部局部地址,是全球統一可尋的地址。
4.地址池:地址池是有一些外部地址(全球唯一的IP地址)組合而成,我們稱這樣的一個地址集合為地址池。在內部網絡的數據包通過地址轉換到達外部網絡時,將會在地址池中選擇某個IP地址作為數據包的源IP地址,這樣可以有效的利用用戶的外部地址,提高訪問外部網絡的能力。
直白來講,地址池就是公網ip的組合,例如65.34.23.0/26等等。
5.NAT的分類:NAT有三種類型:靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網絡地址端口轉換NAPT(Port-Level NAT)。
二.NAT之簡介
1.NAT源轉換及源端口NAT:
內部地址訪問互聯網,互聯網無法對私有IP進行回包的問題,導致無法完成網絡通信,NAT是將內部地址轉換為公司、組織機構或家庭的公網IP與外部通信的技術手段,具體如下圖:
以簡單的家庭網絡為例(圖有點丑見諒)
上圖說明:
內網:192.168.1.0/24
網關:192.168.1.1
外網:PPPOE登錄驗證通過后,分配的地址為214.86.234.58,某互聯網網站服務器地址為219.86.24.45。
源NAT,內部終端主機在訪問219.86.24.45服務器時,
源地址為:192.168.1.100,源端口隨機
目的地址為:219.86.234.45,目的端口80
目的地址在收到192.168.1.100的訪問請求以后給源地址回包,結果找不到私網路由,因此回不來。
源NAT技術的做法是,在達到網關后,將源地址替換為WAN口地址,路由器建立會話表,數據包變為214.86.234.58 ,源端口為隨機端口,目的地址為219.86.24.45,目的端口為80,然后在服務器收到此數據包后,回包時,將源為219.86.24.45,源端口80,目的地址為214.86.234.58,端口為之前的隨機端口,回給互聯網,WAN收到數據包之后,查看會話表:
192.168.1.100---->214.86.24.45 <--------> 214.86.234.58----->219.86.24.45。因此根據此對應關系將服務器返回的數據包回給192.168.1.100.因此內網機器就能夠與外部通信。
但此時有一個問題,內網機器那么多,如果多個機器訪問同一個Web網站將會怎么樣呢?
因此PNAT,端口轉換技術將從端口區別內網機器的訪問會話記錄,如下圖所示,
NAT會話表將內網地址與外網ip的映射動態記錄下來(會話時間過期,將會被清除),然后根據端口來為內網機器回復來自互聯網服務的回包。
通過這樣的會話表,利用一個公網IP的不同端口來解決企業幾百人的上網問題,有個問題會在此出現,假如人數過多65535個端口利用光了,導致某部分人上不了網怎么辦?但一般不會出現這樣的問題,如果出現,那就利用2個公網ip進行源端口的轉換,不行就3個,4個,直到夠用為止,一般2-3個絕對夠用了。
靜態NAT,源轉換的話就沒必要了,因為一對一的映射根本解決不了內部終端上網的問題,主要應用在目的映射,或目的端口映射中,下面我們將簡單敘述一下目的NAT,及目的端口NAT。
2.NAT目的轉換及目的端口NAT:
目的NAT更多的是適用于公司或企業內部對外提供服務的情況,靜態NAT可以為公司提供的多種服務進行映射,從而將內網服務通過目的映射的方式提供給互聯網用戶。假如IP地址不多的話,可以利用端口進行服務的區分。
互聯網用戶來訪問我們提供的公網ip服務,我們將公網ip轉換為內網實際提供服務的服務器IP,這就是目的NAT,當然分為目的NAT和目的端口NAT。
例如:124.17.26.252 50005 ------訪問------->公網ip36.78.12.3:80端口,我們將公網ip36.78.12.3:80轉換為內網ip 192.168.20.100:80,實際提供的真實服務的ip為內網機器的ip。
為什么要用目的端口NAT,而不用目的NAT呢?
原因一:減少攻擊面,隱藏并保護內網。因為開放10個端口與開放100個端口的安全性是不一樣的,如果做目的NAT,那么36.78.12.3這個ip即為192.168.20.100這臺服務器,你們的服務操作系統有多少漏洞的補丁沒打,這個我就不說了,哈哈!
原因二:提高外網IP利用率。
例如:假如你做了一個目的NAT映射,36.78.12.3 ---------------192.168.10.100 ,那么互聯網用戶訪問36.78.12.3,就相當于訪問了192.168.10.100的內網服務器,而且,操作系統漏洞那么多,別人一掃描,暴露了很多端口,然后探測系統版本,中間件版本,數據庫版本,如此等等。當然,有人也許會說,那你在防火墻上做訪問控制不就好了,這樣做不就增加了工作量,增加了防火墻的負擔了嘛,因此,目的端口NAT,是省事省心的安全簡便的做法。而且,當運營商分配的IP地址較少時,你的內網對外發布的服務較多時,可以使用一個公網ip的不通端口來NAT不用的服務,如下所示:
如此等等。但為了服務安全,建議是服務盡量分離,因為某項服務的故障可能會影響其他服務,因此較為分散的服務是一種比較好的方式。
3.雙向NAT
Client 1 : A 202.1.1.2 --------------------> B server 1.1.1.1
轉換為
C:172.16.1.100 --------------> D server 172.16.1.2
這種雙向轉換,是將源ip及目的ip全部替換掉
源 202.1.1.2-------------訪問---------> 目的 1.1.1.1
轉換為
源 172.16.1.100 -------訪問---------> 目的 172.16.1.2
表面上A---訪問--->B ,實際上C----訪問----->D
在服務提供方做,隱藏內部網絡,只對外提供1.1.1.1即可,有人也許會問,那做目的NAT不就可以了嘛,為什么還要把源地址都要轉換掉,我想可能是內部網絡機密性較高,或者沒有做目的NAT而是內部應用服務,不允許任意訪問,而只允許172.16.1.100或者被轉換的源地址訪問吧。(此處感覺有點像VPN,從外部跳到內網訪問內部服務器的感覺)。
4.總結:
NAT技術不可否認是在ipv4地址資源的短缺時候起到了緩解作用;在減少用戶申請ISP服務的花費和提供比較完善的負載平衡功能等方面帶來了不少好處。但是在ipv4地址在以后幾年將會枯竭,NAT技術不能改變ip地址空間不足的本質。然而在安全機制上也潛在著威脅,在配置和管理上也是一個挑戰。如果要從根本上解決ip地址資源的問題,ipv6才是最根本之路。在ipv4轉換到ipv6的過程中,NAT技術確實是一個不錯的選擇,相對其他的方案優勢也非常明顯。