自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenVPN高級路由技術(shù)

網(wǎng)絡(luò) 路由交換
OpenVPN內(nèi)部實現(xiàn)了一個路由器的功能,其源代碼的multi_get_instance_by_virtual_addr函數(shù)執(zhí)行路由查找的工作,這種路由是OpenVPN的內(nèi)部路由,也就是說這種路由是OpenVPN配置并查找的,和外部的系統(tǒng)路由是完全獨立的。

OpenVPN內(nèi)部路由和系統(tǒng)的路由之間的區(qū)別在于,系統(tǒng)路由完全照著最長前綴匹配原則,找到路由之后,將數(shù)據(jù)包從對應(yīng)的網(wǎng)卡接口轉(zhuǎn)發(fā)出去。而 OpenVPN內(nèi)部的路由雖然最終也是決定是否轉(zhuǎn)發(fā)并且往哪里轉(zhuǎn)發(fā)數(shù)據(jù)包,然而這個“是否轉(zhuǎn)發(fā)”以及“往哪里轉(zhuǎn)發(fā)”是和系統(tǒng)路由大大不同的,OpenVPN是否轉(zhuǎn)發(fā)數(shù)據(jù)包依照的其內(nèi)部的一張路由表而和系統(tǒng)的路由表沒有關(guān)系,往哪里轉(zhuǎn)發(fā)呢?其實是往兩個地方轉(zhuǎn)發(fā),根據(jù)查找內(nèi)部路由得到的結(jié)果,如果目的地址不是其它OpenVPN客戶端的或者這些OpenVPN客戶端后面的網(wǎng)絡(luò)主機的,那么就往自己的虛擬網(wǎng)卡中轉(zhuǎn)發(fā),如果目的地址是其它 OpenVPN客戶端的或者其后面網(wǎng)絡(luò)的,那么在開啟C2C的情況下,直接轉(zhuǎn)發(fā)到對應(yīng)OpenVPN的socket,轉(zhuǎn)發(fā)前用對應(yīng)的socket實例的安全參數(shù)進行OpenVPN協(xié)議封裝,C2C是不是很像linux中的ip_forward內(nèi)核參數(shù)呢?

注意,前面的闡述中,我一直都在說目的地址,而沒有說目的IP地址,這是因為OpenVPN的內(nèi)部路由不僅僅是IP路由,在tap模式下,它的內(nèi)部路由實際上是鏈路層的路由,這時OpenVPN服務(wù)器不是一臺路由器,而是一臺交換機,還是一臺可以“動態(tài)學(xué)習(xí)MAC地址”的交換機,因此tap模式下,OpenVPN內(nèi)部路由其實就是交換機的鏈路層路由,其路由表其實就類似于交換機的MAC地址表。

OpenVPN內(nèi)部路由的職責(zé)有:

1.抉擇是否轉(zhuǎn)發(fā)到來的已經(jīng)解除了OpenVPN封裝的載荷數(shù)據(jù)包。也就是載荷包的發(fā)起者是否在OpenVPN的策略范圍內(nèi);

2.處理不同OpenVPN客戶端之間的通信以及不同客戶端后面所掛接的網(wǎng)段主機之間的通信。也就是說在上述這些主機之間路由數(shù)據(jù)包,注意這里所謂的路由并不是協(xié)議棧中的IP路由,而是OpenVPN內(nèi)部的路由。

OpenVPN可以通過內(nèi)部路由擴展成一個巨大的網(wǎng)絡(luò),該網(wǎng)絡(luò)直接穿越不安全的網(wǎng)絡(luò)區(qū)域,比如互聯(lián)廣域網(wǎng)或者城域網(wǎng),是這個擴展而成的巨大網(wǎng)絡(luò)真正的成了虛擬的和專用的,這就是OpenVPN對于網(wǎng)絡(luò)拓撲支持最強大的地方,OpenVPN另外的強大之處前面的文章都快說爛了,比如和SSL結(jié)合,和PKI結(jié)合等等,在和主機網(wǎng)絡(luò)協(xié)議棧結(jié)合處,OpenVPN使用了虛擬網(wǎng)卡,這也快說爛了,因此本系列文章著重談OpenVPN的強大路由功能。如果能徹底理解這個,那么相信你已經(jīng)理解了其它,進而閱讀源代碼和修改定制源代碼已經(jīng)不是什么困難事了,因此本系列文章不再冗余的分析源碼。

那么,被OpenVPN擴展而成的網(wǎng)絡(luò)到底是什么樣子呢?這要看你使用tap模式還是tun模式了:

tap模式下,VPN節(jié)點(多個客戶端和一個服務(wù)器端)組成了一個以太網(wǎng),而VPN服務(wù)器就相當(dāng)于一臺以太網(wǎng)交換機。由于以太網(wǎng)是IP協(xié)議棧下層的封裝,tap模式下的所有VPN節(jié)點以及節(jié)點后被bridge的節(jié)點組成了一個大的以太網(wǎng)而不是IP網(wǎng)絡(luò),OpenVPN內(nèi)部路由是作用于MAC地址的,對于任意來源IP,OpenVPN內(nèi)部路由都是直通的,寫入虛擬網(wǎng)卡后,由系統(tǒng)路由判決。因此tap模式下,如果需要各個VPN節(jié)點后面的網(wǎng)絡(luò)之間達到 IP互通的效果,那就必須要么做NAT映射,將VPN節(jié)點后面的網(wǎng)絡(luò)NAT到VPN節(jié)點,要么輔助以系統(tǒng)的IP路由,而這些配置很復(fù)雜,很難維護。見下圖:

tun模式下,VPN節(jié)點(多個客戶端和一個服務(wù)器端)以及其它允許接入的網(wǎng)絡(luò)(通過iroute配置)組成了一個IP網(wǎng)絡(luò),而VPN服務(wù)器就相當(dāng)于一臺IP路由器。tun模式下的所有VPN節(jié)點以及節(jié)點后被iroute內(nèi)部路由以及系統(tǒng)路由指向的節(jié)點組成了一個大的IP網(wǎng)。此模式下,內(nèi)部路由和系統(tǒng)路由共同起作用,OpenVPN的事件機制可以將這二者無縫結(jié)合。見下圖:

OpenVPN事實上通過定義良好的銜接口和既有的優(yōu)秀框架結(jié)合,這些銜接口分別是SSL協(xié)議/PKI,虛擬網(wǎng)卡/主機協(xié)議棧,內(nèi)部路由/事件機制/系統(tǒng) IP路由。OpenVPN既做到了機制的完整,和外部框架的結(jié)合,又給了用戶靈活的配置,因此,OpenVPN很棒。

原文博客:http://blog.csdn.net/dog250/article/details/6979231

責(zé)任編輯:張存 來源: 博客
相關(guān)推薦

2010-08-24 10:09:37

路由防止掉線

2009-12-28 15:04:40

2011-02-22 15:06:48

openVPN

2012-02-23 23:20:46

2010-08-16 11:26:00

軟路由技術(shù)

2011-04-15 10:01:39

2010-09-01 22:12:53

2010-08-16 12:35:19

認知網(wǎng)絡(luò)路由

2010-08-17 09:55:07

路由器技術(shù)

2010-10-08 15:50:18

無線路由高級選項

2010-12-22 11:27:23

2009-12-22 14:23:02

路由選擇技術(shù)

2014-04-01 13:29:44

Android高級模糊技術(shù)

2009-12-15 15:54:11

路由器技術(shù)

2009-11-11 16:56:46

VRRP路由技術(shù)

2009-11-11 17:34:56

CEF路由技術(shù)

2010-08-16 10:42:18

自組織網(wǎng)絡(luò)

2023-07-18 15:58:29

NodeJS開發(fā)

2013-05-30 13:06:26

交換技術(shù)高級交換技術(shù)

2016-05-16 09:56:01

點贊
收藏

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