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