在Linux微型路由器上的VPN設計
8
0
0
全文
(2) 表 1 VPN Tunneling 種類表 Tunneling type. OSI Layer. 說明. Point to Point Tunnel. 2. 由 3Com 和微軟共同發展的遂道技術. Layer 2 Tunneling Protocol(L2TP). 2. 將 PPTP 和 Layer 2 Forwarding 合併. IP Security Protocol(IPsec). 3. 由 IETF 所制定的標準安全通道技術. Crypto IP Encapsulation(CIPE). 3. 一個開放性原使碼計劃. Protocol(PPTP). 其中 IPsec 和 CIPE 的技術都建構在 Layer. 這個架構本文就稱為微型虛擬私有網路路由. 3,這使得使用者可以使用 Internet 的多點傳輸. 器(VPN-µRouter) 。同時會在第四節部份分別. 功能(包括 Internet、Intranet、Extranet、Remote. 測 試 LRP 的 VPN 微 型 路 由 器 和 本 文 的. Access 等)。相對的,PPTP 及 L2TP 的技術建. VPN-µRouter,針對傳輸效能上的比較做討論。. 構在 Layer 2,因此它們只能執行點對點傳輸 功能,使用時受到相當的拘限。但是以效能來 說,架構在 Layer 2 上的 PPTP 及 L2TP 會比 在 Layer 3 上處理的較快。. 三、設計實作 如前面提到,本文將會使用兩種 VPN. IPsec[3]是個標. Tunnel 技術來實現本文的 VPN-µRouter。IPsec. 準,具有高支持度;CIPE 則是一個實作 VPN. 部分是以最新虛擬私有網路技術套件. Tunnel 的開放性原始碼計劃[6],但是兩者除了. FreeS/Wan[7]包裝在本文開發的 VPN-µRouter. 使 用不 同加密 演算 法以外 ,以 及採用 不 同. 中。此 VPN-µRouter 可保障 net-to-net 的安全. Tunnel 傳輸模式(TCP/UDP),基本上具有相似. 服務品質,提供符合最新 IETF 制定的 IPsec. 的 VPN 架構。目前虛擬私有網路的路由器多. 標準。讓使用者透過專屬的私人通道與遠方的. 半皆為特定嵌入式系統開發的軟體,而現有以. 友人或公司進行私密的通訊,其實作架構簡圖. 微型路由器為基礎的 LRP 也具有 IPsec-VPN. 如下圖 1,2 所示:. 的功能[2],但採用比較舊的規格且僅限於初步 支援,另外核心部份也是採用比較舊的 2.2.X 版本,對於擴充性上會有一定的影響。而本文 所實作的架構和 LRP 所實作的 VPN 架構比 較,不但是擴充性更佳且整體的功能也更為完. 至於 CIPE 部份,則採用 CIPE 計劃所提 供 實 作 CIPE 技 術 的 VPN 套 件 來 實 作 VPN-µRouter。實作架構和 IPsec 部份幾乎一 樣,而封裝如圖 3. 整。特別是為達到多點傳輸功能,所以本設計 架構同時加入 IPsec 和 CIPE 來架構 VPN。而. 圖 1. 不同傳輸模式封裝架構簡圖.
(3) 圖 2. 實作架構簡圖. 圖 3. CIPE 封裝示意圖 心碼中不必要的功能、模組都移除,將核心精. 四、測試與分析. 簡成最佳化(建議約為 550k~750k),在這裡我 們並不對編譯核心做太多的介紹。其次是製作. 4.1VPN-µRouter 建置 本文架構基礎植基於 Linux 系統,因此我 們一樣需要在微型路由器系統下實作虛擬的 Linux 目錄環境,然後將預先準備的程式、核 心、函式庫等做成 LRP 套件寫入到 1.44mb 的 軟式磁碟片中並針對硬體和網路環境進行設 定。首先需要有 boot loader 程式負責啟動核心 和 載 入 root filesystem , 此 處 我 們 使 用 Syslinux. 。. Syslinux. 是. 一. 個. 在. MS-DOS/WINDOWS FAT filesystem 下載入 Linux 操作系統的程式,它可以在微型 Linux 下用於載入分散式套件或 raw image。首先我 們將一軟式磁碟片做高度度格式化並將 syslinux 載入軟式磁碟片中。接著用文字編輯 器產生一個名為 syslinux.cfg 的系統開機設定 檔案並編輯其相關參數設定及開機程序。. 虛 擬私 有網路 部份 ,這裡 我們 所採用 的 是 FreeS/Wan[7],FreeS/Wan 模組實作時可以選 擇編成模組或直接編入核心。產生了支持虛擬 私有網路部份的核心後,尚需要一些工具程式 (例如 BusyBox[8]、uClibc[9])。為減少磁碟的 使用空間,我們選擇 uClibc 函式庫來編譯這些 工具程式。接著我們用 uClibc 編譯一個靜態連 結的 BusyBox,將 BusyBox 編譯成靜態連結的 原因就是不希望過份依賴 uClibc 而增加磁碟 的 使 用 空 間 。 BusyBox 它 包 含 了 七 十 多 種 Linux 標準的工具程式,它所需要的磁碟空間 僅僅只有幾百 Kbytes。 在經由 syslinux 啟動後,先前製作的 Linux Kernel 將會被載入記憶體中。Linux Kernel 一 旦載入完畢之後,便開始初始化系統所有硬體 設備,接著掛載 root filesystem 和其他自訂的. 接 下來 我們需 要建 置 Linux Kernel 和. LRP 模組。此時 Linux Kernel 必須知道從哪裡. filesystem。首先取得一個新的核心原始碼並進. 可以找到 root filesystem (一般系統磁碟片的. 行編譯,因受微型路由器空間限制故將原始核. root filesystem 會被製作成以 ramdisk 執行方式.
(4) 到現在為止,算是把兩種不同 VPN Tunnel. 的影像檔)。 在開始建造 root filesystem 之前必須成為. 技術的 VPN-µRouter 完成。剩下的就是如何讓. super uesr 也就是 root,其次為 root filesystem. 它啟動和相關模擬測試比較。首先開始的是. 建 一 個 目 錄 叫 做 floppy-linux , 然 後 進 入. IPsec 的部份,將先前制作的 VPN-µRouter 磁. floppy-linux 內為 root filesystem 建立一些相關. 片放入磁碟機中並開機。此時若一切無誤將會. 目錄如下:. 進入文字介面模式,系統中若有裝設防火牆或. bin, etc, sbin, usr, lib, dev, var, tmp, root, proc, mnt 。各目錄功能在檔案架構系統文件. 其它網路服務(如:NAT),在此均要為其做相關 設定,一個 IPsec.conf 基本設定如表 2:. 中有詳述[http://www.pathname.com/fhs/] 。最 後 將 root filesystem 以 ram disk 的 方 式 來 實 現,並且加入一些會用到的相關模組如 shorewall、iptable等完成一個具VPN功能的微. 此時若有使用防火牆時需要注意設定 iptable,必須將 IP 協定埠 50、51(因 ESP、AH 使用到這個兩個埠)允許通過防火牆否則 IPsec 將無法正常工作。. 型路由器。 在同樣的環境下一樣在兩邊各建立一 本文的 CIPE 套件是使用者程式和核心無 關,因此可以更方便的將它做成 LRP 模組,. VPN-µRouter,並載入 CIPE-LRP 模組,設定 兩邊 CIPE 參數如表 3:. 並將其掛載入 VPN-µRouter 中。而且這裡實作 過程和 IPsec 部份的差別是在於不需要把 VPN 模組加入核心,其餘部份幾乎一樣。 表 2 IPsec.conf 基本設定 conn net-to-net left = 163.23.24.205. #本端路由器 IP 位址. leftsubnet = 192.168.1.0/24. #本端使用者 IP 位址. leftnexthop = %defaultroute. #本端對外路由器設定. leftfirewall = yes. #本端是否有防火牆設定. right = 163.23.24.99. #遠端路由器 IP 位址. rightsubnet = 192.168.2.0/24. #遠端使用者 IP 位址. rightnexthop= %defaultroute. #遠端對外路由器設定. leftfirewall = yes. #遠端是否有防火牆設定 表 3 使用防火牆的 IPsec.conf 基本設定. Router_A. Router_B. #指定使用的 Device Name. #指定使用的 Device Name. DEVICE=cipcb0. DEVICE=cipcb0. #是否自動啟動. #是否自動啟動. ONBOOT=yes. ONBOOT=yes. #使用者是否可以定訂. #使用者是否可以定訂.
(5) USERCTL=no. USERCTL=no. #本地端使用的 UDP port. #本地端使用的 UDP port. MYPORT=6060. MYPORT=6060. #遠端 IP 和 UDP port. #遠端 IP 和 UDP port. PEER=163.23.24.99:6060. PEER=163.23.24.205:6060. #遠端的 virtaul ip. #遠端的 virtaul ip. PTPADDR=10.0.0.1. PTPADDR=10.0.0.2. #本地端的 virtual ip. #本地端的 virtual ip. IPADDR=10.0.0.2. IPADDR=10.0.0.1. 4.2 VPN-µRouter 測試結果與分析. 當完成架置兩個 VPN-µRouter 並設定相關設 定後,使用 Linux 下常用的偵測及抓取封包的. 完成所有相關設定後就可以開始測試. 軟體 ethereal[10]來測試本文的 VPN-µRouter. VPN-µRouter。此處測試重點是 VPN Tunnel. 是 否 正 常 工 作 。 首 先 使 用 ping 工 具 配 合. 技術實作在 LRP 的可行性和兩種不同 VPN. ethereal 針對 IPsec 虛擬接口裝置(即封包未經. Tunnel 架構和 LRP 的 VPNTunnel 架構效能比. IPsec 處理)和對外實體接口(即原本對外網卡. 較,而 VPN 所使用的任何加解密技術因受篇. 裝置 eth0 ; 即已經過 IPsec 處理之封包) 偵測. 幅所限將不再此處討論。[4]. 及抓取封包,結果如圖 4、5 所示。. 圖 4. ethereal 偵測 IPsec 虛擬接口圖. 圖 5. ethereal 偵測實體對外網卡裝置 eth0 圖.
(6) 從圖 4 中可以發現在經過原先 IP 層處理 過後被 IPsec 處理模組取下時是普通的 ICMP 協定封包,再經過 IPsec 處理模組針對封包進 行加密認證後實際送到 eth0 網路裝置時,如 圖 5 所示封包已被保護並經由虛擬安全通道 傳送到遠端的 VPN-µRouter 經由反向處理後 再發送給遠端的目的端,經過這部份的測試證 實 VPN-µRouter 在實行 IPsec 處理模組上已無. 文使用 ESP 協議對封包進行加密和認證,不 論是封包在 IP 層停留時間,或是對原封包大 小的改變都有其變動,對於使用連接導向的封 包類型影響較大,也因此本文才會實作分別以 TCP 和 UDP 隧道傳輸方式的 VPN 機制在本文 架構上比較兩者在路由器上額外處理所花費 的時間和整體效能。所以在下面會針對這部份 做詳細比較。. 問題,然而一般傳送封包大體區分為兩大類,. 接下來我們利用簡單的 socket-ftp 程式搭. 一類是連結導向(connection-oriented)另一類是. 配 ethereal 來測試本文的 VPN-µRouter (採用. 非連結導向(connectionless-oriented),ICMP 是. ESP 協議搭配隧道模式)和一般路由器透過. 屬於非連結導向,即未和遠端進行連結即進行. TCP/UDP 協定傳送資料時間比較如下表 4 如. 封包傳送,而傳送資料時不會局限於 MTU 限. 示。. 制,因此對整體封包輸出效能的影響較小,本 表 4 四種情況下在路由器時傳輸效能比較 VPN 協議. IP 封包. 平均總共. 平均傳輸. 個數. 花費時間. 總訊框數. IPsec. 1594. 88.126s. 107379. 1.21Mbps. CIPE. 1594. 79.126s. 104321. 1.31Mbps. LRP-VPN. 1594. 87.911s. 107285. 1.22Mbps. No-VPN. 1594. 48.697s. 71092. 2.05Mbps. 圖 6. VPN-µRouter 網路結構簡圖. 平均傳輸率.
(7) 在表 4 中很明顯看出未使用 VPN Tunnel 的路由器傳輸速度比使用 VPN Tunnel 的路由 器快將近一倍。那是因為路由器在處理加密封. 下面針對兩種 VPN Tunnel 機制在傳輸效 能上做更多的比較,同樣以前面使用的 socket-ftp 測試如圖 7。 可以從表 5 清楚的看到同樣大小的資料. 裝動作上花掉不少時間,以 IPsec 部份為例,. 在經過不同 VPN 機制路由器所需花掉的時間. 如圖 6。 這個機制將使得封包在 IP 層須經過兩階 段處理,並經由一 2192bits RSA 加密,故增加 了傳輸所需時間。而為何 LRP 的 VPN 架構在 傳輸效能上也優於本文架構是因為它的加解 密步驟比較簡單且演算法複雜度比較低和使. 是以使用 UDP 傳送的 CIPE 機制路由器比較 快,頻寬佔有率也較高,但是在封包丟失率上 明顯使用具有 flow control 機制的 TCP 傳送的 IPsec 比較低,特別是網路擁塞情況越嚴重時 兩者丟失率差更大。. 用的加解密 KEY 比較短,所以傳輸效會比較 好,但是也明顯可以判斷出它的安全性會比較 低,這也是本文提出一個新的架構的原因。. 圖 7. 兩種 VPN Tunnel 實作測試環境. 表 5 兩種不同傳輸模式的 VPN Tunnel 效能比較 VPN 協議. 花費時間. 比率. 丟失率. 平均延遲. IPsec. 102.301 (s). 42%. 7%. 14ns. CIPE. 62.014. 58%. 23%. 8ns. (s). 表 6 IPsec 搭配 CIPE 和單獨 CIPE 的多點傳輸效能比較 VPN 協議. 平均傳輸總訊框數. 平均傳輸率 Latency. CIPE -IPsec. 45890. 94kbps. 34ns. CIPE. 33800. 122kbps. 11ns.
(8) 本文另外一個重點即是提出現有方案中沒有 支援多點傳輸的功能,不過一般多點傳輸只用 於 UDP 上,如果使用在利用 TCP 協定傳輸的 IPsec 似乎比較困難,因此本文藉由把 IPsec 傳送時再套上 CIPE 才傳送出去和只有單 CIPE 來做多點傳輸效能的比較。從表 6 可得知加上 兩次 VPN 封裝的 CIPE –IPsec 組合因為處理解 封裝時多花了一些時間,每次傳送的資料量變 少了,傳送的訊框數增加了,因此傳輸效能比. 可移動式裝置上,如:LS-120、隨身碟等, (2). 嘗試改用更快速的加密演算法並且以更低階 的組合語言碼來實作程式碼,藉此降低封包在 路由器處理的時間, (3).制定 QoS 策略在本文 架構上,能夠在實作安全機制的同時,也能做 到頻寬控管的能力, (4).為了能夠讓本文架構 達到在各種硬體上執行的目的,讓 VPN-µRouter 具有跨平台能力也將是未來一 大挑戰。. 六、參考文獻. 單獨使用 CIPE 來得差,但是能否藉由兩次的 VPN 封裝來提高安全性是另一個有趣的問 題,不過本文並不在此討論其安全方面的問. [1]. Venkateswaran,R.,“Virtual private networks",IEEE Potentials,Volume 20,. 題。. Issue 1,11-15,Feb/Mar(2001). 五、結論. [2]. Gu Guanqun,“Research on tunneling. 本文設計並實作了一個稱之為. techniques in virtual private networks,". VPN-µRouter 具備低成本、維護容易和操作簡. Communication Technology Proceedings,. 單的虛擬私有網路微型路由器架構。同時在本. 2000. WCC - ICCT 2000. International. 文中,確定此架構在真實環境下的可行性,可. Conference on , Volume 1 ,. 以從圖 4、5 中確定原始封包透過 VPN Tunnel. 691 –697,2000.. 機制加密和封裝,以及驗證可以正常傳送到出 去;另外在兩種具備較高靈活性的 VPN 機制. [3]. Global Telecommunications. 的 CIPE 傳輸量會比以 TCP 傳輸的 IPsec 來得. Conference, 1997. GLOBECOM '97.,. 多 , 同 時 CIPE 使 用 的 加 密 演 算 法只 使 用. 處理時就會稍微快一些。但是考量到 UDP 先. IEEE , Volume: 3 ,1948 –1952,1997. [4]. (VPN),"Local Computer Networks, 2000.. 機制等。如圖表 5 的丟失率來看,雖然 IPsec. LCN 2000. Proceedings. 25th Annual. 傳輸較慢,但丟失率明顯低於 CIPE。因此,. IEEE Conference on ,522 –523,2000.. 如何同時維繫兩種機制的優點將會是未來的. 實際的其他方案來做比較,因此這裡只能說本. [5]. LRP , http://www.linuxrouter.org/. [6]. CIPE ,http://sites.inka.de/sites/bigred/deve l/cipe.html. 文架構能夠確實達到多點傳輸的功能,暫時無 法提供不同方案的效能比較。 最後,在考量此架構未來的發展性,未來 的工作包括:(1).把本文架構放入更大容量的. Pena,C.J.C., “Performance evaluation of software virtual private networks. 天上的缺點,包括:不可靠性、沒有流量控制. 工作之一。另外在多點傳輸的方面,由於沒有. Keromytis,A.D.and Ioannidis,j.and Smith,J.M, “Implementing Ipsec,". 的傳輸效能比較上,看到了以 UDP 傳輸模式. 128Bit 長度的 Key,大概是 IPsec 的一半,在. Zhao Aqun and Yuan Yuan and Ji Yi and. [7]. FreeS/WAN , http://www.freeswan.org/. [8]. BusyBox , http://www.busybox.net/. [9]. uClibc , http://www.uclibc.org/. [10] Ethereal , http://www.ethereal.com/.
(9)
相關文件
雙壓力閥在何時才有壓力(訊號)輸出(A) 其中一個輸入口有壓力(訊號)輸出 (B) 經指定的一 個輸入口有壓力(訊號),並且另一個輸入口沒有壓力(訊號) (C)
a 顧客使用信用卡在線上付款時,只要輸入其卡號及有效期
想要設計一個具有兩個輸入G(gate閘控)和 D(data資料)以及一個輸出Q的閘控閂電 路。當G等於1時,在輸入D出現的二進位資料
不過以上所提的內容幾乎都會被現在的智慧型手機取 代,因此我們覺得這些功能能夠運用在一個沒有網路
如圖,空間中所有平行的直線,投影在 image 上面,必會相交於一點(圖中的 v 點),此點即為 Vanishing Point。由同一個平面上的兩組平行線會得到兩個
Wi-Fi 定位即利用無線網路來傳遞信號,根據各種網路參數和算法可以找出使用
Selcuk Candan, ”GMP: Distributed Geographic Multicast Routing in Wireless Sensor Networks,” IEEE International Conference on Distributed Computing Systems,
計算統一設備架構(Compute Unified Device Architecture, CUDA)為 nVIDIA 所 提出的 API,是有別於傳統 OpenGL 以及 DirectX,CUDA 讓使用者能夠透過 C