成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iptables與stun

運維 系統運維
iptables 是與最新的 2.6.x 版本Linux 內核集成的 IP 信息包過濾系統。本文介紹下iptables與stun的知識。

iptablesstun是一對朋友,互相幫忙,互相補短!

  iptables與stun

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

  A機器在私網(192.168.0.4)

  NAT服務器(210.21.12.140)

  B機器在公網(210.15.27.166)

  C機器在公網(210.15.27.140)

  現在,A機器連接過B機器,假設是 A(192.168.0.4:5000)-> NAT(轉換后210.21.12.140:8000)-> B(210.15.27.166:2000)。

  同時A從來沒有和C通信過。

  則對于不同類型的NAT,有下列不同的結果:

  Full Cone NAT:C發數據到210.21.12.140:8000,NAT會將數據包送到A(192.168.0.4:5000)。因為NAT上已經有了192.168.0.4:5000到210.21.12.140:8000的映射。

  Restricted Cone:C無法和A通信,因為A從來沒有和C通信過,NAT將拒絕C試圖與A連接的動作。但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會送到A的5000端口上。

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

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

  現針對Symmetric NAT舉例說明(承接前例):

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

  如果此時A機器(192.168.0.4:5000)還想連接C機器(210.15.27.140:2000),則NAT上產生一個新的映射,對應的轉換可能為A(192.168.0.4:5000)-> NAT(轉換后210.21.12.140:8001)-> C(210.15.27.140:2000)。此時,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通信。

  通過上面的例子,我們應該清楚了Stun協議對NAT進行分類的依據。那么,我們現在根據上述分類標準(或例子),來簡要分析一下iptables的工作原理,看看他又是屬于哪種NAT呢?

  首先,我們去網上下載一個使用Stun協議檢測NAT的工具,網址在http://sourceforge.net/projects/stun/,使用該工具對iptables的檢測結果是Port restricted NAT detected。

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

  iptables在轉換地址時,遵循如下兩個原則:

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

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

  仍以前例說明如下:

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

  如果此時A機器(192.168.0.4:5000)還想連接C機器(210.15.27.140:2000),則NAT上產生一個新的映射,但對應的轉換仍然有可能為A(192.168.0.4:5000)-> NAT(轉換后210.21.12.140:5000)-> C(210.15.27.140:2000)。這是因為NAT(轉換后210.21.12.140:5000)-> B(210.15.27.166:2000)和NAT(轉換后210.21.12.140:5000)-> C(210.15.27.140:2000)這兩個socket不重復。因此,對于iptables來說,這既是允許的(第2條原則)、也是必然的(第1條原則)。

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

  下面仍以前例接著分析:

  在前例中增加D機器在私網(192.168.0.5)

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

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

  由iptables轉換原則可知,上述兩個轉換是允許且必然的。

  如果此時A機器(192.168.0.4:5000)還想連接C機器(210.15.27.140:2000),則NAT上產生一個新的映射,但對應的轉換則變為A(192.168.0.4:5000)-> NAT(轉換后210.21.12.140:5001)-> C(210.15.27.140:2000)。這是因為,如果仍然將其轉換為210.21.12.140:5000的話,則其所構成的socket(210.21.12.140:5000->210.15.27.140:2000)將和D->C的socket一致,產生沖突,不符合iptables的第2條原則。(注意,此處以5001表示轉換后不同的端口,但事實上,iptables卻并不按照內部端口+1的原則來產生新的端口)。

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

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

  為什么會出現上述矛盾的情況呢,關鍵在于Stun協議和iptables對映射的理解不同。Stun協議認為,一個映射的要素是:內部地址端口和NAT轉換后地址端口的組合。而在iptables看來,一個映射的要素是:NAT轉換后地址端口和外部目標地址端口的組合。

  下面,我們再來分析一下iptables的端口受限的屬性,我們舉一個反例證明之,仍以前例說明如下:

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

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

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

  所以,iptables是貨真價實的Symmetric NAT。

  附:

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

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

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

【編輯推薦】

責任編輯:趙鵬 來源: 網絡轉載
相關推薦

2011-03-17 17:24:48

2011-03-17 15:32:25

2010-07-14 17:12:38

STUN協議

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-18 09:26:13

Iptables規則

2011-03-17 17:19:24

iptables

2011-03-15 09:59:59

iptables實例

2021-10-13 16:00:53

KubeProxyIptables

2011-03-16 11:17:56

IptablesICMP

2011-03-17 17:45:45

iptables規則

2011-03-15 09:46:31

2011-03-15 16:26:46

iptablesnat

2011-03-15 14:01:13

2011-03-14 14:40:11

iptables編譯

2011-03-15 16:34:36

Iptables性能

2011-09-09 10:37:27

UbuntuinterfaceStun server

2011-03-14 14:40:08

Iptables命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色欧美综合| 欧美性猛交一区二区三区精品 | 国产精品久久片 | 欧美在线一区二区三区 | 国产精品久久久久久久久久久久冷 | 国产精久久久久久久妇剪断 | 国产激情一区二区三区 | 欧美日韩在线一区 | a级片在线 | 99久久久久久久久 | 国产农村一级片 | 国产一区视频在线 | 国产欧美精品 | 亚洲一区中文 | 成人超碰| 亚洲欧美日本国产 | 国产又色又爽又黄又免费 | 天天综合成人网 | 精品无码久久久久久久动漫 | 亚洲成人av | 国产自产21区| 久久久国产精品 | 久久国产视频网站 | 国产成人精品一区二三区在线观看 | 欧美日韩在线视频一区 | 久久www免费人成看片高清 | 亚洲在线一区二区 | 亚洲精品视频在线看 | 国产精品色一区二区三区 | 久久久久国产精品一区二区 | 日韩精品视频中文字幕 | 亚洲va欧美va人人爽午夜 | 色婷婷综合久久久中字幕精品久久 | 天天拍天天射 | 99亚洲精品 | 99久久婷婷国产综合精品 | 欧美中文字幕一区二区三区亚洲 | ririsao久久精品一区 | 99热在这里只有精品 | 久久大| 欧美成视频在线观看 |