網(wǎng)絡(luò)地址轉(zhuǎn)換NAT原理

這是做路由器的時(shí)候,學(xué)習(xí)網(wǎng)絡(luò)地址轉(zhuǎn)換Network Address Translation后的一些理解整理刃鳄,主要通過實(shí)例和圖表的方式展示了NAT的工作原理和每個(gè)階段的狀態(tài)。本文的NAT是基本于Linux下的iptables命令實(shí)現(xiàn)。

1 概述

1.1 簡(jiǎn)介

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)地址不足的問題捂寿。

1.2 分類

NAT有三種類型:靜態(tài)NAT(Static NAT)、動(dòng)態(tài)地址NAT(Pooled NAT)孵运、網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Port-Level NAT)秦陋。

其中,網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Network Address Port Translation)則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個(gè)IP地址的不同端口上治笨。它可以將中小型的網(wǎng)絡(luò)隱藏在一個(gè)合法的IP地址后面驳概。NAPT與 動(dòng)態(tài)地址NAT不同,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個(gè)單獨(dú)的IP地址上旷赖,同時(shí)在該地址上加上一個(gè)由NAT設(shè)備選定的端口號(hào)顺又。

NAPT是使用最普遍的一種轉(zhuǎn)換方式,在HomeGW中也主要使用該方式等孵。它又包含兩種轉(zhuǎn)換方式:SNAT和DNAT稚照。

(1)源NAT(Source NAT,SNAT):修改數(shù)據(jù)包的源地址。源NAT改變第一個(gè)數(shù)據(jù)包的來源地址果录,它永遠(yuǎn)會(huì)在數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)之前完成上枕,數(shù)據(jù)包偽裝就是一具SNAT的例子。

(2)目的NAT(Destination NAT弱恒,DNAT):修改數(shù)據(jù)包的目的地址辨萍。Destination NAT剛好與SNAT相反,它是改變第一個(gè)數(shù)據(jù)懈的目的地地址返弹,如平衡負(fù)載锈玉、端口轉(zhuǎn)發(fā)和透明代理就是屬于DNAT。

20190215112818597.png

1.3 應(yīng)用

NAT主要可以實(shí)現(xiàn)以下幾個(gè)功能:數(shù)據(jù)包偽裝义起、平衡負(fù)載嘲玫、端口轉(zhuǎn)發(fā)和透明代理。

數(shù)據(jù)偽裝: 可以將內(nèi)網(wǎng)數(shù)據(jù)包中的地址信息更改成統(tǒng)一的對(duì)外地址信息并扇,不讓內(nèi)網(wǎng)主機(jī)直接暴露在因特網(wǎng)上去团,保證內(nèi)網(wǎng)主機(jī)的安全。同時(shí)穷蛹,該功能也常用來實(shí)現(xiàn)共享上網(wǎng)土陪。

端口轉(zhuǎn)發(fā): 當(dāng)內(nèi)網(wǎng)主機(jī)對(duì)外提供服務(wù)時(shí),由于使用的是內(nèi)部私有IP地址肴熏,外網(wǎng)無法直接訪問鬼雀。因此,需要在網(wǎng)關(guān)上進(jìn)行端口轉(zhuǎn)發(fā)蛙吏,將特定服務(wù)的數(shù)據(jù)包轉(zhuǎn)發(fā)給內(nèi)網(wǎng)主機(jī)源哩。

負(fù)載平衡: 目的地址轉(zhuǎn)換NAT可以重定向一些服務(wù)器的連接到其他隨機(jī)選定的服務(wù)器。(不是很明白)

失效終結(jié): 目的地址轉(zhuǎn)換NAT可以用來提供高可靠性的服務(wù)鸦做。如果一個(gè)系統(tǒng)有一臺(tái)通過路由器訪問的關(guān)鍵服務(wù)器励烦,一旦路由器檢測(cè)到該服務(wù)器當(dāng)機(jī),它可以使用目的地址轉(zhuǎn)換NAT透明的把連接轉(zhuǎn)移到一個(gè)備份服務(wù)器上泼诱。(如何轉(zhuǎn)移的?)

透明代理: NAT可以把連接到因特網(wǎng)的HTTP連接重定向到一個(gè)指定的HTTP代理服務(wù)器以緩存數(shù)據(jù)和過濾請(qǐng)求坛掠。一些因特網(wǎng)服務(wù)提供商就使用這種技術(shù)來減少帶寬的使用而不用讓他們的客戶配置他們的瀏覽器支持代理連接。(如何重定向的?)

2 原理

2.1 地址轉(zhuǎn)換

NAT的基本工作原理是治筒,當(dāng)私有網(wǎng)主機(jī)和公共網(wǎng)主機(jī)通信的IP包經(jīng)過NAT網(wǎng)關(guān)時(shí)屉栓,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進(jìn)行轉(zhuǎn)換。

如下圖所示耸袜,NAT網(wǎng)關(guān)有2個(gè)網(wǎng)絡(luò)端口友多,其中公共網(wǎng)絡(luò)端口的IP地址是統(tǒng)一分配的公共 IP,為202.20.65.5堤框;私有網(wǎng)絡(luò)端口的IP地址是保留地址域滥,為192.168.1.1纵柿。私有網(wǎng)中的主機(jī)192.168.1.2向公共網(wǎng)中的主機(jī)202.20.65.4發(fā)送了1個(gè)IP包(Dst=202.20.65.4,Src=192.168.1.2)。

2.png

當(dāng)IP包經(jīng)過NAT網(wǎng)關(guān)時(shí)骗绕,NAT Gateway會(huì)將IP包的源IP轉(zhuǎn)換為NAT Gateway的公共IP并轉(zhuǎn)發(fā)到公共網(wǎng)藐窄,此時(shí)IP包(Dst=202.20.65.4资昧,Src=202.20.65.5)中已經(jīng)不含任何私有網(wǎng)IP的信息酬土。由于IP包的源IP已經(jīng)被轉(zhuǎn)換成NAT Gateway的公共IP,Web Server發(fā)出的響應(yīng)IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被發(fā)送到NAT Gateway格带。

這時(shí)撤缴,NAT Gateway會(huì)將IP包的目的IP轉(zhuǎn)換成私有網(wǎng)中主機(jī)的IP,然后將IP包(Des=192.168.1.2叽唱,Src=202.20.65.4)轉(zhuǎn)發(fā)到私有網(wǎng)屈呕。對(duì)于通信雙方而言,這種地址的轉(zhuǎn)換過程是完全透明的棺亭。轉(zhuǎn)換示意圖如下虎眨。

3.png

如果內(nèi)網(wǎng)主機(jī)發(fā)出的請(qǐng)求包未經(jīng)過NAT,那么當(dāng)Web Server收到請(qǐng)求包镶摘,回復(fù)的響應(yīng)包中的目的地址就是私網(wǎng)IP地址嗽桩,在Internet上無法正確送達(dá),導(dǎo)致連接失敗凄敢。

2.2 連接跟蹤

在上述過程中碌冶,NAT Gateway在收到響應(yīng)包后,就需要判斷將數(shù)據(jù)包轉(zhuǎn)發(fā)給誰涝缝。此時(shí)如果子網(wǎng)內(nèi)僅有少量客戶機(jī)扑庞,可以用靜態(tài)NAT手工指定;但如果內(nèi)網(wǎng)有多臺(tái)客戶機(jī)拒逮,并且各自訪問不同網(wǎng)站罐氨,這時(shí)候就需要連接跟蹤(connection track)。如下圖所示:

4.png

在NAT Gateway收到客戶機(jī)發(fā)來的請(qǐng)求包后滩援,做源地址轉(zhuǎn)換岂昭,并且將該連接記錄保存下來,當(dāng)NAT Gateway收到服務(wù)器來的響應(yīng)包后狠怨,查找Track Table约啊,確定轉(zhuǎn)發(fā)目標(biāo),做目的地址轉(zhuǎn)換佣赖,轉(zhuǎn)發(fā)給客戶機(jī)恰矩。

2.3 端口轉(zhuǎn)換

以上述客戶機(jī)訪問服務(wù)器為例,當(dāng)僅有一臺(tái)客戶機(jī)訪問服務(wù)器時(shí)憎蛤,NAT Gateway只須更改數(shù)據(jù)包的源IP或目的IP即可正常通訊外傅。但是如果Client A和Client B同時(shí)訪問Web Server纪吮,那么當(dāng)NAT Gateway收到響應(yīng)包的時(shí)候,就無法判斷將數(shù)據(jù)包轉(zhuǎn)發(fā)給哪臺(tái)客戶機(jī)萎胰,如下圖所示碾盟。

5.png

此時(shí),NAT Gateway會(huì)在Connection Track中加入端口信息加以區(qū)分技竟。如果兩客戶機(jī)訪問同一服務(wù)器的源端口不同冰肴,那么在Track Table里加入端口信息即可區(qū)分,如果源端口正好相同榔组,那么在時(shí)行SNAT和DNAT的同時(shí)對(duì)源端口也要做相應(yīng)的轉(zhuǎn)換熙尉,如下圖所示。(這里的理解灰常重要)

6.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搓扯,一起剝皮案震驚了整個(gè)濱河市检痰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锨推,老刑警劉巖铅歼,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異换可,居然都是意外死亡椎椰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門锦担,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俭识,“玉大人,你說我怎么就攤上這事洞渔√酌模” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵磁椒,是天一觀的道長(zhǎng)堤瘤。 經(jīng)常有香客問我,道長(zhǎng)浆熔,這世上最難降的妖魔是什么本辐? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮医增,結(jié)果婚禮上慎皱,老公的妹妹穿的比我還像新娘。我一直安慰自己叶骨,他們只是感情好茫多,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忽刽,像睡著了一般天揖。 火紅的嫁衣襯著肌膚如雪夺欲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天今膊,我揣著相機(jī)與錄音些阅,去河邊找鬼。 笑死斑唬,一個(gè)胖子當(dāng)著我的面吹牛市埋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赖钞,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼腰素,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼聘裁!你這毒婦竟也來了雪营?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤衡便,失蹤者是張志新(化名)和其女友劉穎献起,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镣陕,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谴餐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呆抑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岂嗓。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鹊碍,靈堂內(nèi)的尸體忽然破棺而出厌殉,到底是詐尸還是另有隱情,我是刑警寧澤侈咕,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布公罕,位于F島的核電站,受9級(jí)特大地震影響耀销,放射性物質(zhì)發(fā)生泄漏楼眷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一熊尉、第九天 我趴在偏房一處隱蔽的房頂上張望罐柳。 院中可真熱鬧,春花似錦狰住、人聲如沸张吉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芦拿。三九已至士飒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔗崎,已是汗流浹背酵幕。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缓苛,地道東北人芳撒。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像未桥,于是被迫代替她去往敵國(guó)和親笔刹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容