天天看點

IPSEC ×××基本原理(二

上次用一個簡單的模型向大家描述了×××通訊的原理。IPSEC通過包封裝包的方法,通過Internet建立了一個通訊的隧道,通過這個通訊的隧道,就可以建立起網絡的連接配接。但是這個模型并非完美,仍然有很多問題需要解決。

在講述其他問題以前,我們對×××定義幾個概念。

×××節點:一個×××節點,可能是一台×××網關,也可能是一個用戶端軟體。在×××組網中間,屬于組網的一個通訊節點。它應該能夠連接配接 Internet,有可能是直接連接配接,比如adsl、電話撥号等等,也可能是通過nat方式,例如:小區寬帶、cdma上網、鐵通線路等等。

×××隧道:在兩個vpn節點之間建立的一個虛拟鍊路通道。兩個裝置内部的網絡,能夠通過這個虛拟的資料鍊路到達對方。與此相關的資訊是當時兩個×××節點的IP位址,隧道名稱、雙方的密鑰。

隧道路由:一個裝置可能和很多裝置建立隧道,那麼就存在一個隧道選擇的問題,即到什麼目的地,走哪一個隧道?

用前面的通訊模型來說,老李老張就是隧道節點,他們通過郵政系統建立的密碼通訊關系,就是一個資料隧道,小張和小李把信發給他們老爸的時候,他們老爸要作出抉擇,這封信怎麼封裝,封裝以後送給誰。假如還有一個老王和他們的兒子,也要通訊,這時候隧道路由就比較好了解了。送給小王的資料,就封裝給老王,送給小李的資料,就封裝發給老李。如果節點非常多,那麼這個隧道路由就會比較複雜。

了解了以上的問題,我們就知道,ipsec要解決的問題其實,可以分為以下幾個步驟:

&O1548; 找到對方vpn節點裝置,如果對方是動态IP位址,那麼必須能夠通過一種有效途徑能夠及時發現對方IP位址的變化。按照通訊模型,就是老李老張如果經常搬家的話,必須有一個有效的機制,能夠及時發現老李老張位址的變化。

&O1548;建立隧道,建立隧道說起來簡單,作起來不容易。如果兩個裝置都有合法的公網IP,那麼建立一個隧道是比較容易的。如果一方在nat之後,那就比較羅嗦了。一般通過内部的vpn節點發起一個udp連接配接,再封裝一次ipsec,送到對方,因為udp可以通過防火牆進行記憶,是以通過udp再封裝的ipsec 包,可以通過防火牆來回傳遞。

&O1548; 建立隧道以後,就确定隧道路由,即到哪裡去,走哪個隧道。很多×××隧道配置的時候,就定義了保護網絡,這樣,隧道路由就根據保護的網絡關系來決定。但是這喪失了一定的靈活性。

所有的ipsec ×××展開來講,實作的無非就是以上幾個要點,具體各家公司,各有各的做法。但是可以肯定,目前在市場銷售的×××,肯定都已經解決了以上的問題。

第一個問題 怎樣找到vpn節點裝置。

假如裝置都是動态撥号方式的話,那麼一定需要一個合适的靜态的第三方來進行解析。相當于兩個總是不停搬家的人,要合适找到對方,一定需要一個大家都認識的朋友,這個朋友不搬家,兩個人都能夠聯系上他。

靜态的第三方,常見的有3種實作方式:

通過網頁,這是深信服公司發明的一種技術,通過Web頁解析ip位址。大家可以登入一下[url]http://www.123cha.com/[/url] ,就可以查找到目前的IP位址。是以,動态的裝置,可以通過這種方式,把自己目前的IP位址送出上去。其他裝置可以通過網頁再查詢回來。這樣,裝置之間就可以互相通過這個網頁找到。因為網頁是相對固定的,是以這種方式能夠很有效地解決這個問題。這種方式能夠有效地分散集中認證的風險,而且很容易實作備份,屬于比較巧妙的一種解決方案。當然,對于Web頁可能存在比較多的攻擊,是以,要注意安全防範。

通過一個集中的伺服器,實作統一解析,然後給使用者進行分組。每個vpn裝置隻能看到同組的其他裝置,不能跨組通路。也可以通過目錄伺服器實作。這種方式适合集中式的×××,在企業總部部署伺服器,實作全局裝置的統一認證和管理。它不太适合零散使用者的認證,因為存在一個信任問題,客戶會置疑管理伺服器如果出現了問題,有可能其他裝置就能夠連接配接到自己的vpn域裡面。這種大型的集中vpn管理軟體,在很多國内外的vpn廠商都有專門的裝置或軟體,它除了能夠進行動态IP位址解析,還能夠實作線上認證等等功能。如果管理中心比較職能的話,可以集中制訂通訊政策,下面的vpn裝置配置參數比較少。

還有一種方式,是DDNS,即動态域名。動态域名是一種相對比較平衡的技術。Vpn裝置撥号以後,把自己目前的IP位址注冊給一級域名伺服器,并且更新自己的二級域名IP位址,internet其他使用者,通過這個二級域名就可以查找到它。例如:動态域名伺服器的名稱是99ip.net,是abc. 99ip.net,則vpn裝置通過一個軟體,送出給伺服器,把abc.99ip.net,漂移成目前的IP位址。但是,有時也會遇到dns緩存問題。 Vpn廠家如果自身提供ddns服務的話,就可以通過内部協定,把查詢速度加快,并且避免dns緩沖帶來的問題。

以上講述了三種動态IP位址的解析方法,國内一般廠家提供的無外乎這幾種方法。如果再有比較偏門的技術,也許就不是主流技術了。

解決了動态IP位址問題,按照之前的通訊模型,不考慮×××裝置很多的情況,就可以組網。是以,一旦這種技術被越來越多的廠家掌握,基于IPsec vpn裝置和軟體是一定會價格下降的。It技術從朝陽變成夕陽就是轉眼之間的事情。

第二個問題 隧道如何建立

解決了Ip位址動态尋址的問題,現在來說一下Nat穿越的問題。我們知道,Udp和TCP是可以穿越防火牆的。直接的IPsec封裝,不能穿越防火牆,因為防火牆需要更改端口資訊,這樣回來的資料包,才能轉到正确的内部主機。用UDP顯然比較合适,因為使用tcp的話,不僅三次握手占據時間很長,而且還有來回的确認。而實際上,這些工作屬于ipsec内部封裝的封包要幹的事情,放在這裡完成是不合适的。是以,用udp來封裝ipsec封包,以穿越nat,幾乎是唯一可以選擇的方案。

用udp穿越nat防火牆,這隻解決了問題的一半,因為這要求至少有一方處于Internet公網上面。有可路由的IP位址。而有時會發生兩個vpn節點都在nat之後的情景,這隻能通過第三方轉發來完成。即兩個裝置都可以與第三方裝置互通,第三方裝置為雙方進行轉發。這個可以通過之前的模型解析,老張老李不能直接通訊,他們都可以與老王通訊,老王就可以在中間進行轉發。凡是小李小張的通訊,交給他們老爸以後,老王最後再進行轉交。這是隧道路由的概念就很清晰了,不能一個隧道直接到達,可以在幾個隧道之間轉發。

是以,IPsec vpn并不神秘。所有核心的工作無非就是圍繞以下幾個方面展開:

&O1548; 如何找到與本×××節點相關的其他節點。

&O1548; 協商出一個可以通訊的隧道。如果是nat之後,應該怎麼處理。

&O1548; 建立隧道路由表,确定不同的目标位址,走不同的隧道。

假定以上的問題都得到了解決,通過某種方式,動态IP位址的×××節點可以互相找到對方,并且能夠建立隧道,是以也能夠實作隧道路由通訊。是不是一個完整的×××就能夠實作了呢??

答案仍然是否,解決了以上問題,并不代表一個很好用的×××産品,仍然有其他很多問題。之後的問題是圍繞着複雜性展開的,簡單的原理實作之後,剩下的工作就是要解決掉全部相關的邊緣問題。才能夠實作一個好用的東西。能夠用是一回事,好用是另外一回事。

繼續閱讀