偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

iptables與stun

運(yùn)維 系統(tǒng)運(yùn)維
iptables 是與最新的 2.6.x 版本Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。本文介紹下iptables與stun的知識(shí)。

iptablesstun是一對(duì)朋友,互相幫忙,互相補(bǔ)短!

  iptables與stun

  Stun協(xié)議(Rfc3489、詳見http://www.ietf.org/rfc/rfc3489.txt)將NAT粗略分為4種類型,即Full Cone、Restricted Cone、Port Restricted Cone和Symmetric。舉個(gè)實(shí)際例子來說明這四種NAT的區(qū)別:

  A機(jī)器在私網(wǎng)(192.168.0.4)

  NAT服務(wù)器(210.21.12.140)

  B機(jī)器在公網(wǎng)(210.15.27.166)

  C機(jī)器在公網(wǎng)(210.15.27.140)

  現(xiàn)在,A機(jī)器連接過B機(jī)器,假設(shè)是 A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:8000)-> B(210.15.27.166:2000)。

  同時(shí)A從來沒有和C通信過。

  則對(duì)于不同類型的NAT,有下列不同的結(jié)果:

  Full Cone NAT:C發(fā)數(shù)據(jù)到210.21.12.140:8000,NAT會(huì)將數(shù)據(jù)包送到A(192.168.0.4:5000)。因?yàn)镹AT上已經(jīng)有了192.168.0.4:5000到210.21.12.140:8000的映射。

  Restricted Cone:C無(wú)法和A通信,因?yàn)锳從來沒有和C通信過,NAT將拒絕C試圖與A連接的動(dòng)作。但B可以通過210.21.12.140:8000與A的192.168.0.4:5000通信,且這里B可以使用任何端口與A通信。如:210.15.27.166:2001 -> 210.21.12.140:8000,NAT會(huì)送到A的5000端口上。

  Port Restricted Cone:C無(wú)法與A通信,因?yàn)锳從來沒有和C通信過。而B也只能用它的210.15.27.166:2000與A的192.168.0.4:5000通信,因?yàn)锳也從來沒有和B的其他端口通信過。該類型NAT是端口受限的。

  Symmetric NAT:上面3種類型,統(tǒng)稱為Cone NAT,有一個(gè)共同點(diǎn):只要是從同一個(gè)內(nèi)部地址和端口出來的包,NAT都將它轉(zhuǎn)換成同一個(gè)外部地址和端口。但是Symmetric有點(diǎn)不同,具體表現(xiàn)在:只要是從同一個(gè)內(nèi)部地址和端口出來,且到同一個(gè)外部目標(biāo)地址和端口,則NAT也都將它轉(zhuǎn)換成同一個(gè)外部地址和端口。但如果從同一個(gè)內(nèi)部地址和端口出來,是到另一個(gè)外部目標(biāo)地址和端口,則NAT將使用不同的映射,轉(zhuǎn)換成不同的端口(外部地址只有一個(gè),故不變)。而且和Port Restricted Cone一樣,只有曾經(jīng)收到過內(nèi)部地址發(fā)來包的外部地址,才能通過NAT映射后的地址向該內(nèi)部地址發(fā)包。

  現(xiàn)針對(duì)Symmetric NAT舉例說明(承接前例):

  A機(jī)器連接過B機(jī)器,假使是 A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:8000)-> B(210.15.27.166:2000)

  如果此時(shí)A機(jī)器(192.168.0.4:5000)還想連接C機(jī)器(210.15.27.140:2000),則NAT上產(chǎn)生一個(gè)新的映射,對(duì)應(yīng)的轉(zhuǎn)換可能為A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:8001)-> C(210.15.27.140:2000)。此時(shí),B只能用它的210.15.27.166:2000通過NAT的210.21.12.140:8000與A的192.168.0.4:5000通信, C也只能用它的210.15.27.140:2000通過NAT的210.21.12.140:8001與A的192.168.0.4:5000通信,而B或者C的其他端口則均不能和A的192.168.0.4:5000通信。

  通過上面的例子,我們應(yīng)該清楚了Stun協(xié)議對(duì)NAT進(jìn)行分類的依據(jù)。那么,我們現(xiàn)在根據(jù)上述分類標(biāo)準(zhǔn)(或例子),來簡(jiǎn)要分析一下iptables的工作原理,看看他又是屬于哪種NAT呢?

  首先,我們?nèi)ゾW(wǎng)上下載一個(gè)使用Stun協(xié)議檢測(cè)NAT的工具,網(wǎng)址在http://sourceforge.net/projects/stun/,使用該工具對(duì)iptables的檢測(cè)結(jié)果是Port restricted NAT detected。

  我們先不要急著接受這個(gè)檢測(cè)結(jié)果,還是先來分析一下iptables的工作原理吧!

  iptables在轉(zhuǎn)換地址時(shí),遵循如下兩個(gè)原則:

  1、盡量不去修改源端口,也就是說,ip偽裝后的源端口盡可能保持不變。

  2、更為重要的是,ip偽裝后只需保證偽裝后的源地址/端口與目標(biāo)地址/端口(即所謂的socket)唯一即可。

  仍以前例說明如下:

  A機(jī)器連接過B機(jī)器,假使是 A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> B(210.15.27.166:2000)。(注意,此處NAT遵循原則1、故轉(zhuǎn)換后端口沒有改變)

  如果此時(shí)A機(jī)器(192.168.0.4:5000)還想連接C機(jī)器(210.15.27.140:2000),則NAT上產(chǎn)生一個(gè)新的映射,但對(duì)應(yīng)的轉(zhuǎn)換仍然有可能為A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> C(210.15.27.140:2000)。這是因?yàn)镹AT(轉(zhuǎn)換后210.21.12.140:5000)-> B(210.15.27.166:2000)和NAT(轉(zhuǎn)換后210.21.12.140:5000)-> C(210.15.27.140:2000)這兩個(gè)socket不重復(fù)。因此,對(duì)于iptables來說,這既是允許的(第2條原則)、也是必然的(第1條原則)。

  在該例中,表面上看起來iptables似乎不屬于Symmetric NAT,因?yàn)樗雌饋聿环蟂ymmetric NAT的要求:如果從同一個(gè)內(nèi)部地址和端口出來,是到另一個(gè)目標(biāo)地址和端口,則NAT將使用不同的映射,轉(zhuǎn)換成不同的端口(外部地址只有一個(gè),故不變)。相反,倒是符合除Symmetric NAT外的三種Cone NAT的要求:從同一個(gè)內(nèi)部地址和端口出來的包,NAT都將它轉(zhuǎn)換成同一個(gè)外部地址和端口。加上iptables具有端口受限的屬性(這一點(diǎn)不容置疑,后面舉反例證明之),所以好多檢測(cè)工具就把iptables報(bào)告為Port restricted NAT類型了。

  下面仍以前例接著分析:

  在前例中增加D機(jī)器在私網(wǎng)(192.168.0.5)

  A機(jī)器連接過B機(jī)器,假使是 A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> B(210.15.27.166:2000)

  D機(jī)器連接過C機(jī)器,假使是 D(192.168.0.5:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> C(210.15.27.140:2000)

  由iptables轉(zhuǎn)換原則可知,上述兩個(gè)轉(zhuǎn)換是允許且必然的。

  如果此時(shí)A機(jī)器(192.168.0.4:5000)還想連接C機(jī)器(210.15.27.140:2000),則NAT上產(chǎn)生一個(gè)新的映射,但對(duì)應(yīng)的轉(zhuǎn)換則變?yōu)锳(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5001)-> C(210.15.27.140:2000)。這是因?yàn)椋绻匀粚⑵滢D(zhuǎn)換為210.21.12.140:5000的話,則其所構(gòu)成的socket(210.21.12.140:5000->210.15.27.140:2000)將和D->C的socket一致,產(chǎn)生沖突,不符合iptables的第2條原則。(注意,此處以5001表示轉(zhuǎn)換后不同的端口,但事實(shí)上,iptables卻并不按照內(nèi)部端口+1的原則來產(chǎn)生新的端口)。

  在本例中,從同一個(gè)內(nèi)部地址和端口(192.168.0.4:5000)出來,到另一個(gè)目標(biāo)地址和端口,則NAT使用了不同的映射,轉(zhuǎn)換成不同的端口。顯然,該現(xiàn)象又滿足了Symmetric NAT的要求,同時(shí)不能夠滿足Cone NAT的要求。

  我們?cè)賮砘仡櫼幌耂tun協(xié)議對(duì)Cone NAT的要求:所有(或只要是)從同一個(gè)內(nèi)部地址和端口出來的包,NAT都將它轉(zhuǎn)換成同一個(gè)外部地址和端口。雖然iptables在大部分情況下滿足“從同一個(gè)內(nèi)部地址和端口出來的包,都將把他轉(zhuǎn)換成同一個(gè)外部地址和端口”這一要求,但它不能在所有情況侶閼庖灰蟆K岳礪凵希頤薔橢荒馨裪ptables歸為Symmetric NAT了。(但在事實(shí)上,按照前面例子或者Stun協(xié)議里給出的Discovery Process,大部分情況下對(duì)iptables的檢測(cè)結(jié)果必然是Port restricted NAT)

  為什么會(huì)出現(xiàn)上述矛盾的情況呢,關(guān)鍵在于Stun協(xié)議和iptables對(duì)映射的理解不同。Stun協(xié)議認(rèn)為,一個(gè)映射的要素是:內(nèi)部地址端口和NAT轉(zhuǎn)換后地址端口的組合。而在iptables看來,一個(gè)映射的要素是:NAT轉(zhuǎn)換后地址端口和外部目標(biāo)地址端口的組合。

  下面,我們?cè)賮矸治鲆幌耰ptables的端口受限的屬性,我們舉一個(gè)反例證明之,仍以前例說明如下:

  A機(jī)器連接過B機(jī)器,假使是 A(192.168.0.4:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> B(210.15.27.166:2000)

  D機(jī)器連接過C機(jī)器,假使是 D(192.168.0.5:5000)-> NAT(轉(zhuǎn)換后210.21.12.140:5000)-> C(210.15.27.140:2000)

  現(xiàn)假設(shè)iptables不具有端口受限的屬性,則另一E機(jī)器在公網(wǎng)(210.15.27.153:2000)或C(210.15.27.140:2001)向210.21.12.140:5000發(fā)包的話,應(yīng)該能夠發(fā)到內(nèi)部機(jī)器上。但事實(shí)是,當(dāng)這個(gè)包到達(dá)NAT(210.21.12.140:5000)時(shí),NAT將不知道把這個(gè)包發(fā)給A(192.168.0.4:5000)還是D(192.168.0.5:5000)。顯然,該包只能丟棄,至此,足以證明iptables具有端口受限的屬性。

  所以,iptables是貨真價(jià)實(shí)的Symmetric NAT。

  附:

  1、Stun全稱Simple Traversal of UDP Through NATs,所以本文所涉及的包,皆為UDP包。

  2、本文雖然是針對(duì)linux下iptables的分析,但倘若把本文中關(guān)鍵詞“iptables”換成“Win2000下的ics或nat”,則本文的分析過程完全適用于Win2000下的ics或nat。即理論上Win2000下的ics或nat也是貨真價(jià)實(shí)的Symmetric NAT,但實(shí)際上,大部分情況下,檢測(cè)結(jié)果必然是Port restricted NAT。為什么Win2000下的ics或nat和iptables的分類是如此一致呢?因?yàn)閃in2000下的ics或nat在進(jìn)行NAT轉(zhuǎn)換時(shí),遵循和iptables完全一樣的兩個(gè)原則。

通過文章,我們可以清楚的知道iptables與stun的知識(shí)。希望對(duì)你們有用!

【編輯推薦】

責(zé)任編輯:趙鵬 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-03-17 17:24:48

2011-03-17 15:32:25

2010-07-14 17:12:38

STUN協(xié)議

2011-03-15 15:47:25

iptables安裝命令

2011-03-15 11:05:03

2011-03-15 17:25:38

2011-03-15 09:10:42

Linux防火墻Iptables

2011-03-17 17:19:24

iptables

2011-03-15 09:59:59

iptables實(shí)例

2011-03-18 09:26:13

Iptables規(guī)則

2021-10-13 16:00:53

KubeProxyIptables

2011-03-17 17:45:45

iptables規(guī)則

2011-03-15 16:26:46

iptablesnat

2011-03-15 14:01:13

2011-03-15 09:46:31

2011-03-14 14:40:11

iptables編譯

2011-03-15 16:34:36

Iptables性能

2011-03-14 14:40:08

Iptables命令

2011-03-15 09:14:29

2011-03-15 10:09:11

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)